1

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 中。

目的是使所有代码尽可能通用。

对此有最佳做法吗?上述两种方法的缺点是什么?

4

3 回答 3

2

Reflector 显示自动添加了以下内容:

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));
于 2011-12-04T13:59:23.330 回答
2

用于 xsl 帮助函数的可用 Sitecore 扩展的完整列表记录在 API 参考帮助文件中,可从链接获得。

XSL 辅助函数包含在XslHelper类中

命名空间 ► Sitecore.Xml.Xsl ► XslHelper

帮助文件文档适用于 C#(其中构建了扩展),但正如文档所述:

用于 xsl 文件的辅助函数。可以使用 sc 前缀从 xsl 文件调用此类中的公共函数(例如 sc:fld(...))

于 2011-02-09T15:29:55.147 回答
0

陈述个人观点,我认为你应该抓住你已经在你面前看到的答案——忘记 XSLT,只做 C#。我不知道有多少(事实上,任何)经验丰富的 Sitecore 开发人员坚持使用 XSLT 来处理除了最基本的渲染之外的任何事情。当然,这也只是我个人的看法——但我从许多 Sitecore 博主那里看到了类似的说法。

为了回答您的问题,缺点是复杂性和开发时间。在编写您的功能时,然后编写和维护 XSL 帮助程序库。

于 2011-01-24T07:25:39.123 回答