2012-03-28 8 views
0

Ich verwende Expression 2.2.1 und ich versuche, einen Teil meiner Seite auf Kategorien, basiert zu zeigen. Wenn keine Einträge eine bestimmte Kategorie ausgewählt haben, möchte ich den gesamten Abschnitt ausblenden. Zum Beispiel habe ich eine Website, die Informationen über eine Veranstaltung enthält, die schließlich Konkurrenten darin haben wird. Ich möchte, dass die Seite existiert, bevor die Wettbewerber ausgewählt werden, und möchte dann die Wettbewerber der entsprechenden Kategorie hinzufügen, sobald sie ausgewählt wurden. Dieser Abschnitt würde einen Header haben, der "Konkurrenten" sagt. Wenn es keine Konkurrenz zu dieser Kategorie zugeordnet sind, habe ich nicht nur nicht wollen, dass es Raum zu zeigen, für die Konkurrenten, aber ich möchte auch den Header auszublenden. Wie kann ich Konditionalitäten basierend auf Kategorien erstellen? Hier der entsprechende Teil meines aktuellen Code auf der Grundlage meiner Forschung (http://expressionengine.com/archived_forums/viewthread/136676/#759900), die nicht funktioniert:Expression Wenn keine Kategorien Ergebnisse zeigen nichts

{if “{categories show_group=“4”}{category_name}{/categories}” != “”} 
    {categories}  
     <h2>COMPETITORS</h2> 
     {exp:channel:entries channel="competitor_profiles_en" category_url_title="london_2d_en" orderby="date" limit="8" } 
     <div class="xx">{competitor_image}</div> 
     {/exp:channel:entries} 
    {/categories} 
{if:else} 
show nothing 
{/if} 

Antwort

0

Ist dies der vollständige Code?

Die Kategorien {} {/ Kategorien} Paare Looping nur innerhalb eines Kanals zur Verfügung steht: Einträge Tag-Paares.

Ich folge nicht ganz, was Sie zu tun versuchen, aber es ist eine bedingte, dass Sie innerhalb des Kanals verwenden können: Einträge Schleife, wenn es keine Ergebnisse basieren auf der Verwendung des Tags:

{if_no_results} .

Möglicherweise könnte dies die gewünschte Ansicht erstellen verwendet werden, wenn die Vorlage in der Kategorie Modus geladen wird, aber es gibt keine Einträge in der Kategorie zugeordnet.

1

konnte nicht Sie dies nur tun?

{exp:channel:entries channel="competitor_profiles_en" category_url_title="london_2d_en" orderby="date" limit="8"} 
    {if count == "1"}<h2>COMPETITORS</h2>{/if} 
    <div class="xx">{competitor_image}</div> 
{/exp:channel:entries} 

Oder, wenn Sie diese während tust in allen Kategorien Looping:

{exp:channel:categories channel="competitor_profiles_en" show_empty="no"} 

    <h1>{category_name}</h1> 
    {category_description} 

    <h2>COMPETITORS</h2> 
    {exp:channel:entries channel="competitor_profiles_en" category="{category_id}" orderby="date" limit="8"} 
     <div class="xx">{competitor_image}</div> 
    {/exp:channel:entries} 

{/exp:channel:categories} 

Beachten Sie, dass, wenn Sie viele Kategorien haben, diese Verschachtelung von Tags zu einem beträchtlichen Leistungseinbußen führen kann.

1

bekam ich diese Arbeit von parse="inward" zum channel:entries Tag hinzufügen:

{exp:channel:entries channel="news" parse="inward"} 

Und dann Aussage folgenden, wenn:

{if '{categories show="135"}{category_name}{/categories}' != ""} 

Offensichtlich hat Ihren Kanal und Kategorie-IDs ersetzen oben. So ist der komplette Code:

{exp:channel:entries channel="news" parse="inward"} 
    {if '{categories show="135"}{category_name}{/categories}' != ""} 
     {!-- do something here --} 
    {/if} 
{/exp:channel:entries}