设置TYPO3 BE模块的顺序

时间:2013-05-10 06:52:11

标签: typo3 extbase

我使用这个通用代码在Extbase扩展中成功注册了BE模块和子模块,当然它可以工作:

/** Myext modules group */
Tx_Extbase_Utility_Extension::registerModule($_EXTKEY, 'myext', '', ''
    ,array(),
    array(
        'icon' => 'EXT:' . $_EXTKEY .'/ext_icon.gif',
        'access' => 'user,group',
        'labels' => 'LLL:EXT:' . $_EXTKEY . '/Resources/Private/Language/locallang_myext.xml',
   )
);

/** Myext items list mod */
Tx_Extbase_Utility_Extension::registerModule($_EXTKEY, 'myext', 'itemslist','',
    array('Item' => 'list',),
    array(
        'icon'   => 'EXT:' . $_EXTKEY . '/Resources/Public/Icons/mod_items.gif',
        'access' => 'user,group',
        'labels' => 'LLL:EXT:' . $_EXTKEY . '/Resources/Private/Language/locallang_myext_items.xml',
    )
);

我的问题是我无论如何都无法更改其排序,它始终显示在左栏的末尾(在帮助部分之后)。 registerModule方法的第4个参数无论如何都是位置,显然它不会影响主模块,只影响子模块。

那么如何在web之后立即放置Myext?在这种情况下?

我正在研究TYPO3版本:4.7

2 个答案:

答案 0 :(得分:1)

对不起,我误解了你。您的意思是您想要设置指定位置的类别。

没有官方方式,但您可以使用以下代码手动重置订单:

// add module before 'File'
if (!isset($TBE_MODULES['yourExtensionCategory']))  {
    $temp_TBE_MODULES = array();
    foreach($TBE_MODULES as $key => $val) {
        if ($key == 'file') {
            $temp_TBE_MODULES['yourExtensionCategory'] = '';
            $temp_TBE_MODULES[$key] = $val;
        } else {
            $temp_TBE_MODULES[$key] = $val;
        }
    }

    $TBE_MODULES = $temp_TBE_MODULES;
}

答案 1 :(得分:0)

以下代码将模块链接设置为指定位置:

Tx_Extbase_Utility_Extension::registerModule(
    $_EXTKEY,
    'web', // Make module a submodule of 'web'
    'yourmodulem1', // Submodule key
    'before:web_ViewpageView', // Position
    array(
        'Controller' => 'action1, action2'
    ),
    array(
        'access' => 'user,group',
        'icon' => 'EXT:' . $_EXTKEY . '/Resources/Public/Icons/icon.png',
        'labels' => 'LLL:EXT:' . $_EXTKEY . '/Resources/Private/Language/locallang_m1.xml',
    )
);

您已设置第二个参数" mainModuleName"错了,它是你的模块所属的类别。有效值为web, files, user, tools, help。第四个论点"位置"可以包含以下值after:module_idbefore:module_idtop。空均值bottom并且是默认值。要获取模块的id,只需使用您喜欢的web-developer-tool检查菜单的link-element,属性id=描述module_id。

以下是registerModule

的文档
/**
 * Registers an Extbase module (main or sub) to the backend interface.
 * FOR USE IN ext_tables.php FILES
 *
 * @param string $extensionName The extension name (in UpperCamelCase) or the extension key (in lower_underscore)
 * @param string $mainModuleName The main module key, $sub is the submodule key. So $main would be an index in the $TBE_MODULES array and $sub could be an element in the lists there. If $main is not set a blank $extensionName module is created
 * @param string $subModuleName The submodule key. If $sub is not set a blank $main module is created
 * @param string $position This can be used to set the position of the $sub module within the list of existing submodules for the main module. $position has this syntax: [cmd]:[submodule-key]. cmd can be "after", "before" or "top" (or blank which is default). If "after"/"before" then submodule will be inserted after/before the existing submodule with [submodule-key] if found. If not found, the bottom of list. If "top" the module is inserted in the top of the submodule list.
 * @param array $controllerActions is an array of allowed combinations of controller and action stored in an array (controller name as key and a comma separated list of action names as value, the first controller and its first action is chosen as default)
 * @param array $moduleConfiguration The configuration options of the module (icon, locallang.xml file)
 * @return void
 */

请注意:如果你安装了templavoila,那么"页面" -Module没有id" page",它是" web_txtemplavoilaM1",因为templavoila取代整个页面模块。

相关问题