Forum CMS Made Simple FR

Version complète : [RESOLU] module NEWS : compter le nombre d'articles actifs
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Pages : 1 2
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.4
#~ Url du site : anbadlola.fr
#~ Hébergeur / Soft : ovh
#~ Informations Système :
#~ Cms Version: 1.11.4
#~ Installed Modules:
#~ CMSMailer: 5.2.1
#~ FileManager: 1.4.3
#~ MenuManager: 1.8.5
#~ ModuleManager: 1.5.5
#~ Printing: 1.0.4
#~ ThemeManager: 1.1.7
#~ TinyMCE: 2.9.12
#~ TemplateExternalizer: 2.0.8
#~ FormBuilder: 0.7.3
#~ Captcha: 0.4.5
#~ Gallery: 1.6
#~ Guestbook: 1.4_RC2
#~ GoogleMaps: 0.2.1
#~ CMSPrinting: 1.0.3
#~ MicroTiny: 1.2.5
#~ News: 2.12.10
#~ Search: 1.7.7
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Tout nouveau dans l'utilisation de CMSMS, je cherche vainement l'instruction qui permet de compter le nombre de news actives, toutes catégories confondues.
Une bonne âme pourrait-elle m'indiquer une piste de recherche ?
L'aide du module ne donne pas cette information.
Merci d'avance.
Bonsoir et bienvenue Smile
Smarty est ton ami : http://www.smarty.net/docs/en/language.f...oreach.tpl
{foreach $items as sentry}{if $item@last}{$item@total}{/if}{/foreach}
Bonjour,
la variable smarty $count contient ce nombre.
Tu peux faire un gabarit de sommaire d'article mettre dedans :
Nombre d'articles : {$count}
Si ton gabarit s'appelle "nombre", tu mets la balise :
{news summarytemplate="nombre"}
Bien plus simple, merci Jissey Smile
Tiens, on se croise ces temps-ci Smile
Il est gâté, le boullu, 2 réponses en 10 minutes :lol:
Big Grin gâté ? OUI !
un grand merci pour votre réactivité. Ce qui m'incite à m'investir plus profondément dans CMSMS avec une communauté aussi sympathique Smile
Si je connais assez le php, je ne connais absolument pas smarty. Alors ... y a plus qu'à trouver le mode d'emploi.
En tout cas, je fais un test dès demain et je ne manquerai de vous donner les résultats.
Si tu comprends php, tu verras que smarty en est très proche, c'est juste des raccourcis : http://www.smarty.net/syntax_comparison
merci pour les infos sur smarty. C'est assez compréhensible reste à trouver la "bible" des syntaxes.
Pour ce qui concerne ma question, je ne vois pas bien comment interroger la base de données ou les données du module news dans mon gabarit principal. (colonne gauche du site)
Un truc du genre :
if (count(news->actif)>0)
{
blabla ...
}
else
{
toto ...
}

merci pour vos pistes ...
{capture assign=articlesActifs}{news + les paramètres que tu souhaites}{/capture} // doc capture
{if $articlesActifs} // doc if
<div id="news">
<h2>Actualités</h2>
{news + les paramètres que tu souhaites}
</div>
{else}
toto
{/if}
Fait gaffe, tu insères une seconde fois un gabarit complet (doctype, head...) :
view-source:http://www.guadeloupe-plongee.fr/livre-d-or.html lignes 292+
Et pas que là, sur la page d'accueil également.
Vérifie ton gabarit principal.
Merci Jean pour tes indications.
Mais j'ai quelques difficultés avec ceci :

Jean le Chauve a écrit :{capture assign=articlesActifs}{news + les paramètres que tu souhaites}{/capture}
{if $articlesActifs}

Si un article existe et est valide, la condition est remplie.
Mais s'il n'y a pas d'article à afficher, la condition est toujours vraie.
  • strlen($articlesActifs) = 90 alors qu'il n'y a rien d'affiché ! Donc ... {if $articlesActifs} = true
  • var_dump($articlesActifs) = 1 (???)

Je m'étonne que le module news n'ait pas un simple "$count" ... faut-il écrire une fonction pour cela ?
Jean le Chauve a écrit :Fait gaffe, tu insères une seconde fois un gabarit complet (doctype, head...) :
view-source:http://www.guadeloupe-plongee.fr/livre-d-or.html lignes 292+
Et pas que là, sur la page d'accueil également.
Vérifie ton gabarit principal.

OUI ! merci pour cet avertissement que j'avais constaté.
Par contre, je n'utilise qu'un seul gabarit (fondé du NCleanBlue) et un fichier css
je ne vois pas du tout d'où peuvent venir ces déclarations <head>etc...
TinyMCE peut-il être en cause ?
le code html à chaque fois est toujours avec :
Code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
</head>
<body>

et même en passant en html direct, il est toujours réinséré ...
grrrr.... !
Je t ai indiqué plus haut qu il existe une variable $count.
Oui, Jissey, j'ai exploité cette piste.
Mais le compteur me renvoi toujours une valeur > 0 même si aucune news n'est active.
Exemple : je crée une news dont les dates sont valides pour affichage. Mais je la laisse au statut "ébauche". Elle est considérée comme valide alors que, comme cela doit être, rien n'est affiché. Et l'image de remplacement que je souhaite mettre n'apparait pas.
Si je la passe au statut "publier", elle s'affiche correctement, bien entendu.
C'est pour cela que j'essaie d'exploiter la ppiste fournie par Jean, sans plus de résultat.....
sniffff !
Alors c est un bug!
:/
possible, mais je ne peux me permettre une telle affirmation, mes compétences étant bien insuffisantes pour faire une vérification.
merci quand même.
$count renvoie le nombre de catégories.
De la même manière que mon système de capture qui venait du wiki.org : http://docs.cmsmadesimple.org/modules/core/news.
Voici une solution très simple pour n'afficher les news que s'il y en a au moins une :
Ajouter au tout début du gabarit sommaire ceci :
Code :
[== Indéfini ==]
{foreach from=$items item='entry'}{if $entry@first}{assign var=go value=true}{/if}{break}{/foreach}
{if !$go}<p>Pas de news</p>
{else}
Et n'oubliez pas un {/if} tout à la fin.
C'est une solution élégante pour n'appeler qu'une seule fois le module news Smile sans boucles excessives Smile
oui, effectivement, je m'ai trompé...et pour me rattraper, voici une autre solution plus simple:
{$items|count}
Et là, ça marche, j'ai testé Smile
Pas besoin de boucle :
Code :
[== Indéfini ==]
{if !$items}<p>Pas de news</p>{else}
Il n'y a pas plus simple :lol:
[edit]Pan dans ta tronche Wink[/edit]
Je récapitule :
Code :
{if $items|count > 0}
......
{else}
........
{/if}
Je suis plus court :lol:
Tu crois que c'est une qualité? :p

Mais $entry vient après foreach, ce qui signifie qu'il faut entrer dans la boucle, alors qu'en comptant $items AVANT, on ne rentre pas dans la boucle pour rien.
Tututut , pas de foreach, juste {if !$items} en tout débute du gabarit de sommaire sans passer par un autre gabarit.
Plus court et moins gourmand Cool
[edit]ah, zut m'étais gourré de variable dans le post précédent[/edit] Big Grin
ha! ben tu as écris :
JLC a écrit :{if !$entry}<p>Pas de news</p>{else}
C'est pas pareil...soyons précis je vous prille votre Seigneurerille.
Pages : 1 2