Routes Typo3自定义扩展路径增强器
我已经使用extension Builder扩展创建了一个定制的Typo3 v9.5.26扩展 我的扩展名驻留在typo3conf/ext/xyz_sortitems中,并对项目进行排序 项目具有itemid、name、date和amount属性 我的ext_localconf.php如下所示:Routes Typo3自定义扩展路径增强器,routes,typo3,typo3-9.x,typo3-extensions,Routes,Typo3,Typo3 9.x,Typo3 Extensions,我已经使用extension Builder扩展创建了一个定制的Typo3 v9.5.26扩展 我的扩展名驻留在typo3conf/ext/xyz_sortitems中,并对项目进行排序 项目具有itemid、name、date和amount属性 我的ext_localconf.php如下所示: 我的分机按预期工作 现在,当我查看显示项目排序列表(例如,按日期排序)的页面前端时,Fluid template engine会生成该列表中的项目到相应目标页面(每个页面显示一个项目)的链接,如下所
我的分机按预期工作
现在,当我查看显示项目排序列表(例如,按日期排序)的页面前端时,Fluid template engine会生成该列表中的项目到相应目标页面(每个页面显示一个项目)的链接,如下所示:
http://example.com/item
?tx_xzysortitems_sortitems%5行动%5D=showsingleitem
&tx_xzysortitems_sortitems%5b控制器%5D=sortitems
&tx_xzysortitems_sortitems%5Bitemid%5D=12345
&cHash=38a2dd43d7b0c4997c3b0ff6d4430e55
相反,我需要有指向各个页面的链接,显示一个项目,如下所示:
http://example.com/item/{itemid}/{name}
(例如。http://example.com/item/12345/ice-cream-on-toast)
由于RealURL在Typo2V9中消失了,我显然需要typo3conf/ext/xyz_sortitems/config.yaml中的路由增强器,从Typo3数据库中扩展的表中读取itemid和name,并将这些值放入指向单个项页面的URL中
不幸的是,在我能找到的所有代码示例中,大约有90%都引用了Georg Ringer基于pi的“News”扩展作为示例。这个扩展是一个非常特殊的扩展(因为它是基于pi的,并且出于许多其他原因),并且纯粹重复关于这个扩展的示例并不能让我更容易理解这个主题。我能找到的其余10%的指令,包括官方的Typo3文档(目前)提供了很好的例子,但没有提到哪个值来自何处
我主要对config.yaml的顶部部分感兴趣:
routeEnhancers:
{SecondLine}:
类型:{typedefinition}
扩展名:{extensionname}
插件:{pluginname}
命名空间:{namespace}
限制页:
-{a_page_id}
-{另一个页面{u id}
路线:
#这里的路线。。。
我需要这些值中的哪一个,以及从何处获取这些值?
到目前为止,我发现的指令通常要么根本不解释这些值,要么用“从ext_localconf.php获取这些值”来引用它们。这对我没有多大帮助,因为这没有解释config.yaml中的哪个值与ext_localconf.php中的哪个值相对应,如果相应值的语法需要小写,第一个字母大写,其余字母小写或camelcase,如果需要单引号或双引号,转义,可以包含空格,需要下划线或语法要求的任何其他内容才能有效。像“扩展名”这样的术语可能会产生误导,在我的示例中,这可能是“sortitems”、“xyz_sortitems”、“xyz.sortitems”、“XyzSortitems”或“sortitems”,仅举一些例子
如果能给出一个config.yaml代码示例,以一般方式详细解释这些值,我将不胜感激,因此,每个阅读此问题并有相同问题的人都可以像我一样理解手册,将这些宝贵的知识轻松地应用到他们自己的自定义Type3扩展中。根据您的问题,这是对这些值的解释
routeEnhancers:
{SecondLine}:
type: {typedefinition}
extension: {extensionname}
plugin: {pluginname}
namespace: {namespace}
limitToPages:
- {a_page_id}
- {another_page_id}
routes:
# routes here...
{SecondLine}的值
示例:XzySortitemsShow
增强子的唯一名称,内部用于引用
{typedefinition}的值
示例:Extbase
TYPO3附带了以下现成的路由增强器:
- 简单增强子(增强子类型“简单”)
- 插件增强器(增强器类型“Plugin”)
- Extbase插件增强器(增强器类型“Extbase”)
中介绍了更多类型
{extensionname}的值
示例:XyzSortitems
扩展名的大写字母(文件夹的名称)
扩展)
来源:typo3_src-10.4.14/sysext/extbase/Classes/Utility/ExtensionUtility.php
configurePlugin()的函数参数为
来自configurePlugin()代码的注释
*@param string$extensionName
扩展名(大写)
或扩展键(在较低的下划线中)
{pluginname}的值
示例:Sortitems
来源:typo3_src-10.4.14/sysext/extbase/Classes/Utility/ExtensionUtility.php
configurePlugin()的函数参数为
来自configurePlugin()代码的注释
{名称空间}
是extbase类型的替代类型
可以找到示例并描述插件增强器
对于Extbase插件增强器,还可以配置
通过跳过扩展和插件属性和
只需使用常规插件增强器中的namespace属性
主题外:
格奥尔格·林格的分机:新闻不是基于pi的 请注意,上面的大部分代码都是伪代码,以尽可能保持示例的通用性,同时保留最详细的变量名,以避免出现诸如“controller”或“extension”之类的不可理解的关键字。非常感谢您提供这些详细而清晰的信息!关键是我要直接写入typo3conf/sites/{sitename}/config.yaml而不是typo3conf/ext/xyz_sortitems/config.yaml.Alternate您可以将其导入typo3conf/sites/{sitename}/config.yaml:imports:-resource:'ext:xyz_sortitems/Configuration/Routes/Default.yaml'
public static function configurePlugin(
$extensionName,
$pluginName,
array $controllerActions,
array $nonCacheableControllerActions = [],
$pluginType = self::PLUGIN_TYPE_PLUGIN)
public static function configurePlugin(
$extensionName,
$pluginName,
array $controllerActions,
array $nonCacheableControllerActions = [],
$pluginType = self::PLUGIN_TYPE_PLUGIN)
* @param string $pluginName must be a unique id
for your plugin in UpperCamelCase
(the string length of the extension key
added to the length of the plugin name
should be less than 32!)