如何添加Orchard形状开始身体?

时间:2014-06-23 08:51:09

标签: orchardcms

我刚刚开始使用Orchard并为Google Tag Manager编写模块,这意味着我需要在网站中每个页面的body标签的开头添加一个JavaScript代码段。

在我的FilterProvider OnResultExecuting中我有

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

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

tags.Add(snippet);

其中Shape是DefaultShapeFactory。我知道Shape.Add有第二个位置参数,但我尝试过“:before”,“。5”,“1”但没有成功。它总是在主体的末尾渲染,使用ThemeMachine主题而无需修改。

如果我修改主题并将新区域添加到正文开头的“文档”或“布局”视图中,然后将其形状添加到其中,那么它显然出现在我现在的解决方案中,但这意味着我们'我必须确保我们构建的任何主题都将该区域放在正确的位置。

如何在代码中添加形状并控制其位置?

1 个答案:

答案 0 :(得分:1)

此代码有效:

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

由于

,您的代码无效
  1. Body Shape由CoreShapes类创建,然后由Specific Shape创建 使用默认(null)位置添加到它。
  2. 通过FlatPositionComparer对体内形状进行排序 class和null位置转换为“before”位置。
  3. 因此,具体形状具有最高优先级,并且是第一个 列表。没有什么可以改变它。