Vai al contenuto
  • 0

Friendly url IPS 4.0


Max

Domanda

Ciao ragazzi, lo scrivo qui dato che sul forum ufficiale non riesco ad esprimermi come vorrei dato che l'inglese non è proprio il mio forte.

Esiste la possibilità tramite il file .htaccess o altro per far in modo che cliccando, ad esempio su l'ultima risposta postata, il link anzichè essere forum/topic/titolo discussione diventi forum/titolo sezione/titolo dscussione?

Grazie in anticipo per le eventuali risposte ;)

Link al commento
Condividi su altri siti

9 risposte a questa domanda

Messaggi raccomandati

  • 0
  • Admin

Ciao ragazzi, lo scrivo qui dato che sul forum ufficiale non riesco ad esprimermi come vorrei dato che l'inglese non è proprio il mio forte.

Esiste la possibilità tramite il file .htaccess o altro per far in modo che cliccando, ad esempio su l'ultima risposta postata, il link anzichè essere forum/topic/titolo discussione diventi forum/titolo sezione/titolo dscussione?

Grazie in anticipo per le eventuali risposte ;)

Facendo chiarezza, tu vorresti:

 

da:

a

http://esempio.it/forum/14-titioloohttp://esempio.it/forum/sezione/14-titiolo

/forum/14-titolo sinceramente te lo sconsiglio, comunque con IPS4 puoi modificare i Friendly Url direttamente dall'admin senza agire sul htaccess, basta andare su sistema->Configurazione avanzata

Link al commento
Condividi su altri siti

  • 0

Facendo chiarezza, tu vorresti:

 

da:

a

http://esempio.it/forum/sezione/14-titiolo'>http://esempio.it/forum/14-titioloohttp://esempio.it/forum/sezione/14-titiolo

/forum/14-titolo sinceramente te lo sconsiglio, comunque con IPS4 puoi modificare i Friendly Url direttamente dall'admin senza agire sul htaccess, basta andare su sistema->Configurazione avanzata

L'ideale sarebbe la seconda opzione:

http://esempio.it/forum/sezione/14-titiolo

vedo in admin e vediamo se riesco nel mio intento

Link al commento
Condividi su altri siti

  • 0

applications\forums\sources\Topic\Topic.php

    /**     * Get URL     *     * @param    string|NULL        $action        Action     * @return    \IPS\Http\Url     */    public function url( $action=NULL )    {        $_key    = md5( $action );        if( !isset( $this->_url[ $_key ] ) )        {            $this->_url[ $_key ] = \IPS\Http\Url::internal( "app=forums&module=forums&controller=topic&id={$this->tid}", 'front', 'forums_topic', array( $this->title_seo ) );                    if ( $action )            {                $this->_url[ $_key ] = $this->_url[ $_key ]->setQueryString( 'do', $action );            }        }            return $this->_url[ $_key ];    }
\system\Http\Url.php

	/**	 * Make friendly	 *	 * @param	string|array	$seoTemplate	The key for making this a friendly URL; or a manual FURL definition	 * @param	string|array	$seoTitles		The title(s) needed for the friendly URL	 * @param	bool			$protocol		Protocol (one of the PROTOCOL_* constants)	 * @return	void	 */	public function makeFriendly( $seoTemplate, $seoTitles, $protocol = 0 )	{		-----------------------			$url = preg_replace_callback( '/{(\#|\@|\?)([^}]+?)?}/i', function( $match ) use ( &$parsed, $titleMatch, $seoTitles, $seoTemplate )			{				if ( $match[1] === '?' )				{					if ( !isset( $match[2] ) )					{						$match[2] = $titleMatch++;					}					if ( !isset( $seoTitles[ $match[2] ] ) )					{						return '';					}					return $seoTitles[ $match[2] ];				}				else				{					$toReturn = ( !empty($parsed[ $match[2] ]) ) ? $parsed[ $match[2] ] : '';					unset( $parsed[ $match[2] ] );					return $toReturn;				}			}, $definition['friendly'] );			$qs = $this->queryString;			parse_str( $definition['real'], $ignore );			foreach ( array_keys( $ignore ) as $i )			{				unset( $qs[ $i ] );			}						$trailingSlash = mb_strpos( $definition['friendly'], '.' ) !== FALSE ? '' : '/';			if ( \IPS\Settings::i()->htaccess_mod_rewrite )			{				$this->setUrl( rtrim( static::baseUrl( $protocol ) . $url, '/' ) . ( $qs ? '/?' . http_build_query( $qs, '', '&' ) : $trailingSlash ) );			}			else			{				$this->setUrl( static::baseUrl( $protocol ) . 'index.php?/' . $url . ( $qs ? '/&' . http_build_query( $qs, '', '&' ) : ( $url ? $trailingSlash : '' ) ) );			}		}				/* Set it */		$this->isFriendly = TRUE;	}
