我有一个照片滑块,有下一个和上一个按钮,当你点击一个按钮时,会出现一个弹出窗口并显示大尺寸的照片。我使用Umbraco,xslt宏显示其中的节点Gallery folder.xslt选择“图库/照片”节点。当我上传照片时,如果我不发布它,滑块的下一个/上一个按钮似乎不会弹出不起作用。我如何只选择Xslt中的已发布项目?提前致谢
答案 0 :(得分:1)
我看到这场辩论又如雨后春笋般涌现。这不是问题的直接答案,但你应该更了解Umbraco ......
Umbraco& XSLT 强>
虽然Umbraco主要从MS SQL数据库运行所有数据,但是每次在“隐藏”XML文件中发布/取消发布页面时,它都会缓存此数据。它释放了任何直接XML编辑的开发人员并将其留给Umbraco。但是,这使得开发人员很容易忘记甚至不知道它就在那里。
可以在以下任一位置找到该文件,具体取决于您使用的版本:
~/App_Data/umbraco.config
~/config/umbraco.config
问题
XSLT使用umbraco.config
文件作为XML源运行。但是,此文件仅包含已发布的节点。未发布的节点将完全从XML中删除,因此XSLT根本无法访问未发布的节点。
我怀疑问题可能与未发布的节点有关。
答案 1 :(得分:0)
如果没有看到你的XSLT很难猜出你在做什么。但是,正如@Goran所述,Umbraco中的XSLT只能访问已发布的节点。这是因为XSLT可以访问的数据是umbraco.config中的缓存XML结构。
因此,可能发生的事情是您实际上想要排除尚未分配图像的节点(即使节点本身已发布)。
您可以使用以下内容执行此操作:
$currentPage//GalleryNode [image != '']
这将选择当前页面下已分配图像属性的所有GalleryNode元素。
如果是这种情况,您可能需要考虑强制使用image属性,以防止在没有图像的情况下发布任何节点。