Forum CMS Made Simple FR

Version complète : [Résolu]Module News : Comptabiliser le total d'items par categorie
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.13
#~ Url du site : localhost
#~ Hébergeur / Soft : wampserver
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.11.13
#~ Installed Modules:
#~ CMSMailer: 5.2.2
#~ CMSPrinting: 1.0.5
#~ FileManager: 1.4.5
#~ MenuManager: 1.8.6
#~ MicroTiny: 1.2.8
#~ ModuleManager: 1.5.8
#~ News: 2.14.4
#~ Search: 1.7.11
#~ ThemeManager: 1.1.8
#~ FormBuilder: 0.8.1.1
#~ CGExtensions: 1.45
#~ CGSmartImage: 1.16.2
#~ CGSimpleSmarty: 1.7.4
#~ CGCalendar: 1.14.6
#~ ListIt2: 1.4.1
#~ ListIt2UpComingEvents: 1.4.1
#~ CGJobMgr: 1.3.4
#~ CGContentUtils: 1.4.3
#~ Gallery: 1.6
#~ JQueryTools: 1.3.4
#~ ListIt2organigramme: 1.4.1
#~ MleCMS: 1.11.4
#~ NMS: 2.7.4
#~ Showtime: 3.4
#~ Config Information:
#~ php_memory_limit:
#~ process_whole_template:
#~ max_upload_size: 64000000
#~ url_rewriting: none
#~ page_extension:
#~ query_var: page
#~ image_manipulation_prog: GD
#~ auto_alias_content: true
#~ locale:
#~ default_encoding: utf-8
#~ admin_encoding: utf-8
#~ set_names: true
#~ Php Information:
#~ phpversion: 5.5.12
#~ md5_function: On (Vrai)
#~ gd_version: 2
#~ tempnam_function: On (Vrai)
#~ magic_quotes_runtime: Off (Faux)
#~ E_STRICT: 0
#~ E_DEPRECATED: 0
#~ memory_limit: 128M
#~ max_execution_time: 120
#~ output_buffering: 4096
#~ safe_mode: Off (Faux)
#~ file_uploads: On (Vrai)
#~ post_max_size: 10M
#~ upload_max_filesize: 64M
#~ session_save_path: c:/wamp/tmp (0777)
#~ session_use_cookies: On (Vrai)
#~ xml_function: On (Vrai)
#~ xmlreader_class: On (Vrai)
#~ Server Information:
#~ Server Api: apache2handler
#~ Server Db Type: MySQL (mysqli)
#~ Server Db Version: 5.6.17
#~ Server Db Grants: Trouvé un privilège "GRANT ALL" qui semble être adapté
#~ Server Time Diff: Aucune différence de date du système de fichiers trouvées
#~ ----------------------------------------------
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~

Bonsoir la communauté,

Encore moi; cette fois avec le module news. J'ai un menu accordéon, et chaque li du menu constitue une liste des articles d'une catégorie.

Alors, je voudrais bien pouvoir afficher le nombre d'items contenus dans chaque catégorie. Voir capture

[Image: 1.png]

et une fois l'effet l'accordeon en action

[Image: 2.png]

Alors je voudrais savoir comment je peux afficher le nombre des articles par catégorie.

Cordialement
Il te suffit d'utiliser la propriété smarty @total du foreach.
Oui Jean, mais je me pose la question, comment vais je l'appeller dans mon code. Je te donne une idée du code de mon accoredeon :


Code :
<ul class="f_toggle_vue">
    <li>
    <h5 class="i_f_th_1">Management</h5>
    <span class="f_nb">[b]n formations[/b]</span>
        <table class="f_table" style="margin-left: 50px;">
        <tbody>
            <tr>
            <td><a href="#">{news category="man" summarytemplate="accordion"}</a></td>
            </tr>
        </tbody>
        </table>
    </li>
</ul>

<ul class="f_toggle_vue">
    <li>
    <h5 class="i_f_th_2">Management de projet</h5>
    <span class="f_nb">[b]n formations[/b]</span>
        <table class="f_table" style="margin-left: 50px;">
        <tbody>
            <tr>
            <td><a href="#">{news category="mdp" summarytemplate="accordion"}</a></td>
            </tr>
        </tbody>
        </table>
    </li>
</ul>

Merci
Bin, dans le summarytemplate="accordion". C'est lui qui est affiché à l'appel de la balise news.
Ton problème est-il résolu ?

Bon, tu souhaites remplacer n
Code :
<span class="f_nb">[b]n formations[/b]</span>
par le nombre dynamique.
Cherche dans ton summaryTemplate le foreach qui boucle sur le nbre d'items et ajoute une ligne :
Code :
{foreach from=$items item=entry}
{assign var=`$entry->category` value=`$entry@total`}
[...]
Et voilà, le nbre des articles d'une catégorie se retrouve assigné à la variable portant son nom :{$man},{$mdp}.
Il te suffit de l'intégrer ainsi :
Code :
<span class="f_nb">[b]{$man} formations[/b]</span>

Maintenant, pourquoi n'améliores-tu pas ton gabarit sommaire pour générer ton code à la volée ? Un peu de logique et le foreach générera automatiquement ton code html pour chacune des catégories. Résultat : ton gabarit page utilisera 1 seule balise {news summarytemplate="tonGabaritCategory" [category="mdp,man,..."]} qui générera tout ce code pour l'ensemble de tes panels.
Ici, tu utiliseras la propriété {$node.count} qui renferme le nbre d'articles de la catégorie, ainsi que {$node.news_category_name} pour le h5.
Tu peux même générer le suffixe de ta classe class="i_f_th_1/2" avec un {counter} : class="i_f_th_{counter}".

On va estimer que tu n'as pas de sous-catégorie pour alléger l'exemple :
Code :
{if $count > 0}
    <ul class="f_toggle_vue">
    {foreach from=$cats item=node}
        <li>
        {if $node.count > 0}
        <h5 class="i_f_th_{counter}">{$node.news_category_name}</h5>
        <span class="f_nb">{$node.count} formation{if $node.count > 1}s{/if}</span>
        <table class="f_table" style="margin-left: 50px;">
            <tbody>
                <tr>
                    <td>
                        <ul>
                        {foreach from=$items item=entry}
                            {if $entry->category == $node.news_category_name}
                                <li><a href="{$entry->moreurl}" title="{$entry->title|cms_escape:htmlall}">{$entry->title|cms_escape}</a></li>
                            {/if}
                        {/foreach}
                        </ul>
                    </td>
                </tr>
            </tbody>
        </table>
        {else}
        <h5 class="i_f_th_{counter}">{$node.news_category_name}</h5>
        <span class="f_nb">0 formation</span>
        {/if}
        </li>
    {/foreach}
    </ul>
{/if}
Merci à sa seigneurie pour son aide. J'avais ébauché quelque chose mais qui n'affichait pas exactement le résultat. Mais avec ton code j'ai testé et c'est sans faute.

Cdt