我已经想出了如何通过代码隐藏安装一个包(假设我有一个 zip 文件)。据我了解,它仅将其安装在主数据库上。然后如何将已安装的项目转移到网络数据库?Cna 我在 web 数据库上安装包?有没有办法在安装过程中获取项目,然后以某种方式发布它们?实现这一目标的最佳方法是什么?
问问题
846 次
3 回答
3
创建包时,您从特定数据库中选择项目。默认情况下这是 master,但您也可以从 core 和 web 中选择它们。
项目将始终安装在与其来源相同的数据库中。
于 2012-11-01T08:27:30.300 回答
1
除非您知道在 master 中安装项目的确切根项目,否则最好的办法是通过 C# 从master
到发布整个树web
Content API Cookbook( PDF 链接)的第 2.2.2 节包含如何执行此操作的代码片段:
var master = Sitecore.Configuration.Factory.GetDatabase("master");
var target = Sitecore.Configuration.Factory.GetDatabase("web");
Sitecore.Data.Database[] targetDatabases = { target };
var languages = master.Languages;
Sitecore.Publishing.PublishManager.PublishIncremental(master, targetDatabases, languages);
于 2012-11-01T14:00:46.407 回答
0
您可能可以尝试这样的方法。由于您已经从代码隐藏安装了包,因此您可以获得自包安装开始并发布它们以来修改项目的列表。
Item rootItem = Sitecore.Context.Database.GetItem(Sitecore.Context.Site.RootPath);
List<Item> modifiedItemList = rootItem.Axes.GetDescendants().
Where(item => item.Statistics.Updated >= installDateTime
|| item.Statistics.Created >= installDateTime).ToList();
// add te items in the list to the publishing queue
该解决方案有点脏,但应该可以解决您的问题。
于 2012-11-02T21:38:45.297 回答