ExpressionEngine中的输出条目类别

spu*_*uds 2 expressionengine

我正在尝试在ExpressionEngine中输出通道条目的类别,以便我可以将它用作HTML元素上的CSS类 - 请参阅{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}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我正在尝试使用条目的类别作为CSS样式'钩子'...但我无法弄清楚如何在我的模板中输出条目的类别.

我宁愿避免在我的模板中使用PHP.有谁知道如何改进我的代码?

rjb*_*rjb 7

包装一个类别标签对周围的{category_name},这将输出所有类别分配到的条目:

<div class="panel {categories}{category_name} {/categories}">
Run Code Online (Sandbox Code Playgroud)

但是,这将输出您的类别的"漂亮名称" - 这对于CSS类或HTML元素上的ID是不可取的:

<div class="panel Category One Category Two ">
Run Code Online (Sandbox Code Playgroud)

相反,使用{category_url_title},这是类别名称的Web安全版本:

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

<!-- Outputs the following -->
<div class="panel category_one category_two ">
Run Code Online (Sandbox Code Playgroud)

请特别注意上面示例中的额外空间,这是将多个类别(CSS类)与空格分开所必需的.

如果您对标记有强迫性,则可以backspace=在输出多个类别时使用该参数删除尾随空格:

{categories backspace="1"}{category_url_title} {/categories}
Run Code Online (Sandbox Code Playgroud)

如果您希望限制输出的类别数或类别组,请使用类别标记对参数来满足您的需求:

<!-- No whitespace is needed, since we're outputting only one category -->
{categories limit="1"}{category_url_title}{/categories}
Run Code Online (Sandbox Code Playgroud)

以下是供审核的完整代码段:

{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}
Run Code Online (Sandbox Code Playgroud)