Typo3 将菜单链接url放入属性中
我需要做一个菜单没有任何链接,但与属性中的url。 url应该在data href=|中,但现在只有标题会打印在属性中。 有没有办法只返回url而不返回链接。代替 或者有人知道不同的解决方案吗Typo3 将菜单链接url放入属性中,typo3,typoscript,Typo3,Typoscript,我需要做一个菜单没有任何链接,但与属性中的url。 url应该在data href=|中,但现在只有标题会打印在属性中。 有没有办法只返回url而不返回链接。代替 或者有人知道不同的解决方案吗 lib.mainMenu = HMENU lib.mainMenu { entryLevel = 1 wrap = <ul id="dropDownMenu">|</ul> 1 = TMENU 1 { noBlur = 1
lib.mainMenu = HMENU
lib.mainMenu {
entryLevel = 1
wrap = <ul id="dropDownMenu">|</ul>
1 = TMENU
1 {
noBlur = 1
expAll = 1
NO = 1
NO {
wrapItemAndSub = <li class="nochildren">|</li>
stdWrap2.wrap = <span>|</span>
}
ACT < .NO
ACT.wrapItemAndSub = <li class="active nochildren">|</li>
# if has children
IFSUB < .NO
IFSUB.wrapItemAndSub = <li class="haschildren">|</li>
IFSUB.allWrap = |
# if has children and is active
ACTIFSUB < .IFSUB
ACTIFSUB.wrapItemAndSub = <li class="active haschildren">|</li>
ACTIFSUB.allWrap = |
}
2 < .1
2 {
wrap = <ul id="subMenu">|</ul>
NO.ATagParams = rel="nofollow"
NO.stdWrap2.insertData = 1
NO.stdWrap2.wrap = <span data-href="|" class="link">{field:title}</span>
NO.doNotLinkIt = 1
IFSUB < .NO
ACTIFSUB < .IFSUB
}
3 < .2
}
请尝试以下未经测试的代码:
lib.mainMenu = HMENU
lib.mainMenu {
entryLevel = 1
wrap = <ul id="dropDownMenu">|</ul>
1 = TMENU
1 {
noBlur = 1
expAll = 1
NO = 1
NO {
wrapItemAndSub = <li class="nochildren">|</li>
stdWrap2.wrap = <span>|</span>
}
ACT < .NO
ACT.wrapItemAndSub = <li class="active nochildren">|</li>
# if has children
IFSUB < .NO
IFSUB.wrapItemAndSub = <li class="haschildren">|</li>
IFSUB.allWrap = |
# if has children and is active
ACTIFSUB < .IFSUB
ACTIFSUB.wrapItemAndSub = <li class="active haschildren">|</li>
ACTIFSUB.allWrap = |
}
2 < .1
2 {
wrap = <ul id="subMenu">|</ul>
NO {
doNotShowLink = 1
stdWrap2 {
wrap >
cObject = TEXT
cObject {
typolink {
parameter.field = uid
returnLast = url
}
insertData = 1
wrap = <span data-href="|" class="link">{field:nav_title//field:title}</span>
}
}
}
IFSUB < .NO
ACTIFSUB < .IFSUB
}
3 < .2
}
请尝试以下未经测试的代码:
lib.mainMenu = HMENU
lib.mainMenu {
entryLevel = 1
wrap = <ul id="dropDownMenu">|</ul>
1 = TMENU
1 {
noBlur = 1
expAll = 1
NO = 1
NO {
wrapItemAndSub = <li class="nochildren">|</li>
stdWrap2.wrap = <span>|</span>
}
ACT < .NO
ACT.wrapItemAndSub = <li class="active nochildren">|</li>
# if has children
IFSUB < .NO
IFSUB.wrapItemAndSub = <li class="haschildren">|</li>
IFSUB.allWrap = |
# if has children and is active
ACTIFSUB < .IFSUB
ACTIFSUB.wrapItemAndSub = <li class="active haschildren">|</li>
ACTIFSUB.allWrap = |
}
2 < .1
2 {
wrap = <ul id="subMenu">|</ul>
NO {
doNotShowLink = 1
stdWrap2 {
wrap >
cObject = TEXT
cObject {
typolink {
parameter.field = uid
returnLast = url
}
insertData = 1
wrap = <span data-href="|" class="link">{field:nav_title//field:title}</span>
}
}
}
IFSUB < .NO
ACTIFSUB < .IFSUB
}
3 < .2
}
以上答案只在没有挂载点的情况下有效。一旦页面树中有装入点,这些链接将无法正确生成 要强制Humenu在使用挂载点时输出没有周围a标记和页面标题的普通URL,您需要定义Humenu的IProcFunc属性 我已经编写了一个小方法,可以通过IProcFunc调用它,它将删除a标记并用链接的URL替换页面标题
<?php
class UserFuncUtils {
/**
* Modifies sitemap links. Whith this modification, a menu will only generate a plain url instead of an <a>-Tag
*
* This is an IProcFunc for a HMENU. The only parameter supplied by this method call is $this->I from the
* Menu ContentObject. The function call expects a modified $I array to be returned.
*/
function IProcFunc_plainURL($I) {
// Show what $I has to offer
// print \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($I, NULL, 8, FALSE, FALSE, FALSE, array(), array());
// Remove opening and closing tags and replace title with href attribute. This results in a plain URL being rendered by the menu
$I['parts']['ATag_begin'] = '';
$I['parts']['ATag_end'] = '';
$I['parts']['title'] = $I['linkHREF']['HREF'];
return $I;
}
}
?>
然后将HMENU的IProcFunc属性设置为指向此用户函数
lib.mainMenu = HMENU
lib.mainMenu.IProcFunc = UserFuncUtils->IProcFunc_plainURL
这应该可以解决问题。以上答案只在没有挂载点的情况下有效。一旦页面树中有装入点,这些链接将无法正确生成 要强制Humenu在使用挂载点时输出没有周围a标记和页面标题的普通URL,您需要定义Humenu的IProcFunc属性 我已经编写了一个小方法,可以通过IProcFunc调用它,它将删除a标记并用链接的URL替换页面标题
<?php
class UserFuncUtils {
/**
* Modifies sitemap links. Whith this modification, a menu will only generate a plain url instead of an <a>-Tag
*
* This is an IProcFunc for a HMENU. The only parameter supplied by this method call is $this->I from the
* Menu ContentObject. The function call expects a modified $I array to be returned.
*/
function IProcFunc_plainURL($I) {
// Show what $I has to offer
// print \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($I, NULL, 8, FALSE, FALSE, FALSE, array(), array());
// Remove opening and closing tags and replace title with href attribute. This results in a plain URL being rendered by the menu
$I['parts']['ATag_begin'] = '';
$I['parts']['ATag_end'] = '';
$I['parts']['title'] = $I['linkHREF']['HREF'];
return $I;
}
}
?>
然后将HMENU的IProcFunc属性设置为指向此用户函数
lib.mainMenu = HMENU
lib.mainMenu.IProcFunc = UserFuncUtils->IProcFunc_plainURL
这应该可以做到。链接应该只从第二级和第三级菜单级删除,还是也从第一级菜单级删除?@cascaval只从第二级和第三级菜单级删除,还是也从第一级菜单级删除?@cascaval只从第二级和第三级菜单级删除,这样做很有效。我只需要将nav_title//title更改为just title并添加NO.doNotShowLink=1。谢谢嗯,我把nav_title//title放在这里是因为如果为给定页面设置了导航标题,您可能确实希望该项目使用导航标题。我根据您的评论更改了答案。是的,这是正确的,但如果nav_title为空,它不应该返回到标题吗?我的是空的,但没有输出标题。没错!这就是它的工作原理。也许我把语法搞错了。你能试试{field:nav_title//field:title}吗?很好,它能用。我只需要将nav_title//title更改为just title并添加NO.doNotShowLink=1。谢谢嗯,我把nav_title//title放在这里是因为如果为给定页面设置了导航标题,您可能确实希望该项目使用导航标题。我根据您的评论更改了答案。是的,这是正确的,但如果nav_title为空,它不应该返回到标题吗?我的是空的,但没有输出标题。没错!这就是它的工作原理。也许我把语法搞错了。你能试试{field:nav_title//field:title}吗?