首页 文章

使用来自TCE的信息构建HMENU

提问于
浏览
0

我已经为Page-Tree上的每个Backend-Page扩展了TCA . 其中一个新选项是“页面类型”,例如“PressPage” . 使用此扩展,我在表“pages”中有一个新的数据库字段 .

现在我将在这个文件夹下面 Build 一个包含所有页面的HMENU / TMENU .

[...]
lib.MetaPressNavigation{
    special = directory
    special.value = ID_FROM_FOLDER_WITH_PAGETYPE_PRESSPAGE
    [...]

但我不知道用typoscript实现它们 . 我希望有人能帮助我 .

谢谢 .

EDIT:

现在 - 我已经尝试了扩展的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
        }
    }
}

我用typoscript尝试了很多数据库问题,但没有任何效果 .

2 回答

  • 1

    请注意, special.value 不是内容对象,而只是一个属性 . 您正在复制内容对象( CONTENT ) . 这不起作用 .

    但它确实有 stdWrap . 因此有点像

    special.value.stdWrap.cObject < temp.MetaNavigationIds
    

    应该锻炼身体 .

    对于 renderObj.stdWrap = | ,请输入 renderObj.wrap = |, . 请记住尾随的逗号 . 这将确保您实际获得逗号分隔的uid列表 . 否则你的uid会相互打印,从而形成一个大数字 .

    在将组件一起添加之前,请单独测试每个部件 . 您应确保每个pease返回正确的数据,否则您将无法获得有效的解决方案 .

    当然 select.Where 必须是 select.where . 资本化 does 问题 .

    以下是 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 = |,
    }
    
  • 0

    如果您使用的是TYPO3 6.2,我建议您使用新的类别系统 . 您可以在TYPO3后端创建不同的类别,并将这些类别分配给您的页面 .

    有了这个,你可以创建一个HMENU / TMENU,如下所示:

    20 = HMENU
    20 {
        special = categories
        special.value = 1,2
        1 = TMENU
        1.NO {
                ...
        }
    }
    

    如果您不使用TYPO3 6.2或不想使用类别系统,您可以使用 userfunction 返回与您的"Page-Type"匹配的页面 .

    HMENU / TMENU TypoScript如下所示 .

    lib.leftmenu.20 = HMENU
    lib.leftmenu.20.special = userfunction
    lib.leftmenu.20.special.userFunc = user_myspecialmenu_pi1->getPressPages
    

    上面的TypoScript只是一个例子,你需要自己编写 userfunction 代码 .

    特殊属性 userfunction 的详细参考可用here,可以找到一个示例here .

相关问题