3

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

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

我以为我可以使用神奇的GWCode 类别插件,但我不知道如何仅显示当前类别的数据。

有人对我如何做到这一点有任何建议吗?谢谢。

4

1 回答 1

5

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

{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}
  • categories在和表之间创建连接,category_field_data以便我们可以根据类别表中的值检索 field_data 表中的数据。
  • 将结果集限制为 URL 标题与最后一个 URL 段匹配且属于类别组 1 的类别。

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

于 2012-10-26T17:52:41.113 回答