2015-07-20 74 views
1

我經常會遇到這樣的情況,即需要爲Orchard CMS中的特定租戶&主題更改來自各個模塊或核心功能的特定字符串的措辭。在Orchard CMS中覆蓋字符串的最佳做法是什麼?

例如,我可能有一個客戶,喜歡購物車結賬按鈕說「現在結賬」而不是「去結賬」,這是一個包含在購物模塊視圖中的字符串。

我可以簡單地覆蓋我的主題中的剃刀視圖並更改字符串,但視圖通常非常複雜,並且它不覺得正確地重寫視圖只是更改一個字符串。

我嘗試過的另一種方法是在我的主題中定義一個po翻譯文件以覆蓋模塊中的字符串。這是因爲模塊中的字符串是使用T()語法定義的。但是,我注意到,只要我在主題中爲字符串定義覆蓋,此覆蓋就會影響所有租戶,而不僅僅是啓用此主題的一個租戶。我傾向於認爲模塊/主題中的翻譯應該在沒有啓用的情況下被租戶忽略。

所以我想知道這種情況下最好的方法是什麼?

如果租戶忽略了未啓用主題的po文件,那麼本地化/ po文件方法就可以了,但是如果核心中有一個模塊或功能允許您指定字符串通過管理界面覆蓋。我想這比「翻譯」任務更像是「改寫」任務。

回答

1

這樣做的首選方法是通過模板覆蓋。如果你不想這樣做,你實際上可以分解形狀,並將渲染委託給更易於覆蓋的更小的模板。這是通過簡單地重構您希望能夠單獨覆蓋到單獨模板中的模板的一部分來完成的。這篇文章介紹瞭如何做到這一點:http://weblogs.asp.net/bleroy/creating-shapes-on-the-fly

如果你不願意這樣做,你可以使用這個模塊來從數據庫中獲取,而不是po文件字符串:http://gallery.orchardproject.net/List/Modules/Orchard.Module.Q42.DbTranslations應該可以對其進行修改,以適應您的sceanrio。

+0

謝謝伯特蘭。我不知道那個模塊。一眼看起來它可能適合我的目的。我真的只想要一個簡單的方法讓我的租戶無需修改代碼/主題即可對字符串進行重新命名。 – Michael

相關問題