Forum CMS Made Simple FR

Version complète : module news, detailpage differents pour chaque catégories
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.10
#~ Url du site : http://evolution-biologique.org/
#~ Hébergeur / Soft : OVH
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~

Bonjour,

J'utilise le module news dans le gabarit de ma page d'accueil sous la forme d'un sommaire qui liste les articles de différentes catégories

Code :
[== Indéfini ==]
{news number='40' detailpage='travaux-en-cours-detail' summarytemplate='slide_01' lang='fr_FR' category="actualités,Mise à jour du site,Travaux en cours" }

Je désirerai afficher le détail des articles dans des pages différentes suivant la catégorie à laquelle ils appartiennent. Donc changer detailpage en fonction de category. Je sais récupérer la catégorie dans le gabarit du sommaire et la tester mais je ne vois pas comment, ensuite modifier detailpage.

une idée?

Merci
Bonsoir,
dans quel but?
Parce que selon le cas, tu peux passer des variables à la page de détails...il y a peut-être d'autres solutions selon ce que tu veux faire.
Par ex: Si tu passes le nom de la catégorie dans la page de detail, tu peux faire des affichages différents.
Oups, plantage.
Excuse-moi Jissey de me mêler à cette discussion et bien le bonjour à toi Smile.
Il me semble que pour une meilleure accessibilité il serait préférable que tu utilises une page "Actualités" présente dans le menu comme dans ce site. En survolant "Actualités", tu à accès directement aux différentes catégories de news qui t'intéressent. De plus, dans les gabarits comportant une navigation latérale, tu peux également afficher un menu "catégories".
Oui jlc, bien le bonjour !
C'est bien pour ça que ie demandais des précisions.
Mais archeo veut pouvoir à partir de sa balise qui liste différentes catégories pouvoir les renvoyer vers des pages détails différentes.
Je pense que ça peut se régler avec une page de détail qui serait capable de tester la catégorie et afficher de manière différente les détails de l article.
Tiens archeos, ça me fait penser à un truc:
Si dans ton gabarit de sommaire, pour chaque article, tu recréer le lien détail avec la balise news articleid et detailpage (ou quelque chose comme ça, je ne suis pas devant cmsms), je pense que ça devrait rouler.
En partant de ton idée j'ai testé ça dans un gabarit de sommaire très simple:

Code :
[== Indéfini ==]
...
{foreach from=$items item=entry}

{*debut modf detail page*}
{if $entry->category == 'Travaux en cours'}
<div>travaux en cours</div>
{news      detailpage="travaux-en-cours-detail"}
{elseif $entry->category == 'actualités'}
< div> actualités </div>
{news     detailpage="nouvelle"}
{elseif $entry->category == 'Mise à jour du site'}
< div> mise à jour </div>
{news   detailpage="nouvelle"}
{/if}
{*fin modf detail page*}

.....

A chaque boucle foreach le module news est appelé et affiche la totalité des news en perdant le formatage du gabarit. Si l'on répète le nom du gabarit dans les paramètres de news c'est la gabarit de la page qui explose. Je ne sais pas comment récupérer le numéro d'un article.
Bonsoir
De mémoire c'est quelque chose comme :
{news action=détail id=$entry->id... }
Regarde dans l aide du module...
Tu appelles le module news dans son propre gabarit, c'est récursif donc incorrect.
Si je suis la logique de ton code, je placerais simplement dans le gabarit de page :
Code :
<div><h2>travaux en cours</h2>
{news detailpage="travaux-en-cours-detail" category="travaux en cours"}</div>
<div><h2>actualités</h2>
{news detailpage="nouvelle" category="actualités"}</div>
<div><h2>Mise à jour du site</h2>
{news detailpage="mise-a-jour" category="Mise à jour du site"}</div>
Merci Jissey la variable est bien id
Jean le Chauve : oui c'est une solution mais j'aurais alors séparément les différentes catégories mais cela m'a donné une idée.
J'ai créé une sorte de prégabarit qui fait le travail de sélection de detailpage et paramètre news en conséquence avec un gabarit de formatage

Code :
[== Indéfini ==]
<!-- Start News Display Template -->
{if $pagecount > 1}
  <p>
{if $pagenumber > 1}
{$firstpage}&nbsp;{$prevpage}&nbsp;
{/if}
{$pagetext}&nbsp;{$pagenumber}&nbsp;{$oftext}&nbsp;{$pagecount}
{if $pagenumber < $pagecount}
&nbsp;{$nextpage}&nbsp;{$lastpage}
{/if}
</p>
{/if}

