Boucler sur le contenu des pages statiques

aruhunoaruhuno Member
janvier 2015 modifié dans Entraide
Bonjour à tous,

Après avoir lu mainte et mainte fois la documentation et essayer des trucs, je n'ai pas trouvé le moyen de faire ce que je voulais.

Mon idée est d'afficher le titre et le contenu de toutes les pages statiques dans l'ordre de l'admin via une boucle.
En gros, faire ce qu'on fait déjà avec les articles, mais avec les pages statiques.

Merci d'avance de m'avoir lu et d'essayer de m'aider.

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour

    Tu veux afficher tout ça dans une page statique ?

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • aruhunoaruhuno Member
    janvier 2015 modifié
    Stéphane a écrit:
    Bonjour

    Tu veux afficher tout ça dans une page statique ?
    En fait je suis en train de créer un thème "onepage" donc il faudrait que ce soit sur la page d'accueil (home.php de préférence je pense).
  • StéphaneStéphane Member, Former PluXml Project Manager
    Y a plusieurs façon de faire. En voilà une:

    Créer une page statique et copie-colle dedans le code ci-dessous
    Tu auras la liste de toutes les pages statiques et leur contenu sur cette page

    Comme tu veux un site onepage, à faire en +
    1) pour la page créée précédemment, règle les options: page d'accueil = coché, active = oui, menu = masquer
    2) dupliquer le fichier static.php dans le dossier de ton thème en static-home.php
    3) édite le fichier static-home.php pour supprimer l'affichage du titre de la page (partie avec <?php $plxShow->staticTitle(); ?>)
    4) va dans les options de la page statique qui sert de page d'accueil et dans le déroulant template sélectionne "static-home.php" , ou donne lui l'apparence de la home que tu veux

    Voilà ça devrait le faire. Cette solution permet d'avoir ce que tu veux tout en gardant la structure d'un pluxml sans trop de modifs

    Dès que tu auras beaucoup de page statique à afficher, ça peut devenir lourd car il n'y a pas de pagination
    <?php
    $plxMotor = plxMotor::getInstance();
    
    # format d'affichage
    $format = '
    <article class="article static" role="article" id="#static_id">
    	<header>
    		<h3><a href="#static_url" title="#static_name">#static_name</a></h3>
    	</header>
    	<section>
    		#static_content
    	</section>
    </article>
    ';
    
    # boucle de traitement de la liste des pages statiques
    foreach($plxMotor->aStats as $k=>$v) {
    	# La page est bien active et à afficher et différente de la page statique en cours de visu
    	if($k!=$plxMotor->cible AND $v['active'] AND $v['readable']) { 
    		$output = $format;
    		$stat = str_replace('#static_id','static-'.intval($k),$output);
    		if($v['url'][0]=='?') # url interne commençant par ?
    			$stat = str_replace('#static_url',$plxMotor->urlRewrite($v['url']),$stat);
    		elseif(plxUtils::checkSite($v['url'],false)) # url externe en http ou autre
    			$stat = str_replace('#static_url',$v['url'],$stat);
    		else # url page statique
    			$stat = str_replace('#static_url',$plxMotor->urlRewrite('?static'.intval($k).'/'.$v['url']),$stat);
    		$stat = str_replace('#static_name',plxUtils::strCheck($v['name']),$stat);
    		$file = PLX_ROOT.$plxMotor->aConf['racine_statiques'].$k.'.'.$v['url'].'.php';
    		ob_start();
    		require $file;
    		$content = ob_get_clean();
    		$stat = str_replace('#static_content', $content, $stat);
    		echo $stat;
    	}
    }
    ?>
    

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • aruhunoaruhuno Member
    janvier 2015 modifié
    Merci Stéphane,

    J'ai dû louper quelque chose par contre, parce que :
    1421933671.png

    Merci d'avance pour l'aide fournie !
  • Ça ressemble à des balises php mal fermées...
  • Jerry Wham a écrit:
    Ça ressemble à des balises php mal fermées...
    Oui, en fait je crois que le soucis vient de cette étape :
    Stéphane a écrit:
    Créer une page statique et copie-colle dedans le code ci-dessous

    Ça veut bien dire de mettre du PHP dans une page statique depuis l'interface d'administration ?
    Si oui, j'utilise CKeditor, donc je pense que ça peut coincer, non ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    @aruhuno: si tu as fait le copier coller à partir de ckeditor alors oui cela vient de ça. ckeditor convertit les caractères en entités html.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Stéphane a écrit:
    @aruhuno: si tu as fait le copier coller à partir de ckeditor alors oui cela vient de ça. ckeditor convertit les caractères en entités html.
    Effectivement, ça fonctionne beaucoup mieux !

    Merci !
  • aruhunoaruhuno Member
    janvier 2015 modifié
    Bonjour,

    Je ré-ouvre puisqu'avec cette modification, dont j'ai également besoin évidemment, la petite astuce fournie par Stéphane ne fonctionne plus.

    Merci d'avance pour l'aide apportée.

    edit 29/01/2015 8h37 : en activant les erreurs, j'ai ceci comme message :
    Parse error: syntax error, unexpected 'public' (T_PUBLIC) in /var/www/core/lib/class.plx.show.php on line 1329
    
Connectez-vous ou Inscrivez-vous pour répondre.