ExpressionEngine Если нет категорий, ничего не показывать - PullRequest
0 голосов
/ 28 марта 2012

Я использую ExpressionEngine 2.2.1 и пытаюсь показать раздел моей страницы на основе категорий. Если ни в одной записи не выбрана определенная категория, я хотел бы скрыть весь раздел. Например, у меня есть веб-сайт со списком информации о событии, которое в конечном итоге будет иметь конкурентов. Я хотел бы, чтобы страница существовала до выбора конкурентов, а затем хотел бы добавить конкурентов в соответствующую категорию после их выбора. В этом разделе будет заголовок «конкуренты». Если в этой категории пока нет конкурентов, я не только не хочу, чтобы она показывала место для конкурентов, но я также хотел бы скрыть заголовок. Как я могу создать условия на основе категорий? Здесь применима часть моего текущего кода, основанная на моем исследовании (http://expressionengine.com/archived_forums/viewthread/136676/#759900), которое не работает:

{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}

Ответы [ 3 ]

1 голос
/ 29 марта 2012

Не могли бы вы просто сделать это?

{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}

Или, если вы делаете это, просматривая все категории:

{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}

Обратите внимание, что если у вас много категорийэто вложение тегов может привести к значительному снижению производительности.

1 голос
/ 02 апреля 2014

Я получил эту работу, добавив parse="inward" к тегу channel:entries:

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

И затем следующее выражение if:

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

Очевидно, замените ваш канал и категориюИдентификаторы выше.Итак, полный код:

{exp:channel:entries channel="news" parse="inward"}
    {if '{categories show="135"}{category_name}{/categories}' != ""}
        {!-- do something here --}
    {/if}
{/exp:channel:entries}
0 голосов
/ 29 марта 2012

Это полный код?

Циклическая пара {category} {/ category} доступна только в канале: пара тегов entry.

Я не совсем понимаю, что выпытаются сделать, но есть условие, которое вы можете использовать в канале: записи, если нет результатов, основанных на использовании тега:

{if_no_results} .

Возможно, это можно использовать для создания необходимого представления, когда шаблон загружается в режиме категории, но для категории нет записей, назначенных категории.

...