heimrichhannot / contao-dc-multilingual-utils-bundle
此扩展包为 Contao CMS 提供了关于 terminal42/contao-DC_Multilingual 的功能。
0.8.4
2023-04-04 14:10 UTC
Requires
- php: ^7.4 || ^8.0
- contao/core-bundle: ^4.13
- heimrichhannot/contao-utils-bundle: ^2.216
- terminal42/dc_multilingual: ^4.0
README
此扩展包为 Contao CMS 提供了关于 terminal42/contao-DC_Multilingual 的功能。
特性
- 为 tl_content 添加多语言支持
- 为特定 DCA 快速激活 DC_Multilingual 支持添加快捷函数
- 为 madeyourday/contao-rocksolid-custom-elements 添加多语言支持
- 添加插入标签以生成多语言事件、新闻或常见问题解答 URL
- 注意:重写 DC_Multilingual v4+ 的 ID 处理为 v3 行为(具有合并翻译的记录的 ID 设置为翻译记录的 ID)
安装
- 通过 composer 安装:
composer require heimrichhannot/contao-dc-multilingual-utils-bundle
。 - 激活
DC_Multilingual
对tl_content
的支持(不是可选的)
/** * @Hook("loadDataContainer") */ class LoadDataContainerListener { private DcMultilingualUtil $multilingualUtil; public function __invoke(string $table): void { if ('tl_content' === $table) { $this->multilingualUtil->addDcMultilingualSupport( $table, ['de', 'en', 'pl'], 'de', [ 'text', 'rsce_data' ] ); } } }
技术细节
插入标签
以下新标签可用
使用快捷函数快速激活 DC_Multilingual
只需调用以下代码
/** * @Hook("loadDataContainer") */ class LoadDataContainerListener { private DcMultilingualUtil $multilingualUtil; public function __invoke(string $table): void { if ('tl_content' === $table) { $this->multilingualUtil->addDcMultilingualSupport( $table, // Table name ['de', 'en', 'pl'], // Supported languages 'de', // Fallback language [ // the translatable fields 'text', // add fields here... 'rsce_data' // add this if you have rocksolid custom elements (tl_content only) ], [ // options 'langColumnName', // the language field in the dca's records (you have a record for every language and this column holds which one it is) 'langPid', // this field holds the parent record of every translated record ] ); break; } } }
关于重写类的说明
为了在后台生成遵循 DC_Multilingual 创建的多语言记录的内容元素,需要重写 ContentModel
,因为 Contao 在 Controller
中直接调用核心的 ContentModel
$objRow = ContentModel::findByPk($intId);
但为了使 Contao 输出 翻译的 元素,我们需要使用自己的继承自 Terminal42\DcMultilingualBundle\Model\Multilingual\Multilingual
类的 ContentModel
。