2017-02-11 18 views
0

отсутствующим Я использую 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 переопределения тег (теперь полностью работоспособен)

Configuration/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 переопределение новости ограничить теги к языку

Конфигурация/TCA/Переопределения/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) Четвертый этап: добавить локализацию в TCA из tx_news_domain_model_tag (добавил ответ Павла к шагу 2, это не хватает больше)

следующее должно быть добавлено , но я не знают, как ... (от собственного расширения, я, очевидно, можно добавить его непосредственно в «новости»)

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

ответ

1

Пробовали ли вы просто переопределить его в массиве TCA внутри вашего Overrides/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

Исправлено. Спасибо. –