随着我们的前进,我们一直在尝试“组件化”我们的 Sitecore 解决方案,为过渡到页面编辑器的使用做准备(Woot!终于!),但实际上我们仍然主要使用可能是基于继承的复合材料的页面模板页面特定字段,加上 1:许多这些组件化模板。下面是我们解决方案中的一个示例——横幅特征轮播和特色卡通是我们正在创建的这些新组件中的一些:
为了避免使用 Sitecore.Context.Item(正如我最近被这篇文章提醒的那样),我已经开始在新组件的子布局上填写数据源模板字段,看起来我已经在演示详细信息、Sitecore 子布局和 .NET 代码文件之间建立了适当的联系(据我所知;同样,我们对这种工作方式比较陌生)。
根据 Nick Allen 的这篇文章,我还尝试为这些组件设置一个基类,但这是我遇到问题的地方:当我执行我的代码时,这个基类正在适当地找到组件 Sublayout(整个“this.Parent as Sublayout”的东西)但是,当我去询问 Sublayout.Datasource 属性时,它是一个空字符串。这是我的这个基类的代码(到目前为止):
public class ComponentBase : System.Web.UI.UserControl
{
private Sublayout Sublayout { get { return Parent as Sublayout; } }
public Item DataSourceItem
{
get
{
return Sublayout != null && !String.IsNullOrEmpty(Sublayout.DataSource) ?
Sitecore.Context.Database.GetItem(Sublayout.DataSource) : Sitecore.Context.Item;
}
}
}
我显然错过了 Sitecore 子布局中的数据源模板字段之间的一些相互作用,以及它如何实际转换为数据源。是因为这些组件模板被用来组成页面模板吗?我在想数据源最终会解析为当前正在使用相关组件的页面模板,但也许这是我的误解。
如果有人可以给我任何提示以检查或指出我可能用来进一步发展的任何资源,我将不胜感激。我自己问了很多 Googs,但没有得到任何帮助。
提前感谢您,Sitecore 朋友们!