2017-02-11 112 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

修正了它。謝謝。 –