Установите пакет sitecore через код для всех целей

Я понял, как установить пакет с помощью кода программной части (учитывая, что у меня есть zip-файл). Насколько я понимаю, он устанавливает только на главную БД. Как мне затем перенести установленные элементы в веб-базу данных? Cna Я устанавливаю пакет на веб-БД? Есть ли способ получить элементы в процессе установки, а затем как-то их опубликовать? Как лучше всего этого добиться?


person M.R.    schedule 31.10.2012    source источник


Ответы (3)


Если вы не знаете точный корневой элемент того, где вы установили элементы в мастере, лучше всего опубликовать все дерево через C # от master до web

Раздел 2.2.2 Руководства Content API Cookbook (ссылка в формате PDF) есть этот фрагмент того, как это сделать:

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);
person Mark Ursino    schedule 01.11.2012
comment
Хммм ... проблема в том, что я не обязательно хочу, чтобы все дерево перемещалось - мне нужны только те элементы, которые пакет должен передать в Интернет. Есть ли способ получить элементы, которые пакет «только что» установил? - person M.R.; 01.11.2012

При создании пакета вы выбираете элементы из определенных баз данных. По умолчанию это мастер, но вы также можете выбрать их из ядра и из Интернета.

Элементы всегда будут устанавливаться в той же базе данных, откуда они были.

введите описание изображения здесь

person Ruud van Falier    schedule 01.11.2012

Вероятно, вы могли бы попробовать такой подход. Поскольку вы уже устанавливаете пакет из программной части, вы можете получить список измененных элементов с момента начала установки пакета и опубликовать их.

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

Это решение немного грязное, но должно решить вашу проблему.

person Martijn van der Put    schedule 02.11.2012