我有很多非页面内容项目,我在Sitecore中构建的网站页面一侧用作“标注”。理想情况下,我希望能够独立定义这些标注的演示信息。然后,当CMS作者为站点中的特定页面选择标注时,他们知道如何显示自己。我在这里阅读了一篇关于如何执行此操作的优秀博文:http://www.awareweb.com/AwareBlog/InversionControl2.aspx。我使用了他在帖子中描述的第一种方法。
然而,我对该代码的实现并不完全有效。它似乎获得了正确的渲染,并通过选定的非页面标注项正确迭代。但是当它在页面上显示它们时,似乎标注项仍然使用Sitecore.Context.Item作为它们的源项而不是通过strDataSource变量传递给它们的源项,如示例代码中所示。
我是否必须在后面的代码中为标注的子布局做一些特殊操作,告诉他们不要使用Sitecore.Context.Item而是使用传入的源项?否则我无法弄清楚为什么它不起作用。有什么想法吗?
谢谢, 科里
答案 0 :(得分:4)
在子布局中设置DataSource
并未将Context.Item
显式设置为不同的值,它只是在子布局中设置一个可以自行使用的属性。
而不是再次写出解决方案,John West的博客已经在这里介绍了这个主题,所以我建议你阅读 - http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2010/11/How-to-Apply-Data-Sources-to-Sitecore-ASPNET-Presentation-Components.aspx
我建议使用SublayoutParameterHelper共享源库,它提供一个帮助器和一个基类,用于子布局,用于访问由DataSource中设置的ID表示的Item;约翰还在他的博客文章中引用了这个图书馆。