设置TYPO3 BE模块的顺序

设置TYPO3 BE模块的顺序,typo3,extbase,Typo3,Extbase,我在Extbase扩展中成功注册了BE模块和子模块,使用了以下通用代码,当然它可以工作: /** Myext modules group */ Tx_Extbase_Utility_Extension::registerModule($_EXTKEY, 'myext', '', '' ,array(), array( 'icon' => 'EXT:' . $_EXTKEY .'/ext_icon.gif', 'access' => 'u

我在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个参数是position,显然它不影响主模块,只影响子模块

那么,如何将MyText放在
web
之后呢?在这种情况下


我正在处理Type3版本。
4.7

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

Tx\u Extbase\u实用工具\u扩展::registerModule(
$\u EXTKEY,
“web”,//使模块成为“web”的子模块
'yourmodulem1',//子模块密钥
'before:web_ViewpageView',//位置
排列(
“控制器”=>“操作1,操作2”
),
排列(
“访问”=>“用户,组”,
“icon'=>“EXT:”.$\u EXTKEY./Resources/Public/Icons/icon.png”,
“labels'=>“LLL:EXT:”.$\u EXTKEY./Resources/Private/Language/locallang\u m1.xml”,
)
);
您将第二个参数“mainModuleName”设置错误,它是模块所属的类别。有效值为
web、文件、用户、工具、帮助
。第四个参数“position”可以有以下值:module_id之后的
、module_id
之前的
顶部的
。空表示
底部
,为默认值。要获得模块的id,只需使用您喜爱的web developer工具检查菜单的link元素,属性
id=
描述模块id

以下是注册模块的文档:

/**
*将Extbase模块(主模块或子模块)注册到后端接口。
*用于ext_tables.php文件
*
*@param string$extensionName扩展名(大写)或扩展键(小写)
*@param string$mainModuleName是主模块键,$sub是子模块键。因此,$main将是$TBE_MODULES数组中的一个索引,$sub可以是列表中的一个元素。如果未设置$main,将创建一个空白的$extensionName模块
*@param string$subModuleName子模块键。如果未设置$sub,则会创建一个空白的$main模块
*@param string$position可用于设置$sub模块在主模块现有子模块列表中的位置$位置具有以下语法:[cmd]:[submodule key]。cmd可以是“after”、“before”或“top”(默认为空)。如果“after”/“before”,则子模块将在现有子模块之后/之前插入,如果找到[submodule key]。如果未找到,则显示列表的底部。如果为“顶部”,则模块将插入子模块列表的顶部。
*@param array$controllerActions是存储在数组中的控制器和操作的允许组合的数组(控制器名称作为键,操作名称的逗号分隔列表作为值,第一个控制器及其第一个操作被选为默认值)
*@param array$moduleConfiguration模块的配置选项(图标,locallang.xml文件)
*@返回无效
*/

请注意:如果您安装了templavoila,“页面”-模块的id不是“页面”,而是“web_txtemplavoilaM1”,因为templavoila替换了整个页面模块。

很抱歉,我误解了您的意思。您是指您自己想要设置指定位置的类别

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

//在“文件”之前添加模块
如果(!isset($TBE_模块['yourExtensionCategory'])){
$temp_TBE_MODULES=array();
foreach($key=>$val){
如果($key=='file'){
$temp_TBE_MODULES['yourExtensionCategory']='';
$temp_TBE_模块[$key]=$val;
}否则{
$temp_TBE_模块[$key]=$val;
}
}
$TBE_模块=$temp_TBE_模块;
}

这正是我根据DAM代码所做的:)无论如何,感谢您的确认!