What inbuilt parameters can I access in Sitecore XSLT? How should I expose global settings I need?
是否有可用于Sitecore XSLT的内置参数列表?我环顾四周,但没有看到任何看起来像完整列表的东西,至少与.NET组件可以直接访问的数据类型相比没有。与.NET演示组件相比,在Sitecore中开箱即用地使用XSLT似乎有一些局限性。
我特别希望能够访问与在单个实例安装上运行多个站点和语言有关的各种信息-主节点,主机名,站点名称等。在.NET中,大多数情况似乎是可以通过Sitecore.Context或.NET服务器对象获得。我需要能够在同一解决方案中同时掌握上下文相关的信息和其他域/站点的设置。
例如en-GB中的mysite1.com和da-DK中的mysite2.com都使用不同的语言指向相同的内容。理论上,这两个域都可以支持其他语言,其中某些语言可以共享(例如,两个站点都允许进行fr-FR翻译)。在这种情况下,我需要知道我当前所处的站点,所使用的语言以及所支持的语言。需要类似的信息来确定例如网站特定的CSS,内容部分等。
如果我需要公开这些全局和站点设置,应该怎么做?我可以看到几种可能的方法,包括:
- 用C#编写扩展功能
- 创建全局设置模板/项目,并使用XSLT读取它们并将其转换为参数-可以根据需要将XSLT包含/导入其他XSLT中。
目标是使所有代码尽可能通用。
这是否有最佳实践?上面两种方法的缺点是什么?
Reflector显示自动添加了以下内容:
1 2 3 4 | list.AddParam("id", string.Empty, item.ID.ToString()); list.AddParam("lang", string.Empty, Language.Current.Name); list.AddParam("sc_lang", string.Empty, Language.Current.Name); list.AddParam("sc_item", string.Empty, GetNodeIterator(item)); |
xsl帮助程序功能的可用Sitecore扩展的完整列表记录在API参考帮助文件中,该文件可从链接获得。
XSL帮助器函数包含在
中
命名空间-o Sitecore.Xml.Xsl -o XslHelper
帮助文件文档适用于C#(在其中构建扩展名),但文档说明如下:
Helper functions for use with xsl
files. The public functions in this
class can be called from an xsl file
by using the sc prefix (ex.
sc:fld(...))
陈述个人意见,我认为您应该抓住已经在您眼前看到的答案-忘记XSLT并执行C#。我不了解许多(实际上是任何)经验丰富的Sitecore开发人员,他们坚持使用XSLT进行最基本的渲染之外的任何工作。当然,这也是我个人的看法-但我从那里看到了许多Sitecore博客的类似说法。
要回答您的问题,缺点是复杂性和开发时间。在编写功能时,然后编写和维护XSL帮助程序库。