Bonjour,
comment je peux mettre un element different dans une page sans le mettre dans les autres pages
exemple : un slideshow existe seulement dans la page d'accueil

Pourriez-vous m'aider?

merci d'avance

7 réponses


deux fichiers :
view/elements/slishow.ctp qui contient le html de ton slideshow
view/pages/home.ctp dans laquelle tu importe le slideshow : echo $this->element('slideshow.ctp');

Ou alors tu joues le mec brutal et tu mets ton slideshow dans la page home.ctp XD et du coup quand tu vas changer de page, bah...a pu !

(Enfin c'est la même solution qu'Amethyste mais sans la version "echo $this->element('slideshow.ctp');"

@amethyste et christoufe8625 Merci mais avec cette methode le slideshow va sortir dans toutes les pages alors que moi je veux l'afficher seulement dans la page d'acceuil.

Tu as en faite 2 cas possibles.

  • Ton slideshow peut être intégré dans une vue. Dans ce cas tu fais ce que @amethyste et @christoufe8625 ton suggéré :
    elements/slideshow.ctp

    <div>Code du slideshow</div>

views/pages/home.ctp

<?php echo $this->element('slideshow'); ?>
  • Deuxieme cas de figure, ton slideshow fait partie de ton layout mais ce situe en dehors du content. Dans ce cas tu dois créer un block dans lequel tu injectera du code depuis ta vue :
    views/Layouts/default.ctp

    <html>
    <head></head>
    <body>
    <!-- Start Slideshow -->
    <?php echo $this->fetch('module-slideshow'); ?>
    <!-- End slideshow -->
    <?php echo $this->fetch('content'); ?>
    </body>
    </html>

Du coup dans ta page index :
views/pages/home.ctp

<?php $this->start('module-slideshow'); ?>
    <?php echo $this->element('slideshow'); ?>
<?php $this->end(); ?>
<!-- Reste du code HTML de la page d'acceuil -->

@kal-el meme question avec cette methode le slideshow va sortir dans toutes les pages alors que moi je veux l'afficher seulement dans la page d'acceuil.

Bonjour, je ne comprends pas pourquoi , avec les 2 systèmes valables expliqués dans les posts précédents tu dis que l'élément sera présent dans toutes les pages?

As-tu une vue propre à ta page d'accueil (avec en amont son controller, son action)?

Le slideshow peut -il être un élément de la vue ou est-il ailleurs , c'est à dire dans le layout?

En répondant à ces deux questions et choisissant la solution proposée plus haut qui correspond à ton cas, ça ne devrait pas poser de problèmes ou alors on a mal compris le problème.

bien cordialement

Antho

Antho, Mon site contient 5 pages (page 1, page 2, page3, page4, page5) les 5 pages selectionner a partir une table et inclurent le meme layout sur la meme vue (index.php) je voulais savoir si il y a une methode pour mettre des elements differents pour chaque page sans créer un autre controller et sans une autre vue.

exemple: si l'URL => Monsite/pages/page1 je vois le slidshow
si l'URL => Monsite/pages/page2
page3
page4
page5 dans ce cas la je vois pas le slidshow