Forum CMS Made Simple FR

Version complète : Afficher le nom de la catégorie parent
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.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
Je n'ai rien compris à ta demande, merci d'être plus explicite.
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...
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"}
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"
Ce n'est toujours pas clair ! Dans quel gabarit ? Sommaire ou détail ? A quel endroit ?
Donne-moi ton gabarit.
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
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>
[...]
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
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>
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 -->
Je réouvre la discussion suite à la demande de sechanbask car le problème ne semble pas résolu
@ 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_ref..._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}
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'}
[...]