用来自TCE的信息构建HMENU



我已经为页面树上的每个后端页面扩展了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的详细参考可以在这里找到,并且可以在这里找到一个示例。

最新更新