Include en deux morceaux

KalistaKalista Member
octobre 2017 modifié dans Entraide
Bonjour,

Un client m'a demandé d'insérer une notion de hasard dans le layout de son site et je suis en train de réfléchir à comment implémenter ça correctement.

L'objectif est de générer six paires de bouts de code ressemblant à ça :
[== HTML ==]
<div id="bouton1">CHAPO 1</div>

(...)

<div id="contenu1">TEXTE 1</div>

(CHAPO 1 et TEXTE 1 venant donc d'une page, choisie au hasard parmi un réservoir.)

La difficulté étant que du coup il s'agirait de lire un bout de staticInclude pour le premier membre de chaque paire, puis de lire la suite du staticInclude plus tard dans la page. Est-ce qu'il y a moyen de segmenter une page statique au moment de l'include pour avoir ce genre d'effet ?

Edit : à la réflexion ce serait sans doute plus simple de bosser avec des articles que des pages statiques, mais en fait j'ai quand même le problème de pouvoir appeler des morceaux d'articles à la demande. Ce que je voudrais faire, reformulé :
[== PHP ==]
<?php art1 = rand(0, 10);
art2 = rand(0, 10; // Insérer ici un check pour éviter les répétitions (pas essentiel dans l'immédiat). ?>

<div id="bouton1"><?php plxShow(art1)->artChapo ?></div>
<div id="bouton2"><?php plxShow(art2)->artChapo ?></div>

(...)

<div id="texte1"><?php plxShow(art1)->artContent ?></div>
<div id="texte2"><?php plxShow(art2)->artContent ?></div>

La difficulté étant que plxShow ne me semble pas "fait" pour se balader entre plusieurs articles différents à la fois en utilisant des id pour les distinguer (mais plutôt fait pour afficher un bloc correspondant à un article à la fois). Je suppose que j'ai loupé un coche ?

Réponses

  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Les pages statiques n'ont pas de champ chapô.

    Par contre, tu peux peut-être le remplacer par le champ meta-description.
    En théorie, il ne devrait contenir que du texte. Mais bon ...
    L'intérêt est que le champ meta-description de toutes les pages statiques est contenu dans un seul fichier ce qui évite d'aller consulter chaque page statique.

    Sinon tu peux faire cela avec les articles. Il suffit de les affecter à une catégorie qui n'est jamais affiché.
  • KalistaKalista Member
    octobre 2017 modifié
    ... Hmm. Je ne suis pas certaine de m'être bien exprimée mais je note l'astuce du champ meta-description (on est d'accord que du coup on parle du champ global du site, là ?).

    Et sinon en fait j'ai fini par trouver une manière de faire en utilisant des variables. Dans les pages statiques susceptibles d'être sélectionnées par le "jet de dé", il suffit d'override des variables définies à l'extérieur (donc, avant le staticInclude) et de les lire dans un deuxième temps, à l'extérieur toujours.

    Donc par exemple :
    [== PHP ==]
    // Dans home.php :
    
    <?php $a = ""; ?>
    <?php $plxShow->staticInclude(1); ?>
    <?php echo $a; ?>
    
    // Dans la page statique d'ID 1 :
    
    <?php global $a;
    $a= "<h1>Ceci est un test</h1>"; ?>
    
    // $a vaut "<h1>Ceci est un test</h1>" dans le scope de home.php.
    

    La variable $a s'affichera correctement dans home.php parce qu'elle a été définie globalement (dans home.php) puis re-définie globalement (dans la statique). Et évidemment il est possible de définir autant de variables que nécessaire, et de les invoquer dans l'ordre voulu, ce qui règle complètement le problème.

    Merci d'avoir tenté de m'aider ! (Au final c'est juste mon manque d'habitude des scopes en PHP qui m'a bloquée.)
Connectez-vous ou Inscrivez-vous pour répondre.