Forum CMS Made Simple FR
[Résolu] Récupérer les enfants d'une page - Version imprimable

+- Forum CMS Made Simple FR (https://forum.cmsmadesimple.fr)
+-- Forum : Général (https://forum.cmsmadesimple.fr/forum-3.html)
+--- Forum : Modules, Tags (https://forum.cmsmadesimple.fr/forum-14.html)
+--- Sujet : [Résolu] Récupérer les enfants d'une page (/thread-997.html)



[Résolu] Récupérer les enfants d'une page - manix - 17/02/2011

Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS: 1.9.3
#~ Nom de l'hébergeur : ovh
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.9.3
#~ Installed Modules:
#~ * CMSMailer: 2.0.1
#~ * FileManager: 1.1.0
#~ * MenuManager: 1.7.5
#~ * ModuleManager: 1.4
#~ * News: 2.11.1
#~ * nuSOAP: 1.0.2
#~ * Printing: 1.1.2
#~ * Search: 1.6.10
#~ * ThemeManager: 1.1.4
#~ * TinyMCE: 2.8.3
#~ * TemplateExternalizer: 1.2
#~ * CGExtensions: 1.23
#~ * NMS: 2.3.2
#~ * avplayer: 1.3.1
#~ * FormBuilder: 0.6.4
#~ * Gallery: 1.4.4
#~ * CGSimpleSmarty: 1.4.7
#~ * CGGoogleMaps: 2.1.1
#~ * Map: 0.3
#~ Config Information:
#~ * php_memory_limit:
#~ * process_whole_template: false
#~ * output_compression: false
#~ * max_upload_size: 1000000
#~ * default_upload_permission: 664
#~ * url_rewriting: mod_rewrite
#~ * page_extension:
#~ * query_var: page
#~ * image_manipulation_prog: GD
#~ * auto_alias_content: true
#~ * locale: fr_FR.utf8
#~ * default_encoding: utf-8
#~ * admin_encoding: utf-8
#~ * set_names: true
#~ Php Information:
#~ * phpversion: 5.2.5-pl1-gentoo
#~ * md5_function: On (Vrai)
#~ * gd_version: 2
#~ * tempnam_function: On (Vrai)
#~ * magic_quotes_runtime: Off (Faux)
#~ * E_STRICT: 0
#~ * memory_limit: 128M
#~ * max_execution_time: 160
#~ * output_buffering: On
#~ * safe_mode: Off (Faux)
#~ * file_uploads: On (Vrai)
#~ * post_max_size: 150M
#~ * upload_max_filesize: 150M
#~ * session_save_path: /tmp (1777)
#~ * session_use_cookies: On (Vrai)
#~ * xml_function: On (Vrai)
#~ Server Information:
#~ * Server Api: cgi
#~ * Server Db Type: MySQL (mysql)
#~ * Server Db Version: 5.0.44
#~ ----------------------------------------------
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~


Bonjour,

J'ai écrit une petite balise utilisateur :
Code :
global $gCms;
$manager =& $gCms->GetHierarchyManager();
$thisPage = $gCms->variables['page_name'];
$currentNode = &$manager->sureGetNodeByAlias($thisPage);
$nodes = $currentNode->getChildren();
if ($currentNode->hasChildren()) {
  echo '<ul class="menu collapsible">';
  foreach ($nodes as $node) {
     $content = $node->getContent();
     echo '<li><a href="'.$content->Alias().'">'.$content->MenuText().'</a>';
     echo '<div class="acitem panel">'.$content->Show($param = 'content_en').'</div>';
     echo '</li>';
  }
  echo "</ul>";
}

qui me permet de récupérer les enfants d'une page. Mon problème est qu'avec $content->Show, les balises smarty insérées dans le bloc contenu des enfants ne sont pas interprétées. Existe-t-il une solution pour palier ce problème ?

Merci d'avance pour votre aide.

Cordialement.


[Résolu] Récupérer les enfants d'une page - bess - 17/02/2011

regarde du côté de cet exemple : http://wiki.cmsmadesimple.org/index.php/Share_your_tags_here#Breadcrums_for_news_on_new_page



notamment

$smarty = &$gCms->GetSmarty();
$smarty_data = "blablabla {toto} blablabla";
$smarty->_compile_source('temporary template', $smarty_data, $_compiled );


regarde également la doc smarty. En gros il te faut faire compiler le code du template par smarty. Je serais d'ailleurs intéressé de voir comment tu t'y prendras par ce que j'ai un projet qui utilisera la même problématique. Wink


[Résolu] Récupérer les enfants d'une page - manix - 23/02/2011

J'ai trouvé la solution. Ajouter une évaluation de smarty.

Code :
global $gCms;
$smarty =& $gCms->GetSmarty();
require_once $smarty->_get_plugin_filepath('function', 'eval');
$manager =& $gCms->GetHierarchyManager();
$thisPage = $gCms->variables['page_name'];
$currentNode = &$manager->sureGetNodeByAlias($thisPage);
$nodes = $currentNode->getChildren();
if ($currentNode->hasChildren()) {
  echo '<ul class="menu collapsible">';
  foreach ($nodes as $node) {
     $content = $node->getContent();
     echo '<li><a href="'.$content->Alias().'">'.$content->MenuText().'</a>';
     echo '<div class="acitem panel">'.smarty_function_eval(array('var' => $content->Show($param = 'content_en')), $smarty).'</div>';
     echo '</li>';
  }
  echo "</ul>";
}