non è possibile, perchè in molte variabili viene usato: applications\forums\sources\Forum\Forum.php

\IPS\Http\Url::internal( "app=forums&module=forums&controller=topic&id={$this->last_id}", 'front', 'forums_topic', array( $this->seo_last_title ) )
senza che passi la variabile del nome della sezione... mi spiace, dovrebbe essere fatto tramite una hook per tale funzione risalendo al forum_name del topic e configurarlo nell'url.

 

EDIT:

 

se vuoi link come:

http://localhost/ips4/index.php?/a-test-forum/t/1-welcome/
devi fare una modifica nella funzione url() del file applications\forums\sources\Topic\Topic.php

cerca quindi:$this->_url[ $_key ] = \IPS\Http\Url::internal( "app=forums&module=forums&controller=topic&id={$this->tid}", 'front', 'forums_topic', array( $this->title_seo ) );e sostituisci con:$this->_url[ $_key ] = \IPS\Http\Url::internal( "app=forums&module=forums&controller=topic&id={$this->tid}&forum_name={$this->container()->name_seo}", 'front', 'forums_topic', array( $this->title_seo ) );
tiJdea9.png

poi occorre configurare il furl nel lato admin esempio proposto:

UYWOaLf.png

{@forum_name} è la variabile che include il nome della sezione parente...

 

questo però non l'ho testato ancora bene... perchè alcuni topic (configurazione iniziale per esempio) non dovrebbero mostrare il nome della sezione/forum che la contiene.

insomma bisogna stare attenti, e testare il tutto ancora.

  • Like 1
Link al commento
Condividi su altri siti

  • 0

Ok...grazie per la tua risposta ;)

ho modificato qua sopra, bisogna ottenere conferme dagli sviluppatori di ips... io non mi assumo la responsabilità di eventuali guasti :(
Link al commento
Condividi su altri siti

  • 0

Edit:

Funziona solo in parte...mi spiego, se clicco per andare dalla pagina principale del forum all'ultimo messaggio scritto allora mi da errore 404 not found.

Invece se seguo la prassi e cioè cliccando sulla sezione e successivamente sul post allora tutto ok.

Link al commento
Condividi su altri siti

  • 0

va fatta un altra modifica ovunque venga usato il template "forums_topic"

			if( $this->last_post )			{				$result = array(					'author'		=> \IPS\Member::load( $this->last_poster_id ),					'topic_url'		=> \IPS\Http\Url::internal( "app=forums&module=forums&controller=topic&id={$this->last_id}", 'front', 'forums_topic', array( $this->seo_last_title ) ),					'topic_title'	=> $this->last_title,					'date'			=> $this->last_post				);			}

questo è presente nel file \applications\forums\sources\Forum\Forum.phpGE3hP4e.png

Link al commento
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un membro per lasciare un commento

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora
  • Chi sta navigando   0 utenti

    • Nessun utente registrato visualizza questa pagina.
×
×
  • Crea Nuovo...

Informazioni importanti

Abbiamo inserito dei cookies nel tuo dispositivo per aiutarti a migliorare la tua esperienza su questo sito. Puoi modificare le impostazioni dei cookie, altrimenti puoi accettarli cliccando su continua. to insert a cookie message.