module news, detailpage differents pour chaque catégories -
archeo - 18/06/2014
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
module news, detailpage differents pour chaque catégories -
jissey - 19/06/2014
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.
module news, detailpage differents pour chaque catégories -
Jean le Chauve - 19/06/2014
Oups, plantage.
module news, detailpage differents pour chaque catégories -
Jean le Chauve - 19/06/2014
Excuse-moi Jissey de me mêler à cette discussion et bien le bonjour à toi
.
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".
module news, detailpage differents pour chaque catégories -
jissey - 19/06/2014
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.
module news, detailpage differents pour chaque catégories -
archeo - 20/06/2014
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.
module news, detailpage differents pour chaque catégories -
jissey - 20/06/2014
Bonsoir
De mémoire c'est quelque chose comme :
{news action=détail id=$entry->id... }
Regarde dans l aide du module...
module news, detailpage differents pour chaque catégories -
Jean le Chauve - 20/06/2014
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>
module news, detailpage differents pour chaque catégories -
archeo - 20/06/2014
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} {$prevpage}
{/if}
{$pagetext} {$pagenumber} {$oftext} {$pagecount}
{if $pagenumber < $pagecount}
{$nextpage} {$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.
module news, detailpage differents pour chaque catégories -
Jean le Chauve - 20/06/2014
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}
module news, detailpage differents pour chaque catégories -
archeo - 20/06/2014
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.
module news, detailpage differents pour chaque catégories -
jissey - 21/06/2014
JLC a écrit :Tu appelles le module news dans son propre gabarit, c'est récursif donc incorrect.
:lol: :p