簡體   English   中英

如何在Orchard中覆蓋核心通用視圖

[英]How to override core common view in Orchard

我正在建立一個使用Orchard的網站的樣式,我注意到它們是具有消息的自定義內容類型,這是HTML中的標准消息

<p>Some text</p>
<p>Some more text</p>

這很好,但是要感謝Orchard.Core.Common.Views.Fields.Common.Text.cshtml,它在每個</p>之后插入<br />

這是他們呈現信息的視圖

@using Orchard.Utility.Extensions;
@{
    string name = Model.ContentField.DisplayName;
}

@if (HasText(name) && HasText(Model.Value)) {
<p class="text-field"><span class="name">@name:</span> <span class="value">@(new MvcHtmlString(Html.Encode((HtmlString) Model.Value).ReplaceNewLinesWith("<br />")))</span></p>
}

如何覆蓋呢? 我試圖將視圖復制並粘貼到我的Themes / View文件夾中,但是它似乎沒有覆蓋它。 我只想刪除".ReplaceNewLinesWith("<br />")"

我尚未在Orchard 1.6上嘗試過此操作,但是在最新版本(1.8)上可以正常使用。 要檢查的顯而易見的事情是您的主題處於活動狀態,並且為視圖指定了正確的名稱。 如果要全局覆蓋,則視圖應位於主題視圖文件夾的根目錄中,名稱為“ Fields.Common.Text.cshtml”。

如果您不想更改所有文本字段的行為,則可能需要打開形狀跟蹤並為該視圖找到一個與包含該內容類型的字段名稱相關聯的視圖的“備用”(例如“ Fields.Common.Text-SomeTextField.cshtml”,這將減少您所做的任何更改的影響。

也就是說,您確定自己做對了嗎? 如果您的內容包含<p>標記,那么至少會在最新版本中,這些標記將被剝離,這是有道理的,因為否則您將獲得嵌套的<p>標記:

<p class="text-field"><span class="name">SomeTextField:</span> <span class="value">
    <p>Some text</p>
    <p>Some more text</p></span>
</p>

同樣,作為警告,雖然當然可以在最新版本的Orchard中覆蓋此視圖,但該視圖實際上已更改,因此視圖中不再包含新行處理。 它已移到Filter Orchard.Core.Common.Services.TextFieldFilter 因此,如果將來要更新站點,則可能會發現您需要重新訪問該區域。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM