Recherche rapide : Avancée

 

Vous êtes ici : Accueil > Articles > Configuration de RealURL > Configuration de RealURL (suite)

Configuration de RealURL (suite)

Nous allons rappeler quelques principes sur la réécriture et décrire les sections de configuration de RealURL.

L'encodage est un processus totalement transparent pour l'internaute et à pour principe de transformer une url composée de paramètres en une url plus jolie comme si une page html était appelée physiquement sur le serveur. C'est ce qu'on appelle une url virtuelle.

Ensuite, lorsqu'un internaute clique sur un lien pour accéder à une url virtuelle, cette dernière doit être décodée par le système en paramètres GET.

Pour comprendre le processus de décodage et d'encodage, intéressons-nous au format d'une url.

domain.com/en/chemin/vers/page/aucun-commentaire/actualites/titre-actu/

Une url est composée de différents segments.

preVar => en
page path => /chemin/vers/page/
fixedPostVar => aucun-commentaire
postVar => actualites/titre-actu

preVar est située avant le chemin vers une page, juste après le nom de domaine et il s'agit généralement de la langue pour un site multilangue.
page Path = il s'agit du chemin depuis la page d'accueil du site (root) vers la page en question.
fixedPostVar = ne concerne que quelques pages seulement. Ce sont des paramètres non préfixés et sont localisés après le chemin vers la page.
postVar = au contraire des fixedPostVar, postVar sont des paramètres préfixés.

Ex : tx_ttnews[tt_news]=100 ou /actualite/titre-actu

Ici, nous avons tx_ttnews[tt_news] avec tx_ttnews étant le paramètre préfixé et 100 étant l'id de l'actualité. Avec une url réecrite, l'id 100 est remplacé par le titre de l'actualité.

Voici donc en résumé la syntaxe :
[TYPO3_SITE_URL] [preVars] [pagePath] [fixedPostVars] [postVarSets] [fileName]

La configuration de RealURL est définie dans un tableau en PHP et ce, pour chaque domaine hébergé par votre instance de TYPO3.

Un domaine pointe vers une configuration ou vers un autre domaine. Dans le cas de figure où le domaine actuelle pointe vers un autre domaine, c'est la configuration de ce dernier qui sera prise en compte dans la rêgle de réecriture.

Nous allons étudier en détail les sections suivantes de la configuration : init, preVars, fixedPostVars, postVarSets, pagePath et fileName.

La première ligne du fichier de configuration est chargée d'encoder les urls. Elle ne fait cependant partie d'aucune des sections évoquées ci-dessus mais il me semblait important de donner la signification des premières lignes du fichier PHP.

$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tstemplate.php']['linkData-PostProc'][] = 'EXT:realurl/class.tx_realurl.php:&tx_realurl->encodeSpURL';

Le processus inverse est situé juste en dessous de cette ligne.

$TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['checkAlternativeIdMethods-PostProc'][] = 'EXT:realurl/class.tx_realurl.php:&tx_realurl->decodeSpURL';

Le fichier class.tx_realurl.php semble très important puisqu'il contient une classe tx_realurl charger d'encoder (méthode encodeSpURL) et de décoder (méthode decodeSpURL) les urls.

A- 'init'

La section init concerne la configuration générale de l'extension.
'enableCHashCache' => 1 signifie par exemple que les paramètres de type cHash seront stockés dans une table de cache si ce paramètre est le seul qui reste en GET.

Avec 'enableUrlDecodeCache' => 1, le résultat du processus de décodage d'url est placé dans une table de cache, ce qui est un gain de performance à ne pas négliger. A noter que selon la documentation, les entrées du cache sont vidés automatiquement tous les 24 heures. Vous pouvez réduire cette période en vidant manuellement 'tous les caches'.

Même chose avec'enableUrlEncodeCache' => 1. On active le cache pour améliorer les performances de RealURL.

appendMissingSlash' => 'ifNotFile' ajoute un slash de fin à un répertoire.

Voici la configuration de typo3journal.info

// Init contains the global configuration, cache options...
'init' => array(
        'enableCHashCache' => 1
        , 'enableUrlDecodeCache' => 1
        , 'enableUrlEncodeCache' => 1
        , 'appendMissingSlash' => 'ifNotFile'
        , 'respectSimulateStaticURLs' => 0
        , 'postVarSet_failureMode' => 'redirect_goodUpperDir'
    )

 B - 'preVars' : La section preVars est consacrée aux pré-variables. Les paramètres qui doivent être reçus en GET sont spécifiés dans le tableau preVars. En règle générale, le tableau contient uniquement la variable de langage 'L'.

Exemple :

