在UL

2014-07-14 31 views
0

的Rich Text Editor中爲UnOrdered列表添加封閉標籤我需要使用來自Sitecore中富文本編輯器的UL樣式。我試圖找出是否有一個類可以添加到來自Sitecore的富文本編輯器的所有UL中。提前在UL

感謝 阿肖克

+0

所有的UL都是來自所有的RTE領域,還是來自一些RTE領域的一些UL? – jammykam

+0

來自所有RTE領域的所有UL – user645075

回答

3

最簡單的解決方案只是與代碼應用適當的類HTML元素包住FieldRenderer

<div class="rich-text"> 
    <sc:FieldRenderer ID="frRichTextField" runat="server" FieldName="MyFieldName" /> 
</div> 

然後在一些CSS樣式添加到處理您的UL的範圍內這樣的:

.rich-text ul { 
    /* add in your styling */ 
} 

您還可以使用before和在FieldRenderer的0屬性來傳遞您的標籤:

<sc:FieldRenderer ID="frRichTextField" runat="server" FieldName="MyFieldName" 
    Before="<div class='rich-text'>" After="</div>" /> 

編輯:

如果你想更加激烈,那麼你可以在你自己的renderField流水線處理器添加到ensure your control is always wrapped with the required tag或者你可以使用在enclosingTag property和修補AddBeforeAndAfterValues管道代替:

namespace MyCustom.Pipelines.RenderField 
{ 
    public class AddBeforeAndAfterValues 
    { 
     public void Process(RenderFieldArgs args) 
     { 
      Assert.ArgumentNotNull((object)args, "args"); 
      if (args.Before.Length > 0) 
       args.Result.FirstPart = args.Before + args.Result.FirstPart; 
      if (args.After.Length > 0) 
      { 
       RenderFieldResult result = args.Result; 
       string str = result.LastPart + args.After; 
       result.LastPart = str; 
      } 
      if (args.EnclosingTag.Length == 0 || args.Result.FirstPart.Length <= 0 && args.Result.LastPart.Length <= 0) 
       return; 

      // check if a css class paramter has been passed in 
      string cssClass = args.Parameters.ContainsKey("class") ? args.Parameters["class"] : String.Empty; 
      // add the class to the enclosing tag property 
      args.Result.FirstPart = StringExtensions.FormatWith("<{0} class='{1}'>{2}", (object)args.EnclosingTag, cssClass, (object)args.Result.FirstPart); 
      args.Result.LastPart = StringExtensions.FormatWith("{0}</{1}>", (object)args.Result.LastPart, (object)args.EnclosingTag); 
     } 
    } 
} 

補丁Sitecore的配置文件:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" 
       xmlns:set="http://www.sitecore.net/xmlconfig/set/"> 
    <sitecore> 
    <pipelines> 
     <renderField> 
     <processor type="Sitecore.Pipelines.RenderField.GetLinkFieldValue, Sitecore.Kernel" 
        set:type="MyCustom.Pipelines.RenderField.AddBeforeAndAfterValues, MyCustom.Pipelines" /> 
     </renderField> 
    </pipelines> 
    </sitecore> 
</configuration> 

,然後調用FieldRenderer與設定的EnclosingTag,並通過在你的類參數:

<sc:FieldRenderer ID="frRichTextField" runat="server" FieldName="MyFieldName" 
    EnclosingTag="div" Parameters="class=rich-text" /> 

這真的不會增加太多使用上的before/after性質,儘管和我一般會嘗試遠離覆蓋默認的Sitecore處理器以在升級時節省心痛。

0

你既可以挖掘到相關的管道或更新sublayouts所以,你總是有周圍的富文本域呈遞的每個實例固定類:

<div class="rtf"> 
    <sc:Text ID="scContent" runat="server" FieldName="Content" /> 
</div> 

您必須確保作爲開發商說富文本字段渲染的所有當前和未來實例均由此類的標記封裝。 然後,您可以在全球CSS中包含此類的常用樣式。

.rtf ul { 
    ... 
    .... 
} 

如果你不想爲每一個rtf渲染添加這個包裝,你可以點擊相關的管道。(注 - 這可能是對於代碼的可維護性更好的方法)

您可以選擇使用兩個中的一個:

  • renderField管道 或
  • saveRichTextContent管道

所以你要爲這些管道添加一個新的處理器,在這個管道中你可以訪問r中的文本在Sitecore的富文本字段中的文本將不會發生變化, - 只和過程,請你

(易於使用的HTML敏捷包操縱HTML)如果你使用renderField管道ICH文本字段您編寫的代碼只會在渲染字段時才執行 - 在預覽/頁面編輯器或正常模式下。

,另一方面使用saveRichTextContent管道,當內容創作者點擊保存在內容編輯模式(輸入文本後)將更新的富文本字段。

你可以看到這些下面的例子:

renderField - http://techmusingz.wordpress.com/2014/05/25/unsupported-iframe-urls-in-sitecore-page-editor-mode/(HtmlUtility的樣品也出現在這裏 - 而不是選擇所有標籤,你可以選擇所有,並添加你想要的類屬性)

saveRichTextContent - http://techmusingz.wordpress.com/2014/06/14/wrapping-rich-text-value-in-paragraph-tag-in-sitecore/

希望這有助於。

0

最佳做法是將該類添加到富文本編輯器以便在編輯器中使用。

有很多關於這樣做的好文章。這裏有幾個: http://sitecoreblog.blogspot.com/2013/11/add-css-class-to-richtext-editor.html http://markstiles.net/Blog/2011/08/13/add-css-classes-to-sitecore-rich-text-editor.aspx

這些都是爲您提供投入在內容創作者之手的造型能力的能力最小的變化,但仍然控制什麼樣式和類別,他們可以使用內聯。