【问题标题】:Orchard CMS content preview not working properly with overridesOrchard CMS 内容预览无法正常使用覆盖
【发布时间】:2017-07-17 22:26:48
【问题描述】:

我在 Orchard 中使用视图覆盖创建了一个主题并格式化了我的博客。但是,当我尝试预览博客文章时,预览不会考虑这些覆盖。我认为这是因为预览 URL 与我基于 URL 创建的布局覆盖不匹配。

实际网址:http://localhost:30321/blog/post-title
预览网址:http://localhost:30321/Contents/Item/Preview/9460

有什么解决办法吗?

【问题讨论】:

  • 我认为几乎没有用例需要基于 url 的覆盖,但它完全符合你的预期:只匹配它使用覆盖的 url
  • 我基于 url 覆盖,因为我希望我的博客具有与常规页面不同的布局。这不是一个正常的用例吗?我还能如何做到这一点?
  • 例如,您可以在博客内容类型上使用覆盖
  • 您是否使用布局模块进行布局,而不是在主题中创建布局覆盖?

标签: orchardcms orchardcms-1.10


【解决方案1】:

您想使用替代品,您可以阅读更多关于here的信息

就像提到的其中一个 cmets 一样,除非您有一个非常好的用例,否则您不应该使用 url 进行视图覆盖(替代)。您最好使用替代内容类型。因此,如果您有一个名为 BlogPost 的内容类型,您可以将视图文件命名为 Content-BlogPost.cshtml。您应该将这些文件添加到您的主题项目中。

【讨论】:

  • 如果你想在不同的页面上运行不同的javascript,你会怎么做?您是否将调用放在内容覆盖中?
  • 我无法想象你想要做什么,你能更详细地解释一下吗?听起来您在谈论某种类型的 javascript 模块化。不过,有多种方法可以做到这一点。我发现最简单的方法是为每个页面/模块/功能制作唯一的文件,并确保将其包装在匿名函数中。然后创建一个全局初始化函数,并从视图文件中调用它。这可以确保只有某些 javascript 在某个页面上执行,但如果您想要优化,可以将所有内容捆绑到一个文件中。
猜你喜欢
  • 2017-09-05
  • 2019-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-20
相关资源
最近更新 更多