Редактор страниц Sitecore — создание нового местоположения контента

В редакторе страниц, когда вы добавляете новый элемент контента, возможно ли автоматически добавить его как дочерний элемент текущей страницы?

Итак, в редакторе страниц

  • Нажмите «Добавить сюда» в заполнителе.
  • Выберите Выберите визуализацию
  • Выберите «создать новый контент»
  • Автоматически создайте его как дочерний элемент контекстного элемента.

person Martin Davies    schedule 26.06.2013    source источник


Ответы (2)


Если под автоматическим вы подразумеваете, что Sitecore должен создать элемент (с каким-то именем), просто выбрав «Создать новый контент», я в это не верю. Вам по-прежнему необходимо предоставить Sitecore имя и местоположение элемента, который должен быть создан.

Однако вы можете установить в поле «Расположение источника данных» в подмакете/рендеринге относительный путь (например, ./Stuff), и тогда диалоговое окно «Создать новый контент» позволит вам создавать новые элементы только под этим элементом. Путь ./Stuff приведет к элементу Stuff в элементе контекста. Я никогда не пытался создавать элементы как прямые дочерние элементы элемента контекста, поэтому я не уверен, каким должен быть путь. Вы можете попробовать ./ или просто ..

person Rickard Andersson    schedule 26.06.2013
comment
Хотя оба этих ответа, кажется, достигают того, что я ищу, я принимаю ваш, потому что он не требует переопределения каких-либо стандартных функций Sitecore. Спасибо. - person Martin Davies; 27.06.2013

Вы можете перезаписать, как sitecore разрешает корень источника данных.

Расширить конвейер "getRenderingDatasource"

И добавьте такой код

public void Process(GetRenderingDatasourceArgs args){
    string datasourceLocation = args.RenderingItem["Datasource Location"];

    var item = args.ContentDatabase.GetItem(datasourceLocation)

    var templateItem = args.ContentDatabase.GetTemplate("templateName");

    Item createdItem = args.ContentDatabase.CreateItemPath(Path.Combine(item.Paths.Path, "createdItem"), templateItem);

    args.CurrentDatasource = createdItem.Paths.Path;
}

А затем установите «Расположение источника данных» в рендеринге или подмакете на «.»

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

person dunston    schedule 26.06.2013
comment
-1 для непроверенного решения (которое не работает) и для предложения установить местоположение источника данных исходного элемента рендеринга в . - это изменяет расположение источника данных подмакета, и это нежелательное решение, так как это требуется для динамической установки только для конкретного рендеринга. - person M.R.; 17.12.2013