我的TYPO3网站使用TYPO3 6.1和附带的RTE。我想要存档的是当条件(链接有类)遇到它时用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解决方案。
答案 0 :(得分:3)
使用Typoscript进行了几个小时的调试后,我终于想出了如何解决这个问题。我使用了类似的技术http://wiki.typo3.org/External_links
Generelly,我只是创建一个包含链接类名的新寄存器,然后使用类名将链接添加到链接。
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
}
看起来有线,但效果很好: - )
答案 1 :(得分:0)
这是一项新的更新:
您可以删除以下行: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