从ExpressionEngine中的父类别获取子类别数据

时间:2014-06-18 18:10:30

标签: php expressionengine

我有一个非常简单的页面,它显示了基于类别的文章列表,该列表存在于URL中。代码在这里:

{exp:channel:entries channel="news" limit="10" category="{segment_3}" disable="member_data|category_fields" paginate="bottom" orderby="date" dynamic="no"}
    <a class="square_block" href="{url_title_path='news/article'}">
        <div class="content_block">
            <div class="news_block_headline">
                {title}
            </div>
            <div class="news_block_text">
                {exp:eehive_hacksaw words="30" append="..."}
                {exp:remove_html}
                    {teaser}
                {/exp:remove_html}
                {/exp:eehive_hacksaw}
            </div>
            <div class="square_block_divider"></div>
            <div class="news_block_date">
                {entry_date format="%d/%m/%y"}
            </div>
            <div class="square_block_arrow"></div>
        </div>
    </a>
{/exp:channel:entries}

我想要做的是显示任何可能相关的子类别的文章。我该怎么做呢?我已经看过像GWCode Categories这样的插件,并进行了一些搜索,但大多数只关注获取子类别名称,而不是实际从中提取数据。

1 个答案:

答案 0 :(得分:0)

好的,所以我使用GWCode Categories破解了这个。由于PHP解析问题,我不得不使用嵌入式模板。

我创建了一个名为widgets / news_specific_cats的模板,它看起来几乎与上面的代码完全相同,只是exp:channel:entries标记了一个嵌入变量,所以它看起来像这样:

{exp:channel:entries channel="news" limit="10" category="{embed:childCategories}" disable="member_data|category_fields" paginate="bottom" orderby="date" dynamic="no"}

然后在主页上我有一些PHP代码来获取父类和子类的列表,它们作为嵌入变量传递,如下所示:

<div style="display:none;">
{exp:gwcode_categories cat_id="{segment_3}"}
    <?php
    $childCategories .= "{cat_id}|";
    ?>
{/exp:gwcode_categories}
</div>
<?php 
$childCategories = strip_tags($childCategories);
$childCategories = rtrim($childCategories, "|");
$childCategories = trim($childCategories);
?>
<div id="block_holder">
    {embed="widgets/news_specific_cats" cats="<?php echo $childCategories; ?>"}
</div>

我将GWCode块包装在一个隐藏的div中,因为由于某些原因GWCode坚持将数据输出为格式化列表,所以我必须手动删除所有这些东西。基本上它只是将所有类别转换为条形分隔格式,EE用它来表示从多个类别中选择文章。我怀疑这是完成我所需要的最佳方式,但它确实有效。