'preVars' => array(
        array(
            'GETvar' => 'no_cache',
            'valueMap' => array(
                'fr' => 0,
                'en' => 1,
            ),
            'noMatch' => 'bypass',
        )

Ici, nous avons le paramètre de la langue du site. Nous pouvons également rajouté une autre langue comme l'anglais. Le 'noMatch' =>'bypass' signifie que toute autre valeur, par exemple 'de' sera ignorée et on aura par défaut la langue fr.

C - 'pagePath' : section assez importante puisqu'elle va vous permettre d'optimiser un peu plus RealURL en rendant visible la profondeur de votre arborescence. Il est nécessaire de spécifier l'id de la page root même si il semblerait que RealURL est capable de trouver cette page dans les dernières versions de l'extension. Un conseil, spécifiez toujours cette valeur et encore plus si vous hébergez plusieurs domaines.

'pagePath' => array(
        'type'                => 'user'
        , 'userFunc'        => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main'
        , 'spaceCharacter'    => '-'
        , 'languageGetVar'    => 'L'
        , 'rootpage_id'        => 60
        , 'disablePathCache'    => 0
        , 'expireDays'        => 1
        , 'segTitleFieldList'    => 'tx_realurl_pathsegment,alias,nav_title,title'
        , 'excludePageIds'    => null
    )

$TYPO3_CONF_VARS['EXTCONF']['realurl']['www.typo3journal.info'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'];
$TYPO3_CONF_VARS['EXTCONF']['realurl']['www.typo3journal.info']['pagePath']['rootpage_id'] = 60;
$TYPO3_CONF_VARS['EXTCONF']['realurl']['www.typo3journal.info'] = $TYPO3_CONF_VARS['EXTCONF']['realurl']['www.typo3journal.info'];

D- 'fixedPostVars' : la section fixedPostVars est similaire à preVars car il s'agit d'un mapping entre variables postées en GET et des segments d'url mais se situe après le page path. L'usage courant consiste à utiliser
cette section pour une page particulière uniquement ou bien pour un mot clé pour plusieurs pages.

Dans la plupart des cas :

'fixedPostVars'    => array()

Sinon, vous pouvez utiliser ceci, en fonction évidemment de l'extension utilisée :

index.php?uid=35&tx_myext_pi1[no_comments]=1

Soit,

35 => array(
    array(
        'GETvar' => 'tx_extension_pi1[no_comments]',
        'valueMap' => array(
            'no-comments'  => 1
        ),
        'noMatch' => 'bypass',
    )
),

Il peut y avoir plusieurs fixedPostVars sur une même page donc tenez compte de l'ordre dans le tableau de configuration de la section.

E - 'postVarSets' : constitue des séquences de variables passées en GET par les extensions. Contrairement aux fixedPostVars, on retrouve le préfixe des extensions. Realurl va déchiffrer les combinaisons en commençant par le 1er segment, celui-ci constituant dès lors une référence pour la séquence. Dans le tableau de configuration des postVarSets, une postVar pourra contenir plusieurs paramètres en GET.

Prenons l'url suivante :

domain.com/index.php?id=15&tx_extension_pi1[param]=5&tx_extension_pi2[var]=10

Nous devrons encoder l'url de la sorte :

'_DEFAULT' => array(
    'parametre' => array(
        array(
            'GETvar' => 'tx_extension_pi1[param]',
        ),
        array(
            'GETvar' => 'tx_extension_pi2[var]',
        ),
    ),
),

On aura : domain.com/chemin/vers/page/parametre/5/10

Là encore, attention à l'ordre de déclaration des postVars.

Un exemple pour tt_news :

, 'news-browse' => array(
    array(
        'GETvar' => 'tx_ttnews[pointer]'
    )
),

[fileName] : segment situé toujours après le dernier slash dans une url.
En général, on mappe un type de page à un fileName (nom de fichier)

'fileName' => array (
        'index' => array(
            'index.html' => array(                       
                'keyValues' => array(
                    'type' => 0,
                )                                   
            )
            , 'print.html' => array(                       
                'keyValues' => array(
                    'type' => 98,
                )                                   
            )
            , 'rss.xml' => array(                       
                'keyValues' => array(
                    'type' => 100,
                )                                   
            )
            , 'rss091.xml' => array(                       
                'keyValues' => array(
                    'type' => 101,
                )                                   
            )
            , 'rdf.xml' => array(                       
                'keyValues' => array(
                    'type' => 102,
                )                                   
            )
            , 'atom.xml' => array(                       
                'keyValues' => array(
                    'type' => 103,
                )                                   
            )
            , '_DEFAULT' => array(
                'keyValues' => array()
            )
        )
        , 'defaultToHTMLsuffixOnPrev' => 1
    )

Les derniers articles à consulter :