在 Web 应用程序项目详细信息布局中按类别过滤 Business Catalyst Web 应用程序项目

Filter Business Catalyst Web App Items by Category WITHIN Web App Item Detail Layout

我正在尝试在另一个网络应用的详细布局中列出按类别分类过滤的网络应用项目。

为了进一步解释,我有 Web App 1(学习领域),其中包含科学、英语、数学等项目。每个项目都使用 BC 分类:科学、英语、数学等

我还有 Web App 2(资源),其中包含广泛的教学内容 material。每个项目也将使用 BC 的类别进行分类。

我想根据 "current" Web 应用程序 1 项目的类别分类,在 Web 应用程序 1 的详细信息布局中显示来自 Web 应用程序 2 的项目。

BC 默认允许您根据类别 ID 输出网络应用项目列表,例如

{module_webapps id="Web App 2 ID" filter="classified" itemId="Category ID"}

这行不通,因为我要将它放在 Web App 1 的详细布局中,因此类别 ID 需要根据我们所处的 Web App 1 项目进行更改。

例如,在Science页面(Web App 1 item classificed as Science),Web App 2 items被分类为Science,在English页面(Web App 1 item classificed as English), Web App 将显示已分类为英语的 2 个项目,以此类推每个不同的学习领域。

有办法吗?我曾希望可能有 {tag_categoryId} 可用,这样我就可以做类似的事情:

{module_webapps id="Web App 2 ID" filter="classified" itemId="{tag_categoryId}"}

但只有 {tag_classifications} 输出类别名称,而不是所需的 ID。

有没有办法用 Liquid 做到这一点?

事实证明这可以使用 BC 的 Liquid 标记。

这是一种变通方法,但并不困难而且有效。

我的解决方案需要:

  • {{classifications}} 标签(旧语法为 {tag_classifications}),可在网络应用详细信息布局中使用
  • {module_categorylist}(当被 <select> 标签包围时,这默认输出网站上每个类别的下拉列表)

您可以使用 template="" 抑制 {module_categorylist} 的默认呈现,并可以将数据分配给可以使用 Liquid 访问的集合:

{module_categorylist collection="gttCategories" render="collection" template=""}

所以我的解决方法如下: (以下代码插入到 Web App 1 详细布局中。)

{module_categorylist collection="myCategories" render="collection" template=""}

{% for item in myCategories.items -%}

    {% if item.name == {{this.classifications}} -%}

        {module_webapps id="Web App 2 ID" filter="classified" itemId="{{item.id}}"}

    {% endif -%}

{% endfor -%}

FOR 语句遍历 {module_categorylist}.

集合 myCategories 中输出的类别列表

IF 语句查看列表中每个类别项的名称并将其与 {{classifications}} 进行比较。 ({{classifications}} 输出 "current" Web App 1 项目的类别名称。)

对于每个匹配项,它都会呈现 Web App 2 模块,并将该类别的 ID 插入到 itemId 参数中。