[英]RTE - wrap link based on condition
我的 TYPO3 網站使用帶有 RTE 的 TYPO3 6.1。 我想要存檔的是在滿足條件(鏈接具有類)時用 DIV 包裝鏈接。
編輯器應該只執行以下操作:
這將產生以下 HTML:
<a href="#" class="myClass" title="sometitle">My Link</a>
在網站前端,我希望用戶創建的鏈接用 DIV 包裝 - 但前提是鏈接具有“myClass”類。
我已經嘗試了以下
tt_content.text.20.parseFunc.tags.link.typolink.wrap = <div class="anotherClass">|</div>
它用 DIV 包裝了所有鏈接。
當編輯器為它選擇“myClass”時,TS 中有沒有辦法只包裝鏈接?
如果沒有,是否有另一種(編輯友好的)方式來存檔?
我已經看過自定義 userElements 和 blockformats,但對於編輯器來說,這兩者似乎都太復雜了,因為他們必須執行多個操作才能創建具有特殊樣式的單個鏈接。
我在前端生成的 HTML 應該是這樣的
<div class="anotherClass">
<a href="#" class="internal-link" title="sometitle">My Link</a>
</div>
我最后的選擇是使用 JQuery - 但實際上這不是一個非常干凈的解決方案,所以我更喜歡 TYPO3/TS 解決方案。
經過幾個小時的 Typoscript 調試后,我終於想出了如何解決這個問題。 我使用了類似的技術,如此處所示http://wiki.typo3.org/External_links
一般而言,我只是創建一個包含鏈接類名的新寄存器,然后使用類名將包裝添加到鏈接中。
lib.parseFunc.tags.link {
typolink.parameter.append = LOAD_REGISTER
typolink.parameter.append {
linkClass {
cObject = TEXT
cObject {
stdWrap.data = parameters:allParams
}
# Split link params by space-char. 3rd value is the link class name
split {
token.char = 32
cObjNum = 1||2||3
3 = TEXT
3.current = 1
}
}
}
newWrap.cObject = CASE
newWrap.cObject {
key.data = register:linkClass
# Set outer wrap for links depending on class name
default = TEXT
default.value = |
myClass = TEXT
myClass.value = <div class="anotherClass">|</div>
internal-link = TEXT
internal-link.value = <div class="anotherClassForInternalLink">|</div>
}
}
lib.parseFunc_RTE.tags.link {
typolink.parameter.append < lib.parseFunc.tags.link.typolink.parameter.append
wrap < lib.parseFunc.tags.link.newWrap
}
看起來有線,但工作完美:-)
這是一項新的更新:
您可以刪除以下行:typolink.parameter.append 而不是:
key.data = register:linkClass you can use key.data = parameters:class
當您有多個課程時,您可以這樣做:
lib.parseFunc.tags.a {
newWrap.cObject = CASE
newWrap.cObject {
key.data = parameters:class
default = TEXT
default.value = |
default.value.override.cObject = COA
default.value.override.cObject {
10 = TEXT
10.value = <span>|</span><span class="arrow"><img src="fileadmin/_icn/icn_btn_arrow
white.svg" alt="arrow"></span>
10.if {
value.data = parameters:class
equals = link-as-btn btn--primary
}
20 = TEXT
20.value = <b>|</b>
20.if {
value.data = parameters:class
equals = bold-btn
}
}
}
}
lib.parseFunc_RTE.tags.a.innerWrap < lib.parseFunc.tags.a.newWrap
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.