2014-06-23 57 views
1

我剛剛開始使用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); 

,其中形狀是DefaultShapeFactory。我知道Shape.Add有位置的第二個參數,但我試過「:之前」,「.5」,「1」,但沒有成功。它總是在主體的末尾渲染,使用ThemeMachine主題而不做任何修改。

如果我修改主題並將新區域添加到文檔或佈局視圖的主體開始處,然後將其添加到我的形狀中,但顯然它出現在我的解決方案中,但這意味着我們必須確保我們構建的任何主題都在正確的位置。

如何在代碼中添加形狀並控制其位置?

回答

1

此代碼:

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

您的代碼不會因爲

  1. 體型是由CoreShapes類創建,然後具體形狀 被添加到它的默認(空)工作位置。
  2. 排列體內形狀的方法由FlatPositionComparer 類和null位置轉換爲「之前」位置。
  3. 因此,特定形狀具有最高的優先級,並且是列表中的第一個地方 。沒有任何東西可以移動它。
+0

這很好用 - 謝謝! –