我拥有TYPO3版本9.5.9,并通过使用以下功能添加了后端模块:
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule(
'CBWebdesign.' . $_EXTKEY,
'tools', // Make module a submodule of 'admin'
'tools', // Submodule key
'top', // Position
array(
'Settings' => 'main',
),
array(
'access' => 'admin',
'icon' => 'EXT:' . $_EXTKEY . '/Resources/Public/icons/template/tx_ext_cbwebdesigntemplate.gif',
'labels' => 'LLL:EXT:' . $_EXTKEY . '/Resources/Private/Language/locallang_cbwebdesigntemplate.xlf',
)
);
新的后端模块出现在 ADMIN TOOLS 下的菜单中。但是,下一步要查看包含模块设置字段的页面怎么办?另外,我需要保存它们并在前端使用。
对不起,我必须指定用例。我需要实现我的设置页面。我的意思是我已将模块项添加到菜单中。但是在那里实现设置的最佳方法是什么?甚至确切地说,我想在那里显示ext_conf_template文件中的扩展名配置,并在那里更改设置。
答案 0 :(得分:1)
[基于最新问题的新答案]
您在扩展名的模板文件ext_conf_template.txt
中指定的 TYPO3扩展名配置存储在TYPO3的系统级配置typo3conf/LocalConfiguration.php
中。这些配置只能由TYPO3内核管理,并且只能由具有管理权限的后端用户编辑。
您可以在TYPO3 9.5.x版的 ADMIN TOOLS➜设置➜扩展配置下找到更改这些设置的功能,如以下屏幕截图所示:
您可以使用TYPO3的API轻松访问扩展程序中的这些设置(例如,在控制器中)。例如,要访问扩展配置的值foo
:
use \TYPO3\CMS\Core\Configuration\ExtensionConfiguration;
use \TYPO3\CMS\Core\Utility\GeneralUtility;
...
$extensionKey = 'my_example';
$foo = GeneralUtility::makeInstance(ExtensionConfiguration::class)
->get($extensionKey, 'foo');
然后您可以将变量$foo
传递到视图(例如Fluid)以将其输出到用户(后端和/或前端)。
但是,请勿在自己的扩展程序中更改扩展程序配置!这不是函数或核心类ExtensionConfiguration
的目的。这种类型的配置只能使用TYPO3的安装工具进行维护(如上所示)。
查看文件typo3/sysext/core/Classes/Configuration/ExtensionConfiguration.php
中的注释。
API到
get()
实例的扩展配置选项。 [...]仅注意
->get()
是官方API,其他公共方法是底层核心内部API,通常仅由扩展管理器和安装工具使用。
还要注意,此类中的其他方法被标记为@internal
。
虽然访问和处理(甚至显示)配置不是问题,但您不应在安装工具之外对其进行更改。
根据您的特定用例,您可能需要考虑使用FlexForms来让后端用户(包括编辑者)配置扩展的某些方面-或TypoScript (如果应该限制管理员用户的配置)。对于更复杂的情况,您可以创建一个专用的数据库表(或扩展现有的表,例如be_users
)并将配置存储在此处。
答案 1 :(得分:0)
您必须实现一个名为Settings
的控制器,并在PHP类中实现一个名为mainAction()
的方法。假设您的扩展密钥为my_example
,则PHP名称空间应为:
CBWebdesign\MyExample\Controller\Settings
...并且扩展名中控制器文件的文件/路径为:
Classes/Controller/Settings.php
您还必须实现 view (例如,使用Fluid)。控制器“设置”和操作“主”的模板文件应位于:
Classes/Resources/Private/Templates/Settings/Main.html
我建议检查TYPO3随附的现有系统扩展的源代码(例如,位于typo3/sysext/extensionmanager/
的扩展管理器)。他们都遵循这种范例。