如何仅在某些项目中对TMENU应用不同的换行?

时间:2013-09-19 15:58:15

标签: typo3 typoscript

在TMENU中,我想仅对某些页面应用特殊包装。

所以

Home
-- This
-- That
-- Such
-----A
-----Thing

只有页面“Such”会有这个换行(带有一个特殊的类或wrapItemsAndSub的图标)。

理想情况下,这可以从页面树/ CMS中完成。或者通过pid。 但我认为不可能以简单的方式进入TMENU? OptionSplit不是一个选项,因为它只有几个特殊页面。

可以这样做吗?

2 个答案:

答案 0 :(得分:4)

您必须在此处使用CASE对象并将其应用于具有stdWrap的property / wrap。 看看这个例子。

NO {
  wrapItemAndSub.cObject  = CASE
  wrapItemAndSub.cObject  {
                key.field = uid

                default = TEXT
                default.value = <li>|</li>

                // for page uid = 99
                99 = TEXT
                99.value = <li class="special">|</li>

            }
}

您可以将这种方式用于具有stdWrap的每个元素。

答案 1 :(得分:2)

顺便说一句:正如pgampe所说,当你选择类名时,它可以通过一些复选框或甚至下拉列表来实现更加通用。

这是复选框的简短教程。在本教程中,我假设扩展名为“t3_local”

第1步

在ext_tables.sql文件中添加:

CREATE TABLE pages (
    tx_t3local_special tinyint(4) DEFAULT '0' NOT NULL,
}

然后进入Extension Manager进入您的扩展并更新数据库以在pages表中创建新字段。

第2步

在ext_tables.php文件中添加:

$tempColumns = Array(
    'tx_t3local_special' => Array(
        'exclude' => 1,
        'label' => 'Some label for special',
        'config' => Array(
            'type' => 'check',
            'default' => 0
        )
    )

);

t3lib_div::loadTCA('pages');
t3lib_extMgm::addTCAcolumns('pages', $tempColumns, 1);
t3lib_extMgm::addToAllTCAtypes('pages', 'tx_t3local_special');

现在可以在后端使用了。清除TYPO3缓存后,您应该会看到页面属性中的复选框。现在我们只能用它在前端构建我们的菜单。

第3步

现在一切都取决于你想用这个开关做什么。假设你想为 li 添加一个类,这里​​有一个小技巧,如何允许使用几个这样的开关来累积不同的类。

NO.wrapItemAndSub.stdWrap {
   prepend.cObject = LOAD_REGISTER
   prepend.cObject {

     special1class.cObject = TEXT
     special1class.cObject {
        value = special1-class
        if.isTrue.field = tx_t3local_special
      }
     special2class.cObject = TEXT
     special2class.cObject {
        value = special2-class
        if.isTrue.field = tx_t3local_special2
      }

   }
   append = TEXT
   append.value = <li class="clearfix {register:special1class} {register:special2class}">/li>
   append.insertData = 1
}

注意

如您现在知道如何将切换添加到页面属性,您还可以使用它们来关闭/打开页面上的某些功能。例如,我使用这样的开关来打开/关闭页面的面包屑。在这个例子中,if复选框被检查off.g的面包屑。

为此,您必须记住将字段名称添加到typo3conf / localconf.php文件(或6.x中的LocalConfiguration.php)

$TYPO3_CONF_VARS['FE']['addRootLineFields'] .= ',tx_t3local_breadcrumb';

和TS:

lib.breadcrumb = COA
lib.breadcrumb.stdWrap.if.isFalse.data = page:tx_t3local_breadcrumb
lib.breadcrumb {
...
...
...
}