由于我无法发布代码,我将此视为一个理论问题,但是给出一个场景。
我有一个“新闻室”子布局,静态绑定几个XSLT以列出最新消息和最新事件。子布局用于新闻编辑室项目,事件和新闻项目是它的后代(虽然不是直接的子项目,但有几层文件夹可用于分类和日期项目。)
在我们的解决方案中,subayout正在大约10个站点中使用,没有任何问题。每个站点都是我们主站点的克隆,并添加了额外的语言版本。我们已成功地将其用于(其中包括)日语,中文,俄语,波兰语和捷克语网站。
但是,我们最新的克隆(土耳其语)在活动或新闻列表中没有显示任何项目。这些项目存在并发布,并在单独浏览时按预期显示。
新闻编辑室项目的演示文稿详细信息与所有其他新闻编辑室项目相同。
更令人困惑的是,newsoom项目本身在不同域的上下文中显示时,会正确显示。
即
www.mysite.com/sitecore/content/my_turkish_site/path/newsroom?sc_lang=tr-TR
显示没有问题的列表,包括根据文化格式化的日期,但
www.mysite.com.tr/sitecore/content/my_turkish_site/path/newsroom?sc_lang=tr-TR
显示空列表。
如果将语言切换为英语(克隆源语言)
,则会出现完全相同的问题几乎所有土耳其网站都正常运作。
没有任何演示组件被标记为可缓存。
所有演示组件都没有指定的数据源(即它们都使用当前项/后代轴)
此问题的可能原因是什么?如何测试?
编辑: 对于Mark Ursino 这是网站定义(略有虚构)。我无法发布更多的web.config ...
<site name="www.mysite.com.tr" patch:after="site[@name='www.mysite.com.au']" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content/CloneData/TurkishClone" hostName="www.mysite.com.tr" startItem="/Turkey_Home" database="web" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false" language="tr-TR" />
某些调试显示在土耳其语环境中查看项目时,XSLT与模板不匹配。 这是使用的调试匹配(select是我们在for-each中使用的选项):
<xsl:value-of select="count(./descendant::item[@template='newsitem' and @id!=$topNewsId and sc:fld('__created',.)])"/>
它匹配从其他域查看的相同项目。
调试输出显示土耳其网站认为模板为newsıtem
而不是newsitem
(我错了!)。
我还测试了通过土耳其语域查看其他网站的新闻编辑室 - 问题是一样的。 我们对基于eventitem模板的项目存在同样的问题,并且显然使用了Image Spot模板。
答案 0 :(得分:1)
您是否尝试在事件列表和xslts中打印出语言,文化和上下文项ID,lang,版本?
如果显示任何意外情况,您可以使用Reflector Pro的外部程序集调试步入某些Sitecore管道解析程序。
答案 1 :(得分:1)
回答我自己的问题。
Sitecore模板名称将转换为小写,以便通过Sitecore XSLT扩展在XSLT比较中使用。
此小写转换尚未设置为文化不变。在土耳其语中,强制大写I
的大写字母给出小写ı
截至6.5 rev.110419,Sitecore已使用ToLower()
替换了Sitecore API中ToLowerInvariant()
的来电
http://sdn.sitecore.net/Products/Sitecore%20V5/Sitecore%20CMS%206/ReleaseNotes/ChangeLog.aspx
由于我们尚未升级到6.5,我们现在将使用模板ID而不是XSLT中的名称。
。关于字符串和文化的网络信息,特别是“土耳其语问题” http://msdn.microsoft.com/en-us/library/ms973919.aspx