2012-03-28 4 views
0

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

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

ответ

0

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

Циклы цикла {категории} {/ categories} доступны только в паре тегов канала:.

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

{if_no_results} ,

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

1

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

{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

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

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

И затем следующее, если заявление:

{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} 
Смежные вопросы