在Orchard CMS中覆盖字符串的最佳做法是什么?

时间:2015-07-20 12:21:07

标签: orchardcms

我经常遇到需要针对特定​​租户更改各种模块或核心功能的特定字符串的措辞的情况。 Orchard CMS中的主题。

例如,我可能有一个客户更喜欢购物车结帐按钮说"立即结账"而不是"去结账"这是购物模块中视图中包含的字符串。

我可以简单地覆盖主题中的剃刀视图并更改字符串,但是视图通常非常复杂,并且只是为了更改一个字符串而无法覆盖视图。

我尝试过的另一种方法是在我的主题中定义一个po翻译文件来覆盖模块中的字符串。这是有效的,因为模块中的字符串是使用T()语法定义的。但是,我注意到,只要我在主题中为字符串定义覆盖,此覆盖就会影响所有租户,而不仅仅是启用了此主题的一个租户。我倾向于认为模块/主题中的翻译应该从未启用它们的租户中忽略。

所以我想知道这种情况的最佳方法是什么?

如果租户忽略了未启用的主题中的po文件,那么本地化/ po文件方法就可以了,但是如果核心中有一个允许你指定的模块或功能,那将会非常好字符串覆盖通过管理界面。我想这更像是一个"重写"任务比翻译"任务。

1 个答案:

答案 0 :(得分:1)

执行此操作的首选方法是通过模板覆盖。如果您不想这样做,您实际上可以打破形状,并将渲染委托给更容易覆盖的较小模板。这可以通过简单地重构您希望能够单独覆盖到单独模板中的模板部分来完成。这篇文章解释了如何做到这一点:http://weblogs.asp.net/bleroy/creating-shapes-on-the-fly

如果您不愿意这样做,您可以使用此模块从数据库中获取字符串而不是po文件:http://gallery.orchardproject.net/List/Modules/Orchard.Module.Q42.DbTranslations应该可以修改它以适合您的情况。