如何从媒体项模板编写Sitecore查询以更正具有多个站点的Home项目?

时间:2011-09-12 08:26:22

标签: sitecore sitecore6 sitecore-media-library

我有一个自定义媒体项模板,允许用户向上传的文件添加类别过滤器。媒体项目保留在媒体库中。过滤器将从内容树中相关站点的Home项下面的文件夹中选择。使用树形控件选择它们。我们有多个站点,每个站点都有自己的Home项和过滤器文件夹。我需要将treelist控件的源设置为指向每个站点的相对过滤器文件夹。

如果媒体项目在Hoe项目下,我可以使用:

query:ancestor-or-self::*[@@templatename='Home']/item[@key='filters']

但当然媒体项目找不到ancestor-or-self::*[@@templatename='Home'],因为它不在该分支上,它是平行的。

我怀疑我们的命名标准是否足够强大以确保完全基于项目名称的任何相对路径,而且我宁愿避免连接媒体文件夹的名称以找到Home项目的正确名称。

有没有办法优雅地解决这个问题?

我当然可以将过滤器文件夹放在其他位置,或者放在媒体库中(宁愿避免这种情况,因为它对我们的业务用户来说不直观)或者在全局部分(他们必须找到自己的特定站点)下面的文件夹 - 或者向内容树添加另一个安全配置。)

2 个答案:

答案 0 :(得分:0)

getLookupSourceItems管道允许您向Source字段添加自定义标记/语法,例如查找正确的网站的主页。

http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2011/05/Reference-the-Context-Item-and-System-Date-in-the-Source-Property-of-Sitecore-ASPNET-CMS-Fields.aspx

然而,根据我的收集,TreeList不使用此管道。因此,另一个选项可能是创建自定义TeeList字段类型。

http://www.cmssource.co.uk/blog/custom-tree-list

答案 1 :(得分:0)

回答我自己的问题:

如果不采用某种形式的命名标准,这是不可能的。如果媒体库中的分支镜像内容树(Site1,Site2,Site3等)中的分支,则命名标准可以强制媒体库分支和内容树分支之间的正确关系。如果没有这样的命名标准和分支镜像,那么就无法将媒体文件夹与特定站点连接,而无需添加某种类型的配置项来包含该引用。