2016-09-30 51 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