Zoo上的输出自定义类别字段触发器列表

时间:2012-10-26 16:18:35

标签: expressionengine

我有一个基于结构的网站,其中包含类别列表页面。例如:http://www.mysite.com/products/category/tools/hammers。当然,我正在使用Zoo Triggers输出条目列表。

我的问题是每个类别列表页面都需要唯一的SEO元数据,因此我为标题,关键字和描述设置了自定义字段。遗憾的是,Zoo Triggers没有自定义类别字段的变量,{exp:channel:category_heading}标记不适用于Zoo Triggers URL。

我以为我可以使用神奇的GWCode Categories plugin,但我无法弄清楚如何只显示当前类别的数据。

有没有人对如何实现这一点有任何建议?感谢。

1 个答案:

答案 0 :(得分:5)

这可能需要自定义查询。由于EE将其核心和自定义类别数据存储在单独的表中,这对于本机查询模块来说有点笨拙,所以我倾向于使用Rob Sanchez的ActiveRecord plugin。我没有对此进行过广泛的测试,但下面的代码片段应该在球场上:

{exp:activerecord
    select="d.field_id_1 as seo_field_one, d.field_id_2 as seo_field_two"
    from="category_field_data as d"
    join="categories as c"
    on="c.cat_id = d.cat_id"
    where[a]="c.cat_url_title = '{triggers:last_segment}'"
    where[b]="c.group_id = '1'"
}
    <p>Field one: {seo_field_one}</p>
    <p>Field two: {seo_field_two}</p>
{/exp:activerecord}

如果您不熟悉CodeIgniter的Active Record类,则执行以下操作:

  • 根据列名称选择自定义类别字段,例如field_id_1,并创建在模板中使用的别名,例如{seo_field_one}
  • categoriescategory_field_data表之间创建联接,以便我们可以根据类别表中的值检索field_data表中的数据。
  • 将结果集限制为其网址标题与最后一个网址段匹配且属于类别组1的类别。

要在模板中实现此功能,您需要调整select语句,以便从正确的列中检索数据并调整group_id以匹配您的类别组。我假设您要检索最后一个网址段的数据,但如果需要,您也可以轻松调整数据。