Просмотр полной версии : FlexForms как Content Element
Столкнулся с такой проблемой:
Хочу использовать FlexForms как ContentElement, но ничего рабочего не выходит.
Использование FlexForms через "Insert plugin" не вызывает трудностей, но когда пытаюсь использовать FlexForms как CType ничего не выходит. При этом добавляется новый контент элемент, но флексформа не рендерится. А рендерятся элементы button и header.
Я подозреваю что проблема в этом:
Для использования FlexForms как плагина используется функция: t3lib_extMgm::addPlugin(array('LLL:EXT:myFlexExt/locallang_db.xml:tt_content.CType_pi1', $_EXTKEY.'_pi1'),'list_type');
а для использования FlexForms как CType элемента используется функция:
t3lib_extMgm::addPlugin(array('LLL:EXT:myFlexExt/locallang_db.xml:tt_content.CType_pi1', $_EXTKEY.'_pi1'),'CType');
и в таком случае интерфейс описывается в таком виде:
$TCA['tt_content']['types'][$_EXTKEY.'_pi1']['showitem']='CType;;4;button;1-1-1, header;;3;;2-2-2, ';
Вопрос: Может кто-то сталкивался с такими проблемами? Как добавить/преобразовать xml к такому виду?
В вашем посте сплошная мешанина.
Статический метод addPlugin добавляет в TCA и TS нужные для отображения плагина (в бекенде и фронтэнде соответственно) определения. Плагин при этом может использовать флексформы, а может их и не использовать.
Флексформа же подгружается методом addPiFlexFormValue.
Опишите, что у вас не работает - не добавляется новый элемент в CType или не рендерится флексформа?
В вашем посте сплошная мешанина.
Статический метод addPlugin добавляет в TCA и TS нужные для отображения плагина (в бекенде и фронтэнде соответственно) определения. Плагин при этом может использовать флексформы, а может их и не использовать.
Флексформа же подгружается методом addPiFlexFormValue.
Опишите, что у вас не работает - не добавляется новый элемент в CType или не рендерится флексформа?
Элемент добавляется, а вот флексформа не рендерится. А если модуль вставлять как плагин, то форма рендерится. Отсюда можно предположить, что XML валидный.
Согласно тца, при вашем тца-типе рендерятся поля button и header и несколько палитр.
Какое из них является флексформой?
Попробую догадаться, что флексформа - это поле pi_flexform. В таком случае, его нужно добавить в список рендерящихся полей, и, возможно, сконфигурировать.
Согласно тца, при вашем тца-типе рендерятся поля button и header и несколько палитр.
Какое из них является флексформой?
Попробую догадаться, что флексформа - это поле pi_flexform. В таком случае, его нужно добавить в список рендерящихся полей, и, возможно, сконфигурировать.
Догадка действительно верна.
Привожу полный текст ext_tables.php:
<?php
if (!defined ('TYPO3_MODE')) die ('Access denied.');
t3lib_div::loadTCA('tt_content');
$TCA['tt_content']['types']['list']['subtypes_excludelist'][$_EXTKEY.'_pi1']='layout,select_key,pages,recursive,CType,header,f e_group,list_type';
$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY.'_pi1']='pi_flexform';
$TCA['tt_content']['types'][$_EXTKEY.'_pi1']['showitem']='CType;;4;button;1-1-1, header;;3;;2-2-2, ';
t3lib_extMgm::addPiFlexFormValue($_EXTKEY.'_pi1', 'FILE:EXT:myFlexExt/flexform_ds_pi1.xml');
t3lib_extMgm::addPlugin(array('LLL:EXT:myFlexExt/locallang_db.xml:tt_content.CType_pi1', $_EXTKEY.'_pi1'),'CType');
?>
Что даёт
$TCA['tt_content']['types'][$_EXTKEY.'_pi1']['showitem']='CType;;4;button;1-1-1, header;;3;;2-2-2, pi_flexform;;;;1-1-1 ';
?
В частности то что Вы и написали:
"Согласно тца, при вашем тца-типе рендерятся поля button и header и несколько палитр."
Но без этой строки не выводится никаких элементов вообще.
На сколько я понимаю, то мне каким-то образом нужно добавить мою флексформу в $TCA['tt_content']['types'][$_EXTKEY.'_pi1']['showitem']
Я правильно понимаю?
Да, вы правильно понимаете. Нужно добавить pi_flexform к вашему type. Что я и сделал в коде постом выше...
Большое спасибо за помощь.
Обязательно попробую сделать это.
Btw, хотель бы побольше узнать о синтаксисе данный строки
"CType;;4;button;1-1-1, header;;3;;2-2-2, pi_flexform;;;;1-1-1 ";
А именно где можно узнать список всех элементов и что обозначают эти цифры... Также интересно было бы узнать о разделителях и спец.символах.
http://typo3.org/documentation/document-library/core-documentation/doc_core_api/4.0.0/view/4/2/#id2820846 :
Configuration of the displayed order of fields in TCEforms.
The whole strings is divided by tokens according to a - unfortunately - complex ruleset.
1. #1: Overall the value is divided by a "comma" ( , ). Each part represents the configuration for a single field.
2. #2: Each of the field configurations is further divided by a semi-colon ( ; ). Each part of this division has a special significance.
1.
Part 1: Fieldname reference (Required!)
2.
Part 2: Alternative fieldlabel (LS)
3.
Part 3: Palette number (referring to an entry in the "palettes" section).
4.
Part 4: Special configuration (splitted by colon ( : )), eg. 'nowrap' and 'richtext[(list of keys or *)]' (see section later)
5.
Part 5: Form style codes (see section later)
Notice: Instead of a real fieldname you can theoretically insert "--div--" and you will have a divider line shown. However this is not rendered by default so it has no significance.
Another special fieldname, '--palette--', will insert a link to a palette (of course you need to specify a palette and title then...)
Огромное спасибо... Обязательно ознакомлюсь...
Спасибо за оказанную помощь...
Возможно вы знаете как добавить новую запись сюда:
http://z0r1k.crimea.ua/photo/typo3/new_record.png
??
Я хочу чтобы моя флекформа была доступна из этого меню.
Я так понимаю, это обычная страница? Тогда вам поможет строка
t3lib_extMgm::allowTableOnStandardPages( $tablename );
в вашем ext_tables.php
это не совсем то что мне нужно...
я хочу чтобы у меня добавился в этот лист некий элемент myFlex, при нажатии на который, у меня бы создавался контент элемент с моей флекс формой.
btw, я использую поле myFlexItems в таблице tt_content. Думаю эта функция мне не поможет, т.к. таблица tt_content на этой странице наверное уже представленна.
Pavel Antonov
27.04.2007, 22:31
В меню вставки присутствуют только таблицы, а выбор флекс-формы будет следом в визарде выбора типа контента.
Разве этого не достаточно?
На сколько я понимаю, в эту функцию в качестве параметра нужно передать имя таблицы из базы данных, так?
т.е. t3lib_extMgm::allowTableOnStandardPages("tt_content");
но разве таблица "tt_content" уже не представленна на этой странице? Разве эта строка возымеет нужный мне эффект?
btw, у меня просто в таблице "tt_content" добавленно моё поле - "MyFlex"
Да, вы правы, уже представлена. Поэтому вам придется пользоваться визардом, который идет после выбора "pagecontent".
Понятно.
Спасибо за информацию.
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot