0

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

如果媒体项目在锄头项目下,我可以使用这个:

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

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

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

有什么方法可以优雅地解决这个问题吗?

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

4

2 回答 2

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- Sitecore-ASPNET-CMS-Fields.aspx 的属性

但是,据我所知,TreeList 不使用此管道。因此,另一种选择可能是创建自定义 TeeList 字段类型。

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

于 2011-09-12T13:59:39.117 回答
0

回答我自己的问题:

This isn't possible to do without employing some form of naming standard. If the branches within the media library mirror the branches within the content tree (Site1, Site2, Site3 etc) then a naming standard could enforce the correct relation between a media library branch and a content tree branch. If no such naming standard and branch mirroring is in place then there is no way of connecting a media folder with a specific site without adding a configuration item of some sort to contain the reference.

于 2011-09-19T10:05:01.920 回答