2016-09-30 76 views
1

我需要創建一個cshtml呈現和Sitecore控件,允許我從Sitecore字段插入JavaScript。然後,我可以將此控件附加到佈局以在頁面上插入JavaScript。創建Sitecore cshtml插入JavaScript的渲染

我嘗試將<script>插入到使用富文本編輯器的控件中,但Sitecore默認從編輯器中刪除<script>,這導致我找到了此解決方案。

我知道基礎知識 - 需要cshtml渲染,模板(假設只有一個字段,多行文本字段)以及使用cshtml文件的路徑進行佈局渲染,但不僅限於此。

開發人員已經使用Glass Mapper,我不知道如何進入上面,或者如何重新實例化。這將是我的第一個控制。下面是一個示例CSHTML文件,如果有幫助:

@inherits Glass.Mapper.Sc.Web.Mvc.GlassView<Company.Model.TDS.sitecore.templates.User_Defined.Company.Platform.Modules.Common.Sidebar_Text_Callout> 

    @if (Model != null) 
    { 
     <div class="sidebar-text-callout"> 
      <h3>@Editable(Model, x => x.Sidebar_Callout_Title)</h3> 
      <p>@Editable(Model, x => x.Sidebar_Callout_Copy)</p> 
      @if (Model.Sidebar_Callout_Link != null) 
      { 
       <div class="all-caps-callout"> 
        <a class="link-with-icon" href="@Model.Sidebar_Callout_Link.Url" target="@Model.Sidebar_Callout_Link.Target">@Model.Sidebar_Callout_Link.Text <span class="svg">@Html.Partial("~/Views/Icons/arrowRight.cshtml")</span></a> 
       </div> 
      } 
     </div> 
    } 

回答

2

通過您所提供的示例代碼模型的命名來看,它看起來像你的開發人員一起與它的code generation功能生成的Sidebar_Text_Callout類使用TDS

我建議您堅持使用創建JavaScript呈現的相同過程。有關創建基於Glass的視圖渲染的說明過於廣泛,無法在此上下文中介紹,因此我在下面列出了一些高級別的步驟。 Glass網站以及Sitecore自己的文檔應該更詳細地介紹這一點。

  1. 創建包含多行文本字段的數據模板。如果您希望腳本在所有語言中保持一致(或啓用回退),請確保在該字段中選中「共享」複選框。否則,請保持共享未選中或不配置回退。
  2. 在Sitecore中創建一個新的視圖渲染,其路徑指向您的.cshtml文件的位置。
  3. 將查看渲染「數據源模板」字段設置爲新模板,並配置其餘字段。特別重要的是數據源位置(即您想要存儲數據源項目的位置),緩存(您可能需要至少檢查CacheableVary By Data
  4. 將視圖渲染添加爲「允許的控件」 (注意:由於這是JavaScript,因此您可以選擇跳過此步驟跳過此步驟)
  5. 右鍵單擊您的主TDS項目,然後選擇「與Sitecore同步」 。您應該看到新的Tempalte,Layout以及您所做的任何其他更改。使用sync buttons將這些更改提取到TDS中。該過程應自動爲您生成新的Glass Mapper模型,您可以立即在視圖中使用該模型。
  6. 最後,在您的視圖中,引用新的模型並輸出該字段的值。由於我們正在渲染JavaScript,因此您可能需要輸出原始值而不支持體驗編輯器。

示例View

@inherits Glass.Mapper.Sc.Web.Mvc.GlassView<Company.Model.TDS.sitecore.templates.User_Defined.Company.Platform.Modules.Common.PageLevelJavaScript> 

@if (Model != null) 
{ 
    @Html.Raw(Model.MyJavaScriptField) 
} 
+0

感謝您的詳細解釋德里克,有一件事我沒有提到這將改變你的答案 - 有兩個解決方案文件我們的解決方案,一種帶有一個沒有TDS 。因爲我還沒有TDS許可證,所以我在沒有它的情況下使用瞭解決方案,所以我們在#5丟失了一點點,以及如何在沒有TDS的情況下做到這一點。 – troyrmeyer