我建议使用菜单目标页面的“媒体”字段来定义菜单中的哪些页面应该使用图像显示。媒体字段可以在页面属性的“资源”选项卡中找到。它是您问题的完美解决方案,因为它允许您为任何菜单项自由选择任何图像:
对于要显示为图像的菜单项,请使用相应菜单页面的媒体字段并选择要使用的图像。对于您希望显示为文本的所有菜单项,只需将媒体字段留空即可。
这是创建该行为的 TS 代码:
1 = TMENU
1.NO {
ATagParams = class="footer-link"
# Replace menu item text with image if defined in page tab "Resources"-->"Media"
stdWrap.override.cObject = COA
stdWrap.override.cObject{
10 = IMAGE
10.file.import = uploads/media/
10.file.import.field = media
10.altText.field = title
}
}
FAL 的 TYPO3 6.2 更新:
TYPO3 6.2 包括 FAL——一种新的媒体资源管理系统。由于页面属性的资源选项卡现在也基于 FAL,因此您需要不同的 TypoScript 方法来访问这些图像。这是一个最新的解决方案:
1 = TMENU
1 {
wrap = <ul>|</ul>
NO = 1
NO {
wrapItemAndSub = <li>|</li>
stdWrap.override.cObject = FILES
stdWrap.override.cObject {
references {
table = pages
fieldName = media
}
renderObj = IMAGE
renderObj {
file.import.data = file:current:uid
file.treatIdAsReference = 1
titleText.data = file:current:title // field:nav_title // field:title
altText.data = file:current:alternative // field:nav_title // field:title
}
# start with first image
begin = 0
# show only one image
maxItems = 1
}
}
}
该参数begin
定义应该使用多张图片中的哪一张(例如,如果您需要一张图片作为页面的标题背景,另一张作为菜单中的图标)。
如果增加maxItems
参数,将返回多个图像(如果在资源选项卡中定义了多个图像)。
如果您想将图像附加/添加到菜单文本而不是替换它,您必须更改stdWrap.override.cObject
为after.cObject
或before.cObject
在上面的代码中。