b13 / uniquealiasmapper
注册用于URL增强的Mapper
Requires
- typo3/cms-core: ^9.5 || ^10.0 || ^11.0
This package is auto-updated.
Last update: 2024-09-21 20:59:12 UTC
README
TYPO3 v9提供了一些增强URL的好方法,称为“增强器”,用于添加页面URL的后缀,以及“方面”(及其特殊的“映射器”类别),在应用程序和URL之间转换特定值。
此扩展包含一个名为UniqueAlias
的新映射器。它的工作原理类似于人们从PersistedAliasMapper
所知道的,然而在使用TYPO3安装时,我们的项目通常想要
- 键唯一,即使两个记录具有相同的标题
- 所有特殊字符和小写字母
安装
通过composer req b13/uniquealiasmapper
使用它,或从TYPO3扩展存储库安装扩展uniquealiasmapper
。
一旦准备就绪,您可以在站点配置文件中配置映射器。
示例:tt_address.company
示例:将$_GET['addressid']
映射到基于tt_address
的company
字段的/address/burger-king-germany
。
routeEnhancers: AliasExample: type: Simple routePath: '/address/{partneralias}' _arguments: partneralias: addressid aspects: partneralias: type: UniqueAlias tableName: 'tt_address' aliasField: 'company' expires: '15d' uniqueConfiguration: fallbackCharacter: '-'
在tt_address
的局部ListItem.html
中,链接可以这样生成:<f:link.page pageUid="{settings.singlePid}" additionalParams="{addressid: address}">详情</f:link.page>
。
使用唯一别名映射器,URL将看起来像这样:https://example.com/my/page/address/burger-king-germany/
使用TYPO3的Core "PersistedAliasMapper",URL将看起来像这样 https://example.com/my/page/address/Burger%20King%20Germany/
。
此外,此映射器还包含一个缓存层,就像RealURL的“uniqAlias”功能在过去所做的那样。
还可以实现更复杂的路由增强器。例如,对于扩展myext
中控制器/操作的链接(Movie/show),其中uid在参数tx_myext_pi1[content]
中,而title
是tx_myext_domain_model_content
的列
routeEnhancers: MyextPlugin: type: Extbase limitToPages: - 24 extension: Myext plugin: Pi1 routes: - routePath: '/entry/{myext_title}' _controller: 'Movie::show' _arguments: myext_title: content defaultController: 'Movie::list' aspects: myext_title: type: UniqueAlias tableName: tx_myext_domain_model_content aliasField: title expires: 15d uniqueConfiguration: fallbackCharacter: '-'
待办事项
过期功能还不够,因此我们需要改进这个区域。欢迎Pull Requests。
感谢
感谢RealURL作者提供了如此好的逻辑,这为本映射器提供了灵感。此外,感谢Aspects/Mappers的创建者,感谢他们提供了创建自定义映射器和增强器的灵活和可扩展的方式。
许可
与TYPO3 Core一样,uniquealiasmapper受GPL2或更新版本的许可。有关更多详细信息,请参阅LICENSE文件。
作者和维护
uniquealiasmapper最初由Benni Mack为b13,斯图加特的一个客户项目创建。
查看我们开发的更多TYPO3扩展,这些扩展有助于我们在客户项目中创造价值。作为我们工作方式的一部分,我们专注于测试和最佳实践,以确保我们代码的长期性能、可靠性和结果。