如何将 Sitecore 的模板引擎从 Razor 更改为 Sharpy

How to change Sitecore's Templating Engine to Sharpy from Razor

长话短说 客户在前端为我们提供了 Smarty 模板。 Smarty (Sharpy) 的 .Net 端口能够转换所有这些模板并像我们使用 RAZOR 模板一样使用。我无法弄清楚如何切换模板引擎以呈现 Sharpy 文件而不是 RAZOR 文件,这样视图就不需要转换为 RAZOR 并避免现在正在发生的大量代码重写。

我试过的:

  1. 我在 Sitecore MVC 配置中添加了“sharpy”作为有效扩展名。
  2. 我添加了 Sharpy.dll 和 System.ComponentModel.Composition.dll 作为 项目中的参考 - 根据 Sharpy 文档要求。
  3. 我在 global.asax 的 application_start 函数中添加了视图引擎 ( ViewEngines.Engines.Add(新的 SharpyViewEngine()));
  4. 我在初始化管道中添加了视图引擎——以确保它可用

错误:

没有为扩展“.sharpy”注册的构建提供程序。您可以在 machine.config 或 web.config 中的部分注册一个。确保它具有包含值 'Web' 或 'All' 的 BuildProviderAppliesToAttribute 属性。

我找不到确切的原因。谷歌搜索没有太大帮助,因为几乎所有用户都喜欢使用 RAZOR。还需要知道此处适用的构建提供程序。

更新: 我能找到一个关于它是如何完成的 post/blog 吗?就算是别的模板引擎也没关系!即使有空,我也可以四处走走。

P.S.: 我是 .Net/Visual Studio 和 Sitecore 的新手,所以感谢任何帮助

  1. 在项目 -> 管道 -> 初始化 -> Sharpy.cs 中创建新的 Sitecore 初始化管道,在 Process 函数中添加代码以添加视图引擎 ViewEngines.Engines.Add(新的 SharpyViewEngine())

  2. Add/Modify 您的项目配置以使用处理器标签添加新的管道代码

    <pipeline><initialize><processor patch:after="processor[@type='Sitecore.Pipeline.Loader.EnsureAnonymousUsers, Sitecore.Kernal']" type="Project.Pienter code herepelines.Initialize.Sharpy, Project.Domain /></initialize></pipeline>
    
  3. 将构建提供程序标记添加到项目的 Web 配置文件中。

    <compilation><buildProviders><add extension=".sharpy" type='System.Web.Compilation.PageBuildProvider"/></buildProviders></compilation>
    
  4. 将 Shapry dll 文件添加到您的项目中作为参考。

  5. sharpy 添加为 Sitecore.MVC.Config

    中的有效扩展名
    <sitecore><settings><setting name="MVC.ViewExtensions" value="|cshtml|sharpy|"/></settings></sitecore>
    
  6. 重建整个项目,发布然后检查。

  7. 现在您的系统开始执行 Sharpy 视图引擎,Sharpy 将开始执行 .Sharpy 文件。