TYPO3:tx-news - 本地化标签,呈现多语言标签,缺少步骤
TYPO3: tx-news - localize tag, render tags multilingual, missing step
我在多语言站点中使用 tx-news,需要将标签本地化(从自定义扩展编写脚本):
1)第一步:将字段添加到table:
ext_tables.sql :
#
# Extend table structure of table 'tx_news_domain_model_tag'
#
CREATE TABLE tx_news_domain_model_tag (
sys_language_uid int(11) DEFAULT '0' NOT NULL,
l10n_parent int(11) DEFAULT '0' NOT NULL,
l10n_diffsource mediumblob
);
2) 第二步:TCA 覆盖标签 (现在完全正常,添加了 'allLanguages' 选择,如 ralph 所建议)
Configuration/TCA/Overrides/tx_news_domain_model_tag.php
<?php
defined('TYPO3_MODE') or die();
/**
* Add multilingual to tx_news_domain_model_tag
*/
$temporaryColumns = [
'sys_language_uid' => [
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.language',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'special' => 'languages',
'items' => [
[
'LLL:EXT:lang/locallang_general.xlf:LGL.allLanguages',
-1,
'flags-multiple'
],
],
'default' => 0,
],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.l18n_parent',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['', 0],
],
'foreign_table' => 'tx_news_domain_model_tag',
'foreign_table_where' => 'AND tx_news_domain_model_tag.pid=###CURRENT_PID### AND tx_news_domain_model_tag.sys_language_uid IN (-1,0)',
],
],
'l10n_diffsource' => [
'config' => [
'type' => 'passthrough',
],
],
];
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
'tx_news_domain_model_tag',
$temporaryColumns
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette(
'tx_news_domain_model_tag',
'paletteCore',
'sys_language_uid, l10n_parent, l10n_diffsource',
'before:hidden'
);
/* ADDED MISSING SYNTAX AFTER PAUL'S ANSWER */
$GLOBALS['TCA']['tx_news_domain_model_tag']['ctrl']['languageField'] = 'sys_language_uid';
$GLOBALS['TCA']['tx_news_domain_model_tag']['ctrl']['transOrigPointerField'] = 'l10n_parent';
$GLOBALS['TCA']['tx_news_domain_model_tag']['ctrl']['transOrigDiffSourceField'] = 'l10n_diffsource';
3) 第三步:TCA 覆盖新闻以将标签限制为语言
Configuration/TCA/Overrides/tx_news_domain_model_news.php
/**
* Add This to the original **`tags`** column
*/
...
'foreign_table_where' => ' AND tx_news_domain_model_tag.sys_language_uid IN (-1, 0) ORDER BY tx_news_domain_model_tag.title',
...
4) 第四步:将本地化添加到 tx_news_domain_model_tag 的 TCA(添加了保罗对步骤 2 的回答,这不再丢失)
应该添加以下内容但我不知道如何...(来自自定义扩展,我显然可以直接在'news'中添加它)
'ctrl' => [
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'transOrigDiffSourceField' => 'l10n_diffsource'
],
您是否尝试过像这样在 Overrides/tx_news_domain_model_tag.php 中的 TCA 数组中覆盖它?
$GLOBALS['TCA']['tx_news_domain_model_tag']['ctrl']['languageField'] = 'sys_language_uid';
$GLOBALS['TCA']['tx_news_domain_model_tag']['ctrl']['transOrigPointerField'] = 'l10n_parent';
$GLOBALS['TCA']['tx_news_domain_model_tag']['ctrl']['transOrigDiffSourceField'] = 'l10n_diffsource';
...只是一个小补充。要在语言选择器中获得选项 "All",您必须像这样更改 Configuration/TCA/Overrides/tx_news_domain_model_tag.php 中的数组 sys_language_uid
...
'sys_language_uid' => [
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.language',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'special' => 'languages',
'items' => [
[
'LLL:EXT:lang/locallang_general.xlf:LGL.allLanguages',
-1,
'flags-multiple'
],
],
'default' => 0,
],
],
...
我在多语言站点中使用 tx-news,需要将标签本地化(从自定义扩展编写脚本):
1)第一步:将字段添加到table:
ext_tables.sql :
#
# Extend table structure of table 'tx_news_domain_model_tag'
#
CREATE TABLE tx_news_domain_model_tag (
sys_language_uid int(11) DEFAULT '0' NOT NULL,
l10n_parent int(11) DEFAULT '0' NOT NULL,
l10n_diffsource mediumblob
);
2) 第二步:TCA 覆盖标签 (现在完全正常,添加了 'allLanguages' 选择,如 ralph 所建议)
Configuration/TCA/Overrides/tx_news_domain_model_tag.php
<?php
defined('TYPO3_MODE') or die();
/**
* Add multilingual to tx_news_domain_model_tag
*/
$temporaryColumns = [
'sys_language_uid' => [
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.language',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'special' => 'languages',
'items' => [
[
'LLL:EXT:lang/locallang_general.xlf:LGL.allLanguages',
-1,
'flags-multiple'
],
],
'default' => 0,
],
],
'l10n_parent' => [
'displayCond' => 'FIELD:sys_language_uid:>:0',
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.l18n_parent',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['', 0],
],
'foreign_table' => 'tx_news_domain_model_tag',
'foreign_table_where' => 'AND tx_news_domain_model_tag.pid=###CURRENT_PID### AND tx_news_domain_model_tag.sys_language_uid IN (-1,0)',
],
],
'l10n_diffsource' => [
'config' => [
'type' => 'passthrough',
],
],
];
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
'tx_news_domain_model_tag',
$temporaryColumns
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette(
'tx_news_domain_model_tag',
'paletteCore',
'sys_language_uid, l10n_parent, l10n_diffsource',
'before:hidden'
);
/* ADDED MISSING SYNTAX AFTER PAUL'S ANSWER */
$GLOBALS['TCA']['tx_news_domain_model_tag']['ctrl']['languageField'] = 'sys_language_uid';
$GLOBALS['TCA']['tx_news_domain_model_tag']['ctrl']['transOrigPointerField'] = 'l10n_parent';
$GLOBALS['TCA']['tx_news_domain_model_tag']['ctrl']['transOrigDiffSourceField'] = 'l10n_diffsource';
3) 第三步:TCA 覆盖新闻以将标签限制为语言
Configuration/TCA/Overrides/tx_news_domain_model_news.php
/**
* Add This to the original **`tags`** column
*/
...
'foreign_table_where' => ' AND tx_news_domain_model_tag.sys_language_uid IN (-1, 0) ORDER BY tx_news_domain_model_tag.title',
...
4) 第四步:将本地化添加到 tx_news_domain_model_tag 的 TCA(添加了保罗对步骤 2 的回答,这不再丢失)
应该添加以下内容但我不知道如何...(来自自定义扩展,我显然可以直接在'news'中添加它)
'ctrl' => [
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'transOrigDiffSourceField' => 'l10n_diffsource'
],
您是否尝试过像这样在 Overrides/tx_news_domain_model_tag.php 中的 TCA 数组中覆盖它?
$GLOBALS['TCA']['tx_news_domain_model_tag']['ctrl']['languageField'] = 'sys_language_uid';
$GLOBALS['TCA']['tx_news_domain_model_tag']['ctrl']['transOrigPointerField'] = 'l10n_parent';
$GLOBALS['TCA']['tx_news_domain_model_tag']['ctrl']['transOrigDiffSourceField'] = 'l10n_diffsource';
...只是一个小补充。要在语言选择器中获得选项 "All",您必须像这样更改 Configuration/TCA/Overrides/tx_news_domain_model_tag.php 中的数组 sys_language_uid ...
'sys_language_uid' => [
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.language',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'special' => 'languages',
'items' => [
[
'LLL:EXT:lang/locallang_general.xlf:LGL.allLanguages',
-1,
'flags-multiple'
],
],
'default' => 0,
],
],
...