我已经为页面树上的每个后端页面扩展了TCA。其中一个新选项是"页面类型",例如"PressPage"。有了这个扩展,我有一个新的数据库字段在表"页"。
现在我将建立一个HMENU/TMENU与所有页面,在这个文件夹下。
[...]
lib.MetaPressNavigation{
special = directory
special.value = ID_FROM_FOLDER_WITH_PAGETYPE_PRESSPAGE
[...]
但是我不知道用排字来实现它们。我希望任何人都能帮助我。
谢谢。编辑:
现在-我已经尝试了一个扩展的TCA。对于任何用户来说,为这个项目页面做一些配置都很容易。用户可以在一个特殊的选项卡中通过复选框设置一个值。
我尝试从数据库中获取页面,使用这个特殊的配置-任何页面在数据库中的列"tx_meta_pagetype"上的值为9。我需要这个页面的UID来构建META-Navigation。它将是完整的功能-当我给一个硬编码的uid,但我需要这个动态。
这是我的尝试,从数据库中获取UID:
temp.MetaNavigationIds = CONTENT
temp.MetaNavigationIds{
table = pages
select.Where = tx_meta_pagetype = 9 #tx_meta_pagetype is set from the TCA
renderObj = TEXT
renderObj.field = uid
renderObj.stdWrap = |
}
lib.MetaNavigation = HMENU
lib.MetaNavigation{
special = directory
special.value < temp.MetaNavigationIds #the UID of configured page, that i need for the menu
1 = TMENU
1 {
wrap = <ul> | </ul>
NO{
wrapItemAndSub = <li> | </i>
wrapItemAndSub.insertData = 1
allStdWrap.insertData = 1
}
}
}
我已经尝试了很多数据库问题与排版,但没有工作。
注意,special.value
不是一个内容对象,而只是一个属性。您正在将内容对象(CONTENT
)复制到它的位置。
然而,它确实有stdWrap
。比如
special.value.stdWrap.cObject < temp.MetaNavigationIds
应该行得通。
对于renderObj.stdWrap = |
,输入renderObj.wrap = |,
。请注意后面的逗号。这将确保你得到一个逗号分隔的id列表。否则你的id就会一个接一个地打印,从而形成一个大数字。
在将组件组合在一起之前,请单独测试每个部件。您应该确保每个请求都返回正确的数据,否则您将永远无法得到一个有效的解决方案。
当然select.Where
必须是select.where
。大写不影响
下面是CONTENT
的一个工作示例:
page.10 = CONTENT
page.10 {
table = pages
select {
where = doktype = 199
recursive = 99
# Needs to be your root page uid
pidInList = 1
}
renderObj = TEXT
renderObj.field = uid
renderObj.wrap = |,
}
如果您正在使用TYPO3 6.2,我建议您使用新的分类系统。您可以在TYPO3后端创建不同的类别,并将这些类别分配给您的页面。
这样,你就可以创建一个HMENU/TMENU,如下所示:<>之前20 = hmenu20 {特殊=类别特别的。值= 1,21 = tmenu1.没有{…}}之前
如果你不使用TYPO3 6.2或者不想使用分类系统,你可以使用userfunction
来返回与你的"Page-Type"匹配的页面。
HMENU/TMENU TypoScript将如下所示:
<>之前lib.leftmenu。20 = hmenulib.leftmenu.20。Special = userfunctionlib.leftmenu.20.special。userFunc = user_myspecialmenu_pi1->getPressPages之前上面的TypoScript只是一个示例,您需要自己编写userfunction
。
关于特殊属性userfunction
的详细参考可以在这里找到,并且可以在这里找到一个示例。