基于Kentico当前文档类别的CMSRepeater条件
本文关键字:CMSRepeater 条件 文档 Kentico 基于 | 更新日期: 2023-09-27 18:18:51
我在我的模板中有一个部分,它必须在侧边栏中显示即将发生的事件。
场景:
1。
2。事件将被分配到特定类别。
3。想要显示这些事件的文档也会分配特定的类别
现在CmsRepeater
必须根据当前文档类别拉出事件。
我有一些替代方法来做到这一点,使用相关的文档功能…但是将单个Event传递给所有想要显示的页面是一项乏味的工作。
如果我理解正确,您正试图显示与当前文档具有相同类别的文档。然后,您可以将宏与WHERE条件结合使用。
这个宏遍历当前文档的类别并创建一个字符串,该字符串可以用作where条件的一部分。
{% val = "("; foreach(category in CurrentDocument.Categories) { val += category.CategoryId + "," }; val = val.TrimEnd(",")+")"; return val; #%}
然后在中继器的where条件字段中输入这样的内容。
DocumentID IN (SELECT DocumentID FROM CMS_DocumentCategory WHERE CategoryID IN {% val = "("; foreach(category in CurrentDocument.Categories) { val += category.CategoryId + "," }; val = val.TrimEnd(",")+")"; return val; #%})
它可能还需要一些边缘情况的改进,但它应该代表基本的思想。
如果您想从重复器中排除当前文档,我将包含这样的内容:
DocumentID != {% CurrentDocument.ID #%}
所以,最后的查询看起来像这样:
DocumentID != {% CurrentDocument.ID #%} AND DocumentID IN (SELECT DocumentID FROM CMS_DocumentCategory WHERE CategoryID IN {% val = "("; foreach(category in CurrentDocument.Categories) { val += category.CategoryId + "," }; val = val.TrimEnd(",")+")"; return val; #%})