Просмотр полной версии : TCA - --palette-- и 3-3-4;;;
Добрый день.
В TCA как создать вкладки (тады) все понятно - это --div-- и нужно их разрешить: dividers2tabs
Но можно еще ставить после имени поля "цифра-цифра-цийра". 3-3-3
Что они обозначают и какие варианты есть.
А также может ли palette еще что нибудь делать, кроме того как 1) выставлять поля в ряд и 2) позволять вносить его в "показать доп. настройки"?
А также, что за UserFunc - для TCA
и что с ее помощью можно делать?
--
Спасибо.
dmartynenko
25.11.2012, 15:55
В TCA как создать вкладки (тады) все понятно - это --div-- и нужно их разрешить: dividers2tabs
Но можно еще ставить после имени поля "цифра-цифра-цийра". 3-3-3
Что они обозначают и какие варианты есть.
Это каким-то образом должно влиять на визуальный вид блока с полем. Но по моему в последних версия просто игнорируется.
А также может ли palette еще что нибудь делать, кроме того как 1) выставлять поля в ряд и 2) позволять вносить его в "показать доп. настройки"?
Об этом хорошо в документации написано.
Например в TCA в блоке types у вас поле country_id;;2;;2-2-2, но(!) нет полей region_id, town_id. Тут второй параметр "2" - это ссылка на блок в palettes.
Дальше в palettes добавляете
'palettes' => array (
'2' => array('showitem' => 'region_id, town_id'),
В результате поля region_id, town_id будут выводиться в одном блоке в полем country_id в одну линии ниже country_id.
Ну а то будут ли они выведены в карточке или на верхней панели зависит от текущих настроек TYPO3. Но в последних версиях кажется в верхнюю панель поля уже не выводятся.
А также, что за UserFunc - для TCA
и что с ее помощью можно делать?
Можно вывести свой элемент управления. Например в tt_news так выводится дерево категорий:
'category' => Array (
'exclude' => 1,
# 'l10n_mode' => 'exclude', // the localizalion mode will be handled by the userfunction
'label' => 'LLL:EXT:tt_news/locallang_tca.xml:tt_news.category',
'config' => Array (
'type' => 'select',
'form_type' => 'user',
'userFunc' => 'tx_ttnews_TCAform_selectTree->renderCategoryFields',
Вот тут как раз в документации практически ничего нет на этот счет. Надо смотреть как в других экстах это делается (DAM например, tt_news)
С UserFunc - в config TCA для поля таблицы - здесь все понятно...
НО
Где - то видел что UserFunc можно применять к самой TCA[таблицы]
или такого не существует...:confused:
dmartynenko
26.11.2012, 14:14
TCA это просто PHP массив.
Он идет отдельный файлом и потом включается в общий кэшируемый PHP файл со всеми TCA всех расширений. И в этом виде подгружается при ядром при каждом FE обращении.
Следовательно если это просто PHP код, то вы в него можете добавить любые функции, которые делают то что вам нужно.
Например у меня после описания TCA есть такое:
/*
* geography
*/
if (t3lib_extMgm::isLoaded('uedb_region')) {
$TCA['tx_uedbnews_news']['columns']['country_id'] = Array (
'exclude' => 0,
'label' => 'LLL:EXT:uedb_news/locallang_db.xml:tx_uedbnews_news.country_id',
'config' => Array (
и такое (использование возможностей расширения DAM)
/*
* dam images
*/
$TCA['tx_uedbnews_news']['columns']['tx_dam_thumbimage'] = txdam_getMediaTCA('image_field', 'tx_dam_thumbimage');
$TCA['tx_uedbnews_news']['columns']['tx_dam_thumbimage']['config']['size'] = 1;
$TCA['tx_uedbnews_news']['columns']['tx_dam_thumbimage']['config']['maxitems'] = 1;
$TCA['tx_uedbnews_news']['columns']['tx_dam_thumbimage']['label'] = 'LLL:EXT:uedb_news/locallang_db.xml:tx_uedbnews_news.tx_dam_thumbimag e';
И есть еще три вопроса вопроса по TCA
1. Есть событие перезагрузки страницы в случае изменения значения какого-то поля, которое можно задать в TCA. Но из того, что знаю, его можно назначить (прикрепить) только к одному полю... Возможно ли его назначить к нескольким полям?
2. При работе с config type inline новые созданные записи пишутся по pid в тоже хранилище записей, что и основная запись... Возможно ли изменить pid-сохранения записи, но в другое хранилище. Hooki очень бы не хотелось использовать...
Как понимаю - это параметр: inlineFirstPid - не работает, да это и не он!
3. Насколько грамотно в качестве uid-использовать строки (varchar), а не числовые значений (int), или это безобразие и typo3 также думает?
dmartynenko
26.11.2012, 16:08
1. Нет, только одно поле может быть задано как "type" записи. И именно его изменение вызывает перезагрузку формы.
А вот FlexForm позволяет сделать это для любых/нескольких полей http://www.t3node.com/blog/dynamic-forms-and-types-with-typo3-flexforms/
Но в базу как известно FF сохраняется как текст в XML, а не по отдельным полям.
2. Не знаю, не стояла такая задача. Если настройки явно не описаны в доках, значит нет такой возможности. Да и зачем?
3. Значения uid ядро не присваивает. Расчитывает на autoincrement. А его понятное дело для char нет. Значит не будет работать. Но ничто не мешает вам использовать свои "скрытые" от BE таблицы для собственных нужд с любыми ключами. Например RealURL такие создает для своих кэшей.
Спасибо за ответ...
От 2 и 3 тогда можно отказаться.
А вот с первых очень обидно!
Flex из-за XML и не подходит...
Все таки не понятно, что делает:
3-2-1; 1-1-1 - может у кого есть опыт игры с этими числами.
Есть еще и такое : keywords;;;;2-2-2,sys_language_uid;;1;;3-3-3,
Ставлю одно, что-то вроде бы что-меняется.
Ставлю другое, что-то не меняется...
Может это отступы верх, лево, низ?
Здесь нашел, но не пойму о чем говорит автор по данному вопросу:
http://www.typo3lexikon.de/typo3-tutorials/tipps-und-tricks/tca-und-diese-1-1-1.html
Наверное ответ нашел:
http://stackoverflow.com/questions/8804594/typo3-tca-array-typeskey-section
showitem consists of fields separated by commas (,). Each field is defined by 1-5 arguments separated by semicolons (;). The first (mandatory) argument is the field name that can be followed by another 4 extra arguments. The last argument that you are referring to ("2-2-2") is a form style code which is divided by a hyphen (-) into colorscheme, stylescheme and borderscheme.
http://typo3.org/documentation/document-library/core-documentation/doc_core_tca/4.6.0/view/1/6/#id2633668
НО, пробовал и так и сяк - работает самым нормальным образом только 1-1-1!
exit();
dmartynenko
30.11.2012, 12:46
В doc_core_tca ищете раздел "Appendix A – Skinning considerations", а там разбираетесь с "Visual style of TCEforms".
Спасибо...
Теперь окончательно разобрался...
Возможно ли добавлять условия WHERE для config type group DB?
"type" => "group",
"internal_type" => "db",
"allowed" => "tx_table",
"size" => 1,
"minitems" => 0,
"maxitems" => 1,
Или условия работают только для select-типа?
Что это за Label функции для TCA?
$TCA["..."] = array (
...
"ctrl" => array (
'title' => 'LLL:EXT:...',
'label' => 'ersterlabel',
'label_alt' => 'zweiterlabel, dritterlabel',
'label_alt_force' => 1,
label_userFunc
...
);
Оказывается в TCA - можно делать Алерт сообщение ни только по полям типа данных...
//Позволяет выводить сообщение к любым полям, значение которы меняется
$TCA['pages']['ctrl']['requestUpdate'] .= ',tx_realurl_exclude';
Случайно наткнулся в исходниках realurl:)
Единственное - нужно значения (названия колонок) вводить через запятую и без пробелов.
Ах, как все просто оказалось...:mad:
dmartynenko
25.03.2013, 13:40
Не знал. Век живи, век учись.
Еще интересная штука:
['columns']['name']['displayCond'] = 'FIELD:sys_language_uid:>:0';
'displayCond' => 'FIELD:module:=:z_filter', //данным условием определяем, что показывать если только выбрана страница как фильтр
Позволяет задавать условия на появление поля...
А так можно сделать выборку из БД, с автоматической подстановкой условий
(удаленность в корзину|старт|энд тайм, спрятаность):
$where = " mod = 'ext_name' " . t3lib_BEfunc::deleteClause('pages') . t3lib_BEfunc::BEenableFields('pages');
$result = $GLOBALS['TYPO3_DB'] -> exec_SELECTquery("*", "pages", $where, false, 'sorting');
Функции:
deleteClause
BEenableFields - очень полезные
Еще инересная штука:
http://www.typo3-profibuch.de/code-listings/zweite-auflage/kapitel-7/
'enabledControls' => array(
'info' => false,
'new' => false,
'dragdrop' => false,
'sort' => true,
'hide' => true,
'delete' => true,
'localize' => false,
),
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot