Forum CMS Made Simple FR
Afficher le nom de la catégorie parent - Version imprimable

+- Forum CMS Made Simple FR (https://forum.cmsmadesimple.fr)
+-- Forum : Général (https://forum.cmsmadesimple.fr/forum-3.html)
+--- Forum : Modules, Tags (https://forum.cmsmadesimple.fr/forum-14.html)
+--- Sujet : Afficher le nom de la catégorie parent (/thread-3466.html)



Afficher le nom de la catégorie parent - sechanbask - 24/03/2015

Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.12
#~ Url du site : atenbet.fr
#~ Hébergeur / Soft : OVH
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.11.12
#~ Installed Modules:
#~ CMSMailer: 5.2.2
#~ CMSPrinting: 1.0.5
#~ FileManager: 1.4.5
#~ MenuManager: 1.8.6
#~ TinyMCE: 2.9.12
#~ ModuleManager: 1.5.8
#~ News: 2.14.4
#~ Search: 1.7.11
#~ ThemeManager: 1.1.8
#~ CGFavs: 1.1
#~ CGExtensions: 1.45
#~ ExtendedTools: 1.3.3
#~ SEOTools2: 1.2.1
#~ Captcha: 0.5.2
#~ FormBuilder: 0.8.1.1
#~ CGJobMgr: 1.2.15
#~ NMS: 2.7.4
#~ NMSTrack: 1.0
#~ CGSimpleSmarty: 1.7.4
#~ Config Information:
#~ php_memory_limit:
#~ process_whole_template:
#~ max_upload_size: 64000000
#~ url_rewriting: mod_rewrite
#~ page_extension: .html
#~ query_var: page
#~ image_manipulation_prog: GD
#~ auto_alias_content: true
#~ locale: fr_FR.utf8
#~ default_encoding: utf-8
#~ admin_encoding: utf-8
#~ set_names: true
#~ Php Information:
#~ phpversion: 5.4.38
#~ md5_function: On (Vrai)
#~ gd_version: 2
#~ tempnam_function: On (Vrai)
#~ magic_quotes_runtime: Off (Faux)
#~ E_STRICT: 2048
#~ E_DEPRECATED: 8192
#~ memory_limit: 128M
#~ max_execution_time: 120
#~ output_buffering: 4096
#~ safe_mode: Off (Faux)
#~ file_uploads: On (Vrai)
#~ post_max_size: 64M
#~ upload_max_filesize: 64M
#~ session_save_path: /tmp (0700)
#~ session_use_cookies: On (Vrai)
#~ xml_function: On (Vrai)
#~ xmlreader_class: On (Vrai)
#~ Server Information:
#~ Server Api: cgi-fcgi
#~ Server Db Type: MySQL (mysql)
#~ Server Db Version: 5.1.73
#~ Server Db Grants: Impossible de trouver un privilège "GRANT ALL". Cela peut signifier que vous pourriez avoir des problèmes pour installer ou retirer des modules, ou encore l 'ajout et la suppression d'éléments, y compris les pages.
#~ Server Time Diff: Aucune différence de date du système de fichiers trouvées
#~ ----------------------------------------------
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



J'utilise les news pour y déposer nos références de chantier. J'ai créer une catégorie "EXECUTION" et sa sous catégorie "video" (pour les news où nous avons fait une video).

Je souhaite faire apparaitre le nom de la catégorie "EXECUTION" mais pas la sous catégorie "video"

pour l'instant j'utilise

Code :
[== Indéfini ==]
{$entry->category}

mais je ne vois pas comment retrouve la catégorie parent.


exemple ici :
http://www.atenbet.fr/references_execution.html


Afficher le nom de la catégorie parent - Jean le Chauve - 24/03/2015

Je n'ai rien compris à ta demande, merci d'être plus explicite.


Afficher le nom de la catégorie parent - sechanbask - 24/03/2015

Je ne souhaite pas afficher la sous catégorie mais toujours la catégorie parent de mes articles.

J'ai créé une catégorie EXECUTION et la sous catégorie video

EXECUTION | video


Je souhaite pouvoir afficher "catégorie : EXECUTION", pas "catégorie : video", je n'ai créé la sous catégorie video pour extraire facilement non références avec des vidéos...


Afficher le nom de la catégorie parent - Jean le Chauve - 24/03/2015

Citation :(optional) category="category" - Affiche les articles de cette catégorie seulement. Utiliser * pour afficher les sous-catégories. Des catégories multiples peuvent être affichées en les séparant par une virgule. Laisser ce paramètre vide affichera tous les articles.
Comme écrit dans l'aide du module, tu peux utiliser le paramètre category dans ta balise d'appel : {news category="EXECUTION"}


Afficher le nom de la catégorie parent - sechanbask - 24/03/2015

Je ne souhaite pas afficher les news de la catégorie EXECUTION, mais afficher le texte de ma catégorie principale "EXECUTION" même si ma news est dans la catégorie "EXECUTION | video"


Afficher le nom de la catégorie parent - Jean le Chauve - 24/03/2015

Ce n'est toujours pas clair ! Dans quel gabarit ? Sommaire ou détail ? A quel endroit ?
Donne-moi ton gabarit.


Afficher le nom de la catégorie parent - sechanbask - 24/03/2015

Dans le gabarit sommaire article :

Code :
[== Indéfini ==]
{foreach from=$items item=entry}
<div class="NewsSummary">
{if $entry->postdate}
{$entry->category}
    <p>  </br></p>
<div class="NewsSummaryPostdate">
        {$entry->postdate|date_format:"%B %Y"}
                
    </div>
{/if}

<div class="NewsSummaryLink">
<a href="{$entry->moreurl}" title="{$entry->title|cms_escape:htmlall}">{$entry->title|cms_escape}</a>
</div>



{if isset($entry->fields)}
  {foreach from=$entry->fields item='field'}
     <div class="NewsSummaryField">



        {if $field->name == 'Client'}
             Client&nbsp;:&nbsp;{eval var=$field->displayvalue}
        {/if}

<p>  </p>
        {if $field->name == 'visuel'}
            
<a href="{$entry->moreurl}" title="{$entry->title|cms_escape:htmlall}">{eval var=$field->displayvalue}</a>

        {/if}





     </div>


  {/foreach}
{/if}

</div>
{/foreach}

<p>  </br></p>
{global_content name='refyoutube'}

<p>  </br></p>
{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}
<!-- End News Display Template -->

C'est pour le sidebar :

http://www.atenbet.fr/references_execution.html


Afficher le nom de la catégorie parent - Jean le Chauve - 24/03/2015

C'est ceci ?
Code :
{if $entry->postdate}
{$entry->category}
Si oui, un petit if :
Code :
{if $entry->category =="video"}EXECUTION{else}{$entry->category}{/if}

Autrement, tu peux remarquer qu'il existe une propriété "long_name" qui reprend la catégorie mère et la sous-catégorie sous cette forme : catMère | sousCat. Un explode() nous pemet de récupérer la catégorie mère :
Code :
{foreach from=$items item=entry}
<div class="NewsSummary">
{if $entry->postdate}
{foreach from=$cats item=node}
{assign var=firstCat value=" | "|explode:$node.long_name}{$firstCat[0]}{/foreach}
    <p>  </br></p>
[...]



Afficher le nom de la catégorie parent - sechanbask - 25/03/2015

J'ai compris comment marché ta fonction, mais au lieu de me sortir LA catégorie mère de cette actualité, elle me sort les toutes catégories mère que j'ai créées



Code :
[== Indéfini ==]
{foreach from=$items item=entry}
<div class="NewsSummary">
{if $entry->postdate}

{foreach from=$cats item=node}
{assign var=firstCat value=" | "|explode:$node.long_name}{$firstCat[0]}{/foreach}

    <p>  </br></p>
<div class="NewsSummaryPostdate">
        {$entry->postdate|date_format:"%B %Y"}
                
    </div>
{/if}

<div class="NewsSummaryLink">
<a href="{$entry->moreurl}" title="{$entry->title|cms_escape:htmlall}">{$entry->title|cms_escape}</a>
</div>



{if isset($entry->fields)}
  {foreach from=$entry->fields item='field'}
     <div class="NewsSummaryField">



        {if $field->name == 'Client'}
             Client&nbsp;:&nbsp;{eval var=$field->displayvalue}
        {/if}

<p>  </p>
        {if $field->name == 'visuel'}
            
<a href="{$entry->moreurl}" title="{$entry->title|cms_escape:htmlall}">{eval var=$field->displayvalue}</a>

        {/if}





     </div>


  {/foreach}
{/if}

</div>
{/foreach}

<p>  </br></p>
{global_content name='refyoutube'}

<p>  </br></p>
{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}
<!-- End News Display Template -->

voir la page : http://www.atenbet.fr/references_execution.html


Afficher le nom de la catégorie parent - Jean le Chauve - 25/03/2015

Effectivement, dans un foreach, ça boucle Wink
Voilà le bon code (qui m'a fait souffrir, mais avec plaisir Smile) :
Code :
{foreach from=$items item=entry}
<div class="NewsSummary">
{if $entry->postdate}
{assign var=firstCat value=" | "|explode:$cats[$entry@index]['long_name']}{$firstCat[0]}
    <p>  </br></p>



Afficher le nom de la catégorie parent - sechanbask - 25/03/2015

Merci de vous être penché sur mon besoin ça marche :


Code :
[== Indéfini ==]
{foreach from=$items item=entry}
<div class="NewsSummary">
{if $entry->postdate}


    <p>  <br/></p>
<div class="NewsSummaryPostdate">
        {$entry->postdate|date_format:"%B %Y"}
                
    </div>
{/if}

<div class="NewsSummaryLink">
<a href="{$entry->moreurl}" title="{$entry->title|cms_escape:htmlall}">{$entry->title|cms_escape}</a>
</div>

{assign var=firstCat value=" | "|explode:$cats[$entry@index]['long_name']}
{$firstCat[0]}

{if isset($entry->fields)}
  {foreach from=$entry->fields item='field'}
     <div class="NewsSummaryField">



        {if $field->name == 'Client'}
             Client&nbsp;:&nbsp;{eval var=$field->displayvalue}
        {/if}

<p>  </p>
        {if $field->name == 'visuel'}
            
<a href="{$entry->moreurl}" title="{$entry->title|cms_escape:htmlall}">{eval var=$field->displayvalue}</a>



        {/if}





     </div>


  {/foreach}
{/if}

</div>
{/foreach}

<p>  <br/></p>
{global_content name='refyoutube'}

<p>  <br/></p>
{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}
<!-- End News Display Template -->



Afficher le nom de la catégorie parent - airelibre - 01/04/2015

Je réouvre la discussion suite à la demande de sechanbask car le problème ne semble pas résolu


Afficher le nom de la catégorie parent - sechanbask - 16/04/2015

@ Jean le Chauve

ton code me sort bien une catégorie parente mais ce n'est pas la parent de la news en question. effectivement lorsque tu m'as proposé ton code, j'ai eu de la chance la catégorie parente que ça sortait correspondait à la news, donc je l'ai validé. Mais là ce n'est pas la cas... Et je ne comprends pas pourquoi.



voici ma page de test :

http://www.atenbet.fr/references/dev_references_completes


voici mon gabarit :

Code :
[== Indéfini ==]
{foreach from=$items item=entry}
<div class="NewsSummary">
{if $entry->postdate}



<div class="NewsSummaryPostdate">
        {$entry->postdate|date_format:"%B %Y"}
                
    </div>
{/if}

<div class="NewsSummaryLink">
<a href="{$entry->moreurl}" title="{$entry->title|cms_escape:htmlall}">{$entry->title|cms_escape}</a>
</div>

PB catégorie fait avec longname :
<div>
{assign var=firstCat value=" | "|explode:$cats[$entry@index]['long_name']}
{$firstCat[0]}
</div>


catégorie OK fait avec des if:
<div>
{if $entry->category =="video"}Exécution{else}{$entry->category}{/if}
</div>

{if isset($entry->fields)}
  {foreach from=$entry->fields item='field'}
     <div class="NewsSummaryField">



        {if $field->name == 'Client'}
             Client&nbsp;:&nbsp;{eval var=$field->displayvalue}
        {/if}

<p>  </p>
        {if $field->name == 'visuel'}
            
<a href="{$entry->moreurl}" title="{$entry->title|cms_escape:htmlall}">{eval var=$field->displayvalue}</a>



        {/if}





     </div>


  {/foreach}
{/if}

</div>
{/foreach}

<p>  <br/></p>
{global_content name='refyoutube'}

<p>  <br/></p>
{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}



Afficher le nom de la catégorie parent - Jean le Chauve - 16/04/2015

Je me suis totalement fourvoyé.
Il n'existe aucune relation entre $cats et $items.
long_name ne peut pas être raccordé à un article en particulier.

Je ne vois aucune possibilité pour coder ton souhait.
Tu dois repenser ta structure de données si tu veux afficher les bonnes données.
Ex:
Citation :Je souhaite pouvoir afficher "catégorie : EXECUTION", pas "catégorie : video", je n'ai créé la sous catégorie video pour extraire facilement non références avec des vidéos...
Pas besoin d'une sous-catégorie "vidéo" alors que tu as un custom field "Video" (je ne comprendrais pas la logique pour un article d'être dans une sous-cat vidéo s'il n'a pas de vidéo).
En supprimant toutes les sous-cat et en utilisant un test sur la valeur des champs perso, on peut ajouter "avec vidéo (avec visuel...)" après la catégorie tout en court-circuitant le problème précédent :
Code :
{foreach from=$items item=entry}
[...]
<a href="{$entry->moreurl}" title="{$entry->title|cms_escape:htmlall}">{$entry->title|cms_escape}</a>
</div>
<div>
{$entry->category}
{* c'est ici que ça se passe [à compléter avec tes autres champs perso] *}
{if isset($entry->fields)}
<span style='color:red'>{if !empty($entry->fields.Video->value)} avec vidéo</span>{/if}
{* fin de l'affichage personnalisé *}
</div>
{foreach from=$entry->fields item='field'}
[...]