Как добавить форму сада в начало тела?

#orchardcms

#orchardcms

Вопрос:

Я только начинаю работать с Orchard и пишу модуль для Google Tag Manager, что означает, что мне нужно добавить фрагмент JavaScript в начале тега body для каждой страницы нашего сайта.

В моем FilterProvider OnResultExecuting у меня есть

 var context = _workContextAccessor.GetContext();
var tags = context.Layout.Body;

var snippet = Shape.Snippet();
snippet.ContainerId = containerId;

tags.Add(snippet);
 

где Shape — это DefaultShapeFactory . Я знаю эту форму.У Add есть второй аргумент для позиции, но я пробовал «:before», «.5», «1» без успеха. Он всегда отображается в конце тела, используя тему ThemeMachine без каких-либо изменений.

Если я изменю тему и добавлю новую зону либо в документ, либо в макет в начале тела, а затем добавлю к ней свою фигуру, она, очевидно, появится там, что на данный момент является моим решением, но это означает, что мы должны убедиться, что любая тема, которую мы создаем, имеет эту зону в начале тела.правильное место.

Как мне добавить фигуру в коде в тело и контролировать ее положение?

Ответ №1:

Этот код работает:

 context.Layout.Body.Items.Insert(0, snippet)
 

Ваш код не работает из-за

  1. Форма тела создается классом CoreShapes, а затем к нему добавляется определенная фигура с позицией по умолчанию (null).
  2. Сортировка фигур внутри тела выполняется классом FlatPositionComparer, а нулевая позиция преобразуется в позицию «до».
  3. Таким образом, конкретная фигура имеет наивысший приоритет и занимает первое место в списке. И ничто не могло его переместить.