2013-01-02 19 views
11

我想在Tridion中創建一個GUI擴展,我在單擊按鈕時將特定的html插入到RTF中....我有工具欄按鈕並彈出以通知用戶。但是,當我點擊彈出確定,當我插入HTML 「</DIV > < DIV CLASS = '頁面' >」,將其插入 「< DIV CLASS = '頁面'/ >」。Tridion - 在RTF中插入HTML(文字和部分元素)

我發現applyHTML方法是什麼修改whats被插入。是否有任何其他函數/方法插入正確的內容,我的意思是無效的HTML,缺少結束標籤或打開標籤?

+0

我不知道的功能是什麼,但我想這是不可能繞過HTML整理功能的內容必須有良好的XHTML。如果你能解釋你想達到的目標,或許可以實現更合適的解決方案。 – johnwinter

回答

6

如果您需要製作無效標記,請考慮純文本字段。不知道這會改變你現有的擴展和內容模型的多少,但你可以輸入任何東西到純文本字段,包括似乎是某種「分裂」或分隔佔位符。

</div><div class='Page'>

要保持豐富的文本功能,並遵循一些典型的外表套上的做法,請考慮以下的一個。

完成一次全部

假設你最終的標記標記的變化將有一個開放的<div>和關閉</div>,考慮將你的擴展包整套選擇富文本的。在此過程中,在更新組件之前,允許作者選擇「分割」的位置並將整個更新保存到RTF。

創建「拆分」嵌入式架構和模板代碼

嵌入式架構領域是一個更簡單的方法來分裂內容。作者創建了一組新的嵌入字段,並且模板代碼可以將其更改爲製表符,段落或可能是頁面的頁面(分頁?)。據我瞭解,它是一種非常有效的方法。

<!-- TemplateBeginRepeat name="Component.Fields.Paragraph" --> 
<div class='Page'> 
<!-- author-entered content --> 
</div> 
<!-- TemplateEndRepeat --> 

這將在嵌套字段之間創建</div><div class='Page'>。它還可以讓您在將來更改班級和標籤,而無需更改擴展程序。

插入非HTML「合併域」相反

上後我寫了一篇關於custom tags in rich text fields見選項,其中包括:

  • CSS類的內容管理器瀏覽器如class="page-split"。你甚至可以以某種方式來設計這種風格(例如,在視覺上就像<hr/>),然後在最終標記中將其模板化爲任何你需要的。
  • 合併域佔位符標記,如「[[end-page]][[start-page]
  • 自定義HTML5節點,如果必須

您可以用擴展插入任何一個,可選造型他們看在CME以某種方式。

我喜歡讓作者插入富文本字段中的功能更簡單的方法,但用插入特定HTML,尤其是無效的HTML,到組件的缺點是在硬編碼這個功能到內容。您將遇到移植和設計更改的問題。

考慮採取的外表套上如何與內容分離的設計優勢。

+0

嘿阿爾文,感謝了一堆人......是你救了我們大量的調查研究和工作....你是對的,我們正在努力實現分頁。這就是我做到的......我在applyHTML中使用了一個佔位符標籤[PaginateHere]。然後做了一個getSource()。在返回的文本中,我用無效的HTML替換了標籤。然後做了一個setSource()。再次感謝! –

+0

很高興聽到。我喜歡你的「PaginateHere」選項(讓我想起Blogger的「更多」功能)。另一種方法是--mainly嵌入式架構領域,因爲它的「網頁」,但今天可能選項卡,刷卡,能區,或一些,其他的導航方法旁邊。作者會按下「+」按鈕來分隔內容。無論哪種方式,你也可以_leave佔位符在RTF_和使用模板改變它。 –

0

想必當你說:</div><div class='Page'>,你的意思是<div class='Page'></div>。如果是這樣,那麼除非您可以直接控制XML整理,唯一剩下的方法(IMO)是確保div有一些內容。最常見的做法是插入一個不間斷的空間。

<div class='Page'>&#160;</div>