我正在尝试列出在其他网络应用的详细布局中按类别分类过滤的网络应用商品。
为了进一步解释,我有 Web App 1 (学习领域),其中包含科学,英语,数学等项目。每个项目都使用BC进行分类:科学,英语,数学等。
我还有 Web App 2 (资源),其中包含各种教学材料。每个项目也将使用BC的类别进行分类。
我想根据“当前”Web App 1项目的类别分类,在Web App 1的详细信息布局中显示Web App 2中的项目。
默认情况下,BC允许您根据类别ID输出Web应用程序项列表,例如
{module_webapps id="Web App 2 ID" filter="classified" itemId="Category ID"}
这不起作用,因为我将把它放在Web App 1的详细布局中,因此类别ID需要根据我们所处的Web App 1项目而改变。
例如,在“科学”页面(Web App 1项目归类为“科学”)中,将在英文页面(Web App 1项目分类为英语),Web App上显示已归类为“科学”的Web App 2项目。将显示2个已分类为英语的项目,依此类推每个不同的学习区域。
有办法做到这一点吗?我曾希望可能有{tag_categoryId}
可用,以便我可以做类似的事情:
{module_webapps id="Web App 2 ID" filter="classified" itemId="{tag_categoryId}"}
但只有{tag_classifications}
输出类别名称,而不是所需的ID。
有没有办法用Liquid做到这一点?
答案 0 :(得分:1)
事实证明,这可以使用BC的Liquid标记。
这是一种解决方法,但它并不困难且有效。
我的解决方案要求:
{{classifications}}
标记(遗留语法为{tag_classifications}
),可在网络应用详细信息布局中使用{module_categorylist}
(当被<select>
标签包围时,默认会输出网站上每个类别的下拉列表)您可以使用{module_categorylist}
来禁止template=""
的默认呈现,并可以将数据分配给可以使用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语句查看列表中每个Category项的名称,并将其与{{classifications}}
进行比较。 ({{classifications}}
输出&#34;当前&#34; Web App 1项目的类别名称。)
对于每个匹配,它会将Web App 2模块的ID类型插入到itemId参数中。