Я новичок в TYPO3 (первый проект), и у меня есть некоторые проблемы с пониманием создания пользовательского элемента с помощью палитры цветов. В этом проекте я уже создал несколько элементов, но я использую только предопределенные поля для ввода бэкэнда. Для следующего элемента мне нужно, чтобы пользователь выбрал цвет. Я не нашел подходящий существующий элемент. Моя установка, которая не работает, находится в TCA/Overrides/tt_content.php
файл и выглядит так.
$GLOBALS['TCA']['tt_content']['item_0']=array();
$GLOBALS['TCA']['tt_content']['item_0']['label']='Color';
$GLOBALS['TCA']['tt_content']['item_0']['config']=array();
$GLOBALS['TCA']['tt_content']['item_0']['config']['type']='input';
$GLOBALS['TCA']['tt_content']['item_0']['config']['renderType']='colorpicker';
$GLOBALS['TCA']['tt_content']['item_0']['config']['size']=10;
$GLOBALS['TCA']['tt_content']['types']['wo_mitem'] = array(
'showitem' => '--palette--;LLL:EXT:cms/locallang_ttc.xlf:palette.general;general,
header;Title,
subheader;Background,
header_link;Target,
item_0;Color,
bodytext;Text;;richtext:rte_transform[flag=rte_enabled|mode=ts_css]
');
item_0
была попытка создать палитру цветов, но, похоже, это не сработало. Нужно ли что-то другое в другом файле? Первые несколько строк я добавил, чтобы определить свое поле. Есть лучший способ сделать это?
Все остальные файлы в моем пользовательском расширении работают (так как все другие пользовательские элементы работают нормально). Единственное отличие, как уже было сказано, заключается в необходимости выбора цвета в новом.
Просто для ясности посмотрите здесь другие файлы
Setup.txt:
lib.contentElement {
templateRootPaths {
100 = EXT:wostyle/Resources/Private/Template
}
}
tt_content {
wo_mitem < lib.contentElement
wo_mitem {
templateName = MItem
}
}
tt_content.php
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPlugin(
array(
'WO_Item (ItemBox, Text only)',
'wo_mitem',
'content-image'
),
'CType',
'wostyle'
);
$GLOBALS['TCA']['tt_content']['item_0']=array();
$GLOBALS['TCA']['tt_content']['item_0']['label']='Farbe';
$GLOBALS['TCA']['tt_content']['item_0']['config']=array();
$GLOBALS['TCA']['tt_content']['item_0']['config']['type']='input';
$GLOBALS['TCA']['tt_content']['item_0']['config']['renderType']='colorpicker';
$GLOBALS['TCA']['tt_content']['item_0']['config']['size']=10;
$GLOBALS['TCA']['tt_content']['types']['wo_mitem'] = array(
'showitem' => '--palette--;LLL:EXT:cms/locallang_ttc.xlf:palette.general;general,
header;Bezeichnung,
subheader;Chemische Bezeichnung,
header_link;Zielseite,
item_0;Farbe,
bodytext;Text;;richtext:rte_transform[flag=rte_enabled|mode=ts_css]
');
typo.ts
mod.wizards.newContentElement.wizardItems.wo_extra {
header = WO Elemente
after = common
elements {
wo_mitem {
iconIdentifier = content-image
title = WO_Item (ItemBox, Text only)
description = Ein Produktfeld mit Text
tt_content_defValues {
CType = wo_mitem
}
}
}
show := addToList(wo_mitem)
}
MItem.html
<div class="item-text">
<f:link.typolink parameter="{data.header_link}">
<div class="item-front">
<f:if condition="{data.subheader}!=''">
<f:then>
<div class="item-bg">
<f:format.html>{data.subheader}</f:format.html>
</div>
</f:then>
</f:if>
<div class="item-title">
<f:format.html>{data.header}</f:format.html>
</div>
</div>
<div class="item-back">
<f:format.html>{data.bodytext}</f:format.html>
</div>
</f:link.typolink>
</div>
<f:debug>{data}</f:debug>
РЕДАКТИРОВАТЬ: я использую typo3 8.7.8
Я не проверял весь ваш код, но у меня есть работающая палитра цветов на поле …
вы близки, но сразу же появляется ошибка, что ваш элемент должен быть помещен под ['columns']
…
$GLOBALS['TCA']['tt_content']['columns']['item_0']=array();
Далее вам не хватает ссылки на мастера! (вы должны принять аннотацию в квадратных скобках, которая показывает гораздо больше структуры)
это должно храниться в Configuration/TCA/Overrides/tt_content.php
: (когда вы переопределяете существующие поля, в противном случае у вас есть специальный код для элемента)
<?php
/***************
* Modify the tt_content TCA
*/
$tca = [
'columns' => [
'item_0' => [
'label' => 'Color',
'config' => [
'type' => 'input',
'size' => 10,
'eval' => 'trim',
'default' => '#ffffff',
'wizards' => [
'colorChoice' => [
'type' => 'colorbox',
'title' => 'LLL:EXT:lang/locallang_wizards:colorpicker_title',
'module' => [
'name' => 'wizard_colorpicker'
],
'dim' => '20x20',
'JSopenParams' => 'height=600,width=380,status=0,menubar=0,scrollbars=1',
],
],
],
],
],
];
$GLOBALS['TCA']['tt_content'] = array_replace_recursive($GLOBALS['TCA']['tt_content'], $tca);
С помощью webMan и некоторых поисков в интернете я мог бы немного перенести свой код.
Я добавил файл «ext_tables.sql» с содержанием
CREATE TABLE tt_content (
item_0 varchar(10) DEFAULT '' NOT NULL,
);
И изменил tt_content.php в TCA / Overrides на:
$temporaryColumns = Array(
"item_0" => Array(
'label' => 'Color',
'config' => Array(
'type' => 'input',
'renderType' => 'colorpicker',
'size' => 10
)
)
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tt_content',$temporaryColumns);
$GLOBALS['TCA']['tt_content']['types']['wo_mitem'] = array(
'showitem' => '--palette--;LLL:EXT:cms/locallang_ttc.xlf:palette.general;general,
header;Bezeichnung,
subheader;Chemische Bezeichnung,
header_link;Zielseite,
item_0;Farbe,
bodytext;Text;;richtext:rte_transform[flag=rte_enabled|mode=ts_css]
');
В сравнении с кодом webMans все еще не хватает представлений, но по крайней мере это первая рабочая версия, которую я имею, поэтому я решил показать ее, так как на мой вопрос дан ответ :).