{foreach from=$items item=entry}
{* on modifie detailpage en fonction de la catégorie de l'article en paramétrant news*}
{if $entry->category == 'Travaux en cours'}
{news    idlist="{$entry->id}"   summarytemplate="mini" detailpage="travaux-en-cours-detail"}
{elseif $entry->category == 'actualités'}
{news  idlist="{$entry->id}"  summarytemplate="mini" idlist="{$entry->id}"     detailpage="nouvelle"}
{elseif $entry->category == 'Mise à jour du site'}
{news idlist="{$entry->id}"  summarytemplate="mini"  detailpage="nouvelle"}
{/if}
{* fin de la modification *}
{/foreach}
<!-- End News Display Template -->

ça marche avec un gabarit simple ("mini") maintenant il faut que je l'adapte à newsslides. je pense que c'est une question d'équilibrage entre présélection et formatage. En tout cas merci pour votre aide.
Je croyais que ton code était dans le gabarit sommaire.
Plus court puisque tu n'as que 2 detailpage :
Code :
{foreach from=$items item=entry}
{* on assigne "nouvelle" par défaut à une variable *}
{$detailpage="nouvelle"}
{if $entry->category == "Travaux en cours"}{$detailpage="travaux-en-cours-detail"}{/if}
{news idlist=$entry->id summarytemplate="mini" detailpage=$detailpage}
{/foreach}
Jean le Chauve a écrit :Je croyais que ton code était dans le gabarit sommaire.

Ah, OK

J'ai finalisé le travail :

L'appel dans le gabarit de page :

Code :
[== Indéfini ==]
{news number="40" detailpage='nouvelle' summarytemplate='slide_detailpage' lang='fr_FR' category="actualités,Mise à jour du site,Travaux en cours" }

Le gabarit de sélection pour newsslides (qui marche très bien avec la dernière 1.11.10)

Code :
[== Indéfini ==]
<script type="text/javascript" src="modules/NewsSlides/Linking/js/slides.min.jquery.js"></script>

<script type="text/javascript">
{literal}
        $(function(){
            // Set starting slide to 1
            var startSlide = 1;
            // Get slide number if it exists
            if (window.location.hash) {
                startSlide = window.location.hash.replace('#','');
            }
            // Initialize Slides
            $('#slides').slides({
                preload: false,
                preloadImage: 'modules/NewsSlides/Linking/img/loading.gif',
                generatePagination: true,
                play: 5000,
                pause: 500,
                hoverPause: true,
                // Get the starting slide
                start: startSlide,
                animationComplete: function(current){
                    // Set the slide number as a hash
                    window.location.hash = '#' + current;
                    
                  
                    
                }
            });
        });
{/literal}
    </script>
<div id="container">
         {*<div id="example">*}
    <div id="slides">
        <div class="slides_container">
            
{foreach from=$items item=entry}
<div class="slide">

{* on modifie detailpage en fonction de la catégorie de l'article en paramétrant news*}
{$detail_page=""}
{$gabarit_som=""}
{$gabarit_det=""}

{if $entry->category == 'Travaux en cours'}
{$detail_page="travaux-en-cours-detail"}
{$gabarit_som="travaux"}
{$gabarit_det="travaux"}

{elseif $entry->category == 'actualités'}
{$detail_page="actualite"}
{$gabarit_som="slide_detailpage_gabarit1"}
{$gabarit_det="actualites"}

{elseif $entry->category == 'Mise à jour du site'}
{$detail_page="actualite"}
{$gabarit_som="slide_detailpage_gabarit1"}
{$gabarit_det="actualites"}

{/if}

{news idlist="{$entry->id}"  summarytemplate="$gabarit_som"    detailtemplate="$gabarit_det" detailpage="$detail_page"}

{* fin de la modification *}


</div>
{/foreach}
<!-- End News Display Template -->
</div>

            </div>

                   </div>


J'ai utilisé des variables comme me l'a suggéré Jean le Chauve mais gardé plus de elseif pour plus de flexibilité. On peut choisir le gabarit de sommaire, de détail et la detail_page pour chaque catégorie. Le résultat est visible sur la première page de mon site.
JLC a écrit :Tu appelles le module news dans son propre gabarit, c'est récursif donc incorrect.

:lol: :p Cool