1

我已经想出了如何通过代码隐藏安装一个包(假设我有一个 zip 文件)。据我了解,它仅将其安装在主数据库上。然后如何将已安装的项目转移到网络数据库?Cna 我在 web 数据库上安装包?有没有办法在安装过程中获取项目,然后以某种方式发布它们?实现这一目标的最佳方法是什么?

4

3 回答 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 回答