Sitecore-硬编码项目ID



按项目id检索项目(页面)有问题吗?

我能想到的唯一一种情况是,如果客户端删除一个页面并重新添加它,它们可能会发生变化。。。

通常,我们使用TDS或数据库副本来更新我们的数据库

不,通过ID访问项目没有问题。这是首选方法,因为路径比ID更容易更改。与删除和重新创建项目相比,作者更有可能重命名或移动项目(或祖先)。

我们通常每个安装(有时每个站点)都有一个项目,其中包含许多指向其他关键项目(例如搜索结果页面、其他设置项目等)的树列表字段。我们将此全局链接项目的ID存储在配置文件中,然后使用Glass Mapper或Custom item Generator为其设置一个模型类。这让我们可以得到这样的好语法:

var searchPage = ClientName.Configuration.Settings.GlobalLinks.SearchResultsPage;

按id检索没有问题。它们最适合用于您使用它们的范围内的唯一联系人。在代码中,存在可读性问题,但您可以创建一个静态ID类来缓解这一问题。参见Sitecore.ItemIDsSitecore.TemplateFieldIDs作为示例。

如果可能的话,我会尽量避免过度依赖使用物品ID,尽管正如其他答案所说,这是可行的。如果这样做,明智的做法是考虑对代码中引用ID的任何项目设置安全限制,以防止用户删除它们(但这不会阻止用户编辑它们)。

另一种选择是使用模板ID。编写一些扩展方法非常简单,可以通过模板id检索项/子体,这可以使您的解决方案更加健壮。

相关内容

最新更新