[Résolu] 'non interprétation' de la balise {cms_self_link}

Support en français pour CMS Made Simple.

Moderator: jce76350

Locked
User avatar
brambaud
Forum Members
Forum Members
Posts: 11
Joined: Mon Apr 18, 2011 8:38 am

[Résolu] 'non interprétation' de la balise {cms_self_link}

Post by brambaud »

Bonjour à tous.

Ma question concerne la 'non interprétation' de la balise {cms_self_link} dans un cas d'utilisation particulier.

Etat des lieux pour comprendre ce que je cherche à faire :

J'ai une page principale 'Lexique' qui affiche un ensemble de mots et leur définition.
Ces termes sont définis dans des pages séparées 'fille' de la page principale 'lexique'.
Il est donc possible de consulter individuellement chaque terme et sa définition ou des voir l'ensemble de ceux-ci via la page 'lexique'.

Le contenu de la page 'lexique' est donc automatiquement généré en fonction des pages 'filles' qui sont placées en sous arborescence.

Pour ce faire, j'utilise un UDT maison relativement classique :

Code: Select all

global $gCms;
$manager =& $gCms->GetHierarchyManager();
$thisPage = $gCms->variables['page_name'];
$currentNode = &$manager->sureGetNodeByAlias($thisPage);

$nodes = $currentNode->getChildren();

if ($currentNode->hasChildren()) {
  foreach ($nodes as $node) {
    $content= $node->getContent();
    echo "<h2>.$content->MenuText()."</h2>";
    echo "<p>".$content->GetPropertyValue('content_en')."</p>";
  }
}
Le code fait le job. Je l'exécute dans la page 'lexique' et ceci me permet d'afficher l'ensemble des contenus des pages filles (le titre étant le texte du menu ($content->MenuText()) et la définition le contenu ($content->GetPropertyValue('content_en')).

Le problème :

J'utilise dans les définitions des liens du type {cms_self_link} renvoyant vers d'autres termes du lexique ou d'autres pages du site.

Lorsque je consulte un terme particulier via son url, la balise {cms_self_link} est bien interprêtée côté serveur et les liens générés sont valides.

MAIS : lorsque je consulte via la page principale 'lexique', les définitions affichent des liens contenant en toute lettre '{cms_self_link}'. La balise n'a pas été interprétée côté serveur et est considérées comme du contenu classique.

Démonstration live du problème :

La page qui affiche tous les lexiques :
http://www.uncorps7merveilles.fr/lexique-elementaire/
Le lien 'énigme' situé dans le dernier paragraphe de la première définiton du terme 'CORPS (UN)' comporte {cms_selflink href='enigme'}

Par contre si j'accède directement à la page définissant 'CORPS (UN)', le même lien est correct, la balise {cms_selflink href='enigme'} étant bien traduite.
http://www.uncorps7merveilles.fr/lexiqu ... /corps-un/


Ma question : savez-vous comment forcer l'interprétation côté serveur d'une balise du type {cms_self_link} ?

Merci pour votre aide.
Cordialement,
Benoit

Informations d'Installation du CMS :
Version du CMS : 1.9.4.1
Last edited by brambaud on Mon Apr 18, 2011 11:45 am, edited 1 time in total.
User avatar
brambaud
Forum Members
Forum Members
Posts: 11
Joined: Mon Apr 18, 2011 8:38 am

Re: 'non interprétation' de la balise {cms_self_link}

Post by brambaud »

A force de mener des tests et parcourir les forums (rubrique Tips&Tricks), je suis finalement tombé sur ce post :
http://forum.cmsmadesimple.org/viewtopi ... =4&t=39572

La solution est apparue :

Lorsque l'on récupère du contenu contenant des balises {smarty} directement depuis la base et que l'on veut que ces balises soient exécutées dans un UDT, la solution est donc de passer par les ordres smarty suivant.

Code: Select all

$smarty->_compile_source('temporary template', $content->GetPropertyValue('content_en'), $_compiled );
$smarty->_eval('?>' . $_compiled);
Et de me rendre compte que la réponse était sur le wiki...
http://wiki.cmsmadesimple.org/index.php ... lis.C3.A9e :o

Je clôture donc mon post.
+++
Benoit
Locked

Return to “French - Français”