#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)
Ваш код не работает из-за
- Форма тела создается классом CoreShapes, а затем к нему добавляется определенная фигура с позицией по умолчанию (null).
- Сортировка фигур внутри тела выполняется классом FlatPositionComparer, а нулевая позиция преобразуется в позицию «до».
- Таким образом, конкретная фигура имеет наивысший приоритет и занимает первое место в списке. И ничто не могло его переместить.