Forum CMS Made Simple FR
Afficher toute les pages active{content} les une en dessous des autres - 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 : Afficher toute les pages active{content} les une en dessous des autres (/thread-2488.html)



Afficher toute les pages active{content} les une en dessous des autres - illimite - 05/01/2013

Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: -1.11.2.1
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~


Bonjour,
voici mon souci :
je suis occuper a faire un sildes avec les pages "content"

je devais afficher toutes les pages simultanément les une en dessous des autres
ex:

<ul>

<li id="alias_page_1">
{content page_1}
</li>
<li id="alias_page_2">
{content page_2}
</li>
<li id="alias_page_3">
{content page_3}
</li>
...
</ul>

j'ai pas trouvé d'autre solution que de faire une requete SQL ( ça fonctionne, mais ca interprète pas les {balise} qui sont dans le contenu (logique car ce n'est pas traiter par "smarty" car il prend directement dans la db)
pouvez m'aide comment traite le donne récupéré de la db


merci de votre aide je galère depuis 2 jours

donc voici le code


Code :
[== PHP ==]
// Appel de la variable global pour pouvoir l'utiliser dans l'UDT
$db = cmsms()->GetDb();

// Création et éxécution de la requête
$q = "SELECT cms_content.content_id,cms_content.content_alias,cms_content_props.content_id,cms_content_props.prop_name,cms_content_props.content
FROM  cms_content,cms_content_props
WHERE cms_content.content_id = cms_content_props.content_id AND
cms_content_props.prop_name = 'content_en'";
$dbresult = $db->Execute( $q );

// Si problème avec bdd, afficher l'erreur
if( !$dbresult ){ echo 'erreur bdd : '. $db->ErrorMsg()."<br/>";}

// Parcourir les résultats et afficher
while ($dbresult && $row = $dbresult->FetchRow()){
    echo '
<li id="'.$row['content_alias'].'">
   <div class="box">
      <div class="containerContent">
<div class="col1">
      '.$row['content'].'
</div>
      </div>
    </div>
</li>';
}



Afficher toute les pages active{content} les une en dessous des autres - jissey - 06/01/2013

Bonjour et bienvenue,
en dehors des réponses techniques que l'on pourrait t'apporter ici, je pense que tu fais une mauvaise utilisation de CMSMS ou du moins de ces pages.
C'est comme si tu achetais une moto pour en faire une voiture...
Pour faire un slide avec du contenu, il faut utiliser les news...garde les pages pour du contenu "statique"!


Afficher toute les pages active{content} les une en dessous des autres - jce76350 - 06/01/2013

Citation :#~ Version du CMS: -1.11.2.1

Nouvelle version CMSMS 1.11.4 - Fernandina
Attention sont supportées uniquement les versions 1.11.3 et 1.11.4 sur le forum FR
Aucune réponse ne sera faite pour des versions inférieures


Afficher toute les pages active{content} les une en dessous des autres - heriquet - 11/01/2013

Si vraiment tu n'avais d'autres choix que de procéder comme cela, tu peux toujours utiliser l'API et le HierarchyManager qui te donneras accès aux pages. J'avais fait cela pour un pavé présentant les pages d'un sous-menu.

Par contre, passe par un bloc de contenu global, qui est statique, afin de ne pas produire un monstre.

Comment faire ? Crée une UDT que tu appelles via le gestionnaire d'évènements. (Evènement "ContentEditPost")

Je te laisse analyser ce code et l'adapter à tes besoins.

Code :
[== Indéfini ==]
$gCms = cmsms();

$gcbops = $gCms->GetGlobalContentOperations();

$the_blob = $gcbops->LoadHtmlBlobById(5);


$contentops = $gCms->GetContentOperations();

$hm = $gCms->GetHierarchyManager();
$parent = $hm->sureGetNodeByAlias(57);
$config=cmsms()->GetConfig();
$path_images=$config['root_url'].'/uploads/images/nos-activites/';
$result='';
if( $parent )
{
    // get the children.
    $children = $parent->GetChildren(1);
    if( is_array($children) && count($children) )
    {
        foreach( $children as $onechild )
        {
            $obj = $onechild->GetContent();
            if( is_object($obj) && $obj->Active())
            {
                // loads page content
                $cntnt=strip_tags($obj->GetPropertyValue('content_en'));
                $result.='<div class="home-block">
                                <h2>'.$obj->MenuText().'</h2>
                                <p>'.substr($cntnt, 0, 150).'...<br/>
                                    <a href="'.$obj->GetURL().'">Lire plus</a>
                                </p>
                                <img src="'.$path_images.$obj->Alias().'.png" width="88" height="88"/>
                            </div>';
            }
        }
    }
}
$the_blob->content = $result;

$the_blob->save();