Forum CMS Made Simple FR

Version complète : [Résolu] Récupérer les enfants d'une page
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
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.
regarde du côté de cet exemple : http://wiki.cmsmadesimple.org/index.php/...n_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
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>";
}