Выходная категория ввода в ExpressionEngine - PullRequest
2 голосов
/ 08 декабря 2011

Я пытаюсь вывести категорию записи канала в ExpressionEngine, чтобы я мог использовать ее как класс CSS для элемента HTML & mdash; см. мою попытку использования {category_name} в следующем примере:

{exp:channel:entries 
    channel="panels"
    disable="member_data|pagination|trackbacks|categories|category_fields" 
    status="open"
    dynamic="no"
}

    <div class="panel {category_name}">
        <h4>{title}</h4>
        {if panel_image}
            <img src="{panel_image}" /> 
        {/if}       
        <p>{panel_text}</p>
        <a href="{panel_link}">{panel_link_text}</a>
    </div>

{/exp:channel:entries}

Как вы можете видеть, я пытаюсь использовать категорию записи в качестве "крючка" для CSS-стиля ... но я не могу понять, как вывести категорию записи в моем шаблоне.

Я бы предпочел не использовать PHP в своем шаблоне. Кто-нибудь знает, как улучшить мой код?

1 Ответ

7 голосов
/ 08 декабря 2011

Оберните пару тегов категорий вокруг вашего {category_name}, что выдаст все категории , назначенные записи:

<div class="panel {categories}{category_name} {/categories}">

Однако этовыведет «красивое имя» ваших категорий - что нежелательно для классов CSS или идентификаторов для элементов HTML:

<div class="panel Category One Category Two ">

Вместо этого используйте {category_url_title}, то есть веб-безопасную версию названия категории:

<!-- Categories Tag Pair code -->
<div class="panel {categories}{category_url_title} {/categories}">

<!-- Outputs the following -->
<div class="panel category_one category_two ">

Обратите особое внимание на дополнительный пробел в приведенных выше примерах, который необходим для разделения нескольких категорий (классов CSS) пробелом.

Если выВы навязчивы в своей разметке, вы можете использовать параметр backspace= для удаления завершающего пробела при выводе нескольких категорий:

{categories backspace="1"}{category_url_title} {/categories}

Если вы хотите ограничить количество выводимых категорий или из какихгруппа категорий, используйте Параметры пары тегов категорий , чтобы удовлетворить ваши потребности:

<!-- No whitespace is needed, since we're outputting only one category -->
{categories limit="1"}{category_url_title}{/categories}

Вот полный фрагмент кода для обзора:

{exp:channel:entries channel="panels" dynamic="no"}
    <div class="panel {categories}{category_url_title} {/categories}">
        <h4>{title}</h4>

        {if panel_image}
            <img src="{panel_image}" /> 
        {/if}

        <p>{panel_text}</p>
        <a href="{panel_link}">{panel_link_text}</a>
    </div>
{/exp:channel:entries}
...