1

コードビハインドを介してパッケージをインストールする方法を理解しました(zipファイルがある場合)。私が理解しているように、それはマスターDBにのみインストールされます。インストールされたアイテムを Web DB に渡すにはどうすればよいですか? Cna I Web DB にパッケージをインストールしますか? インストールプロセスでアイテムを取得し、何らかの方法でそれらを公開する方法はありますか? これを達成するための最良の方法は何ですか?

4

3 に答える 3

3

パッケージを作成するときは、特定のデータベースからアイテムを選択します。デフォルトではこれがマスターですが、コアとウェブから選択することもできます。

アイテムは常に、元のデータベースと同じデータベースにインストールされます。

ここに画像の説明を入力

于 2012-11-01T08:27:30.300 に答える
1

マスターにアイテムをインストールした正確なルート アイテムがわからない場合は、ツリー全体を C# 経由で から に公開することをお勧めしますmasterweb

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 に答える