2017-02-11 108 views
0

我用TX-消息,在一个多语种的网站,需要有标签本地化,(通过自定义扩展脚本):TX-消息:定位标签,使标签多语种,梯级缺失

1)第一步:将字段添加到表:

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覆盖标签(现已全面工作)

配置/ TCA /覆盖/ 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' 
     ], 
    ], 
    '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步,这已不再丢失)

下应加但我不知道如何...

'ctrl' => [ 
    'languageField' => 'sys_language_uid', 
    'transOrigPointerField' => 'l10n_parent', 
    'transOrigDiffSourceField' => 'l10n_diffsource' 
    ], 

回答

1

你尝试只是为了覆盖它的覆盖内的TCA阵列中(通过自定义扩展,我明明可以直接在“新闻”添加它)/ tx_news_domain_model_tag.php这样?

$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'; 
+0

谢谢,介意工作语法使用**'='**而不是**'=>'** – webMan

+0

修正了它。谢谢。 –