【问题标题】:Sitecore SPEAK beginner having problems with Javascript inclusionSitecore SPEAK 初学者在包含 Javascript 时遇到问题
【发布时间】:2015-05-28 00:29:14
【问题描述】:

我正在尝试编写我的第一个简单的 Sitecore Speak 组件。

没什么好看的,我只需要开始。所以我在 Visual Studio 中创建了我的 Speak 组件,在 Sitecore 中我的渲染指向了我的组件。这一切都是开箱即用的。我在我的 SPEAK 布局上插入我的渲染,当我访问该页面时,我收到一条错误消息

有人知道为什么吗?我需要做什么?我正在使用 Sitecore 7.5。

我的 cshtml 是这样的:

@using Sitecore.Mvc
@using Sitecore.Mvc.Presentation
@using Sitecore.Web.UI.Controls.Common.UserControls
@model RenderingModel
@{
  var rendering = Html.Sitecore().Controls().GetUserControl(Model.Rendering);
  rendering.Class = "sc-Test2";
  rendering.Requires.Script("client", "Test2.js");

  var htmlAttributes = rendering.HtmlAttributes;
}      
<div @htmlAttributes>

</div>

【问题讨论】:

    标签: sitecore sitecore7 sitecore-speak-ui


    【解决方案1】:

    这里的问题基本上是 Sitecore SPEAK 无法找到您的组件的 javascript。

    您的 SPEAK 组件渲染和 javascript 似乎在您自己的目录中,这是最佳实践。您要做的就是告诉 SPEAK 在哪里寻找您的组件。这在包含文件夹中的 Sitecore SPEAK 配置中进行控制。

    这是一个补丁包含文件的示例,用于在 SPEAK 查找 javascript 组件的目录中打补丁。

    将源设置为包含您的自定义组件的目录。Deep = true 参数将扫描子目录。还要注意此示例中的类别名称“MikeRobbins”。选择任何对你的组件有意义的东西,我会避免使用 Sitecore 一个不影响 sitecore 标准组件。

    <?xml version="1.0" encoding="utf-8"?>
    <configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
      <sitecore>
        <pipelines>
          <speak.client.resolveScript>
            <processor type="Sitecore.Resources.Pipelines.ResolveScript.Controls, Sitecore.Speak.Client">
            <sources hint="raw:AddSource">
              <source folder="/sitecore/shell/client/MikeRobbins/Layouts/Renderings" deep="true" category="mikerobbins" pattern="*.js,*.css" />
            </sources>
            </processor>
          </speak.client.resolveScript>
        </pipelines>
      </sitecore>
    </configuration>
    

    更新您的组件 CSHTML 并将 userControl.Requires.Script("mikerobbins"..... 部分设置为您在上面选择的类别名称。请参见下面的示例。

    @using Sitecore.Mvc
    @using Sitecore.Mvc.Presentation
    @using Sitecore.Web.UI.Controls.Common.UserControls
    @model RenderingModel
    @{
        var userControl = Html.Sitecore().Controls().GetUserControl(Model.Rendering);
        userControl.Requires.Script("mikerobbins", "JsonDataSource.js");
        userControl.Attributes["type"] = "text/x-sitecore-jsondatasource";
        userControl.DataBind = "Json: json";
        var htmlAttributes = userControl.HtmlAttributes;
    }
    <script @htmlAttributes>
    </script>
    

    在我的项目中可以看到一个例子。 https://github.com/sobek1985/SitecoreSPEAKBulkRolePermissions

    希望对你有帮助,有什么问题可以给我留言。

    【讨论】:

      【解决方案2】:

      您还可以在 Requires.Script 方法中指定完整的 javascript 路径。

      rendering.Requires.Script("/sitecore/shell/client/MikeRobbins/Layouts/Renderings/Test2.js");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-13
        • 2014-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-24
        相关资源
        最近更新 更多