我想在Tridion中創建一個GUI擴展,我在單擊按鈕時將特定的html插入到RTF中....我有工具欄按鈕並彈出以通知用戶。但是,當我點擊彈出確定,當我插入HTML 「</DIV > < DIV CLASS = '頁面' >」,將其插入 「< DIV CLASS = '頁面'/ >」。Tridion - 在RTF中插入HTML(文字和部分元素)
我發現applyHTML方法是什麼修改whats被插入。是否有任何其他函數/方法插入正確的內容,我的意思是無效的HTML,缺少結束標籤或打開標籤?
我想在Tridion中創建一個GUI擴展,我在單擊按鈕時將特定的html插入到RTF中....我有工具欄按鈕並彈出以通知用戶。但是,當我點擊彈出確定,當我插入HTML 「</DIV > < DIV CLASS = '頁面' >」,將其插入 「< DIV CLASS = '頁面'/ >」。Tridion - 在RTF中插入HTML(文字和部分元素)
我發現applyHTML方法是什麼修改whats被插入。是否有任何其他函數/方法插入正確的內容,我的意思是無效的HTML,缺少結束標籤或打開標籤?
如果您需要製作無效標記,請考慮純文本字段。不知道這會改變你現有的擴展和內容模型的多少,但你可以輸入任何東西到純文本字段,包括似乎是某種「分裂」或分隔佔位符。
</div><div class='Page'>
要保持豐富的文本功能,並遵循一些典型的外表套上的做法,請考慮以下的一個。
假設你最終的標記標記的變化將有一個開放的<div>
和關閉</div>
,考慮將你的擴展包整套選擇富文本的。在此過程中,在更新組件之前,允許作者選擇「分割」的位置並將整個更新保存到RTF。
嵌入式架構領域是一個更簡單的方法來分裂內容。作者創建了一組新的嵌入字段,並且模板代碼可以將其更改爲製表符,段落或可能是頁面的頁面(分頁?)。據我瞭解,它是一種非常有效的方法。
<!-- TemplateBeginRepeat name="Component.Fields.Paragraph" -->
<div class='Page'>
<!-- author-entered content -->
</div>
<!-- TemplateEndRepeat -->
這將在嵌套字段之間創建</div><div class='Page'>
。它還可以讓您在將來更改班級和標籤,而無需更改擴展程序。
上後我寫了一篇關於custom tags in rich text fields見選項,其中包括:
class="page-split"
。你甚至可以以某種方式來設計這種風格(例如,在視覺上就像<hr/>
),然後在最終標記中將其模板化爲任何你需要的。[[end-page]][[start-page]
」您可以用擴展插入任何一個,可選造型他們看在CME以某種方式。
我喜歡讓作者插入富文本字段中的功能更簡單的方法,但用插入特定HTML,尤其是無效的HTML,到組件的缺點是在硬編碼這個功能到內容。您將遇到移植和設計更改的問題。
考慮採取的外表套上如何與內容分離的設計優勢。
嘿阿爾文,感謝了一堆人......是你救了我們大量的調查研究和工作....你是對的,我們正在努力實現分頁。這就是我做到的......我在applyHTML中使用了一個佔位符標籤[PaginateHere]。然後做了一個getSource()。在返回的文本中,我用無效的HTML替換了標籤。然後做了一個setSource()。再次感謝! –
很高興聽到。我喜歡你的「PaginateHere」選項(讓我想起Blogger的「更多」功能)。另一種方法是--mainly嵌入式架構領域,因爲它的「網頁」,但今天可能選項卡,刷卡,能區,或一些,其他的導航方法旁邊。作者會按下「+」按鈕來分隔內容。無論哪種方式,你也可以_leave佔位符在RTF_和使用模板改變它。 –
想必當你說:</div><div class='Page'>
,你的意思是<div class='Page'></div>
。如果是這樣,那麼除非您可以直接控制XML整理,唯一剩下的方法(IMO)是確保div有一些內容。最常見的做法是插入一個不間斷的空間。
<div class='Page'> </div>
我不知道的功能是什麼,但我想這是不可能繞過HTML整理功能的內容必須有良好的XHTML。如果你能解釋你想達到的目標,或許可以實現更合適的解決方案。 – johnwinter