我有一些非页面的内容项目,这些项目被用作我在Sitecore构建的整个网站页面的“标注”。理想情况下,我希望能够独立定义这些标注的演示信息。然后,当CMS作者为站点中的特定页面选择标注时,他们知道如何显示自己。我在这里读到了一篇关于如何做到这一点的优秀的博客文章:http://www.awareweb.com/AwareBlog/InversionControl2.aspx。我使用了他在帖子中描述的第一种方法。
然而,我的代码实现并不完全有效。它似乎获得了正确的呈现,并且正确地迭代了所选的非页面标注项。但是当它在页面上显示它们时,似乎callout项仍然使用Sitecore.Context.Item作为它们的源项,而不是通过strDataSource变量传递给它们的源项,如示例代码中所示。
我是否需要在代码后台中为标注的子布局做一些特殊的事情,以告诉它们不要使用Sitecore.Context.Item,而是使用传入的源项?否则我就搞不懂它为什么不工作了。有什么想法吗?
谢谢,科里
发布于 2011-09-28 00:00:29
在子布局中设置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集表示的项;John在他的博客文章中也引用了这个库。
https://stackoverflow.com/questions/7571450
复制相似问题