Вход

Просмотр полной версии : FlexForms как Content Element


z0r1k
25.04.2007, 18:00
Столкнулся с такой проблемой:
Хочу использовать 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 к такому виду?

void
25.04.2007, 19:58
В вашем посте сплошная мешанина.

Статический метод addPlugin добавляет в TCA и TS нужные для отображения плагина (в бекенде и фронтэнде соответственно) определения. Плагин при этом может использовать флексформы, а может их и не использовать.

Флексформа же подгружается методом addPiFlexFormValue.

Опишите, что у вас не работает - не добавляется новый элемент в CType или не рендерится флексформа?

z0r1k
25.04.2007, 20:26
В вашем посте сплошная мешанина.

Статический метод addPlugin добавляет в TCA и TS нужные для отображения плагина (в бекенде и фронтэнде соответственно) определения. Плагин при этом может использовать флексформы, а может их и не использовать.

Флексформа же подгружается методом addPiFlexFormValue.

Опишите, что у вас не работает - не добавляется новый элемент в CType или не рендерится флексформа?
Элемент добавляется, а вот флексформа не рендерится. А если модуль вставлять как плагин, то форма рендерится. Отсюда можно предположить, что XML валидный.

void
25.04.2007, 21:19
Согласно тца, при вашем тца-типе рендерятся поля button и header и несколько палитр.
Какое из них является флексформой?
Попробую догадаться, что флексформа - это поле pi_flexform. В таком случае, его нужно добавить в список рендерящихся полей, и, возможно, сконфигурировать.

z0r1k
26.04.2007, 11:29
Согласно тца, при вашем тца-типе рендерятся поля 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');
?>

void
26.04.2007, 13:26
Что даёт
$TCA['tt_content']['types'][$_EXTKEY.'_pi1']['showitem']='CType;;4;button;1-1-1, header;;3;;2-2-2, pi_flexform;;;;1-1-1 ';
?

z0r1k
26.04.2007, 14:12
В частности то что Вы и написали:

"Согласно тца, при вашем тца-типе рендерятся поля button и header и несколько палитр."


Но без этой строки не выводится никаких элементов вообще.
На сколько я понимаю, то мне каким-то образом нужно добавить мою флексформу в $TCA['tt_content']['types'][$_EXTKEY.'_pi1']['showitem']
Я правильно понимаю?

void
26.04.2007, 14:57
Да, вы правильно понимаете. Нужно добавить pi_flexform к вашему type. Что я и сделал в коде постом выше...

z0r1k
26.04.2007, 15:34
Большое спасибо за помощь.
Обязательно попробую сделать это.

z0r1k
26.04.2007, 17:14
Btw, хотель бы побольше узнать о синтаксисе данный строки

"CType;;4;button;1-1-1, header;;3;;2-2-2, pi_flexform;;;;1-1-1 ";


А именно где можно узнать список всех элементов и что обозначают эти цифры... Также интересно было бы узнать о разделителях и спец.символах.

void
26.04.2007, 21:46
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...)

z0r1k
27.04.2007, 10:21
Огромное спасибо... Обязательно ознакомлюсь...

z0r1k
27.04.2007, 20:36
Спасибо за оказанную помощь...
Возможно вы знаете как добавить новую запись сюда:

http://z0r1k.crimea.ua/photo/typo3/new_record.png

??

Я хочу чтобы моя флекформа была доступна из этого меню.

void
27.04.2007, 21:07
Я так понимаю, это обычная страница? Тогда вам поможет строка
t3lib_extMgm::allowTableOnStandardPages( $tablename );
в вашем ext_tables.php

z0r1k
27.04.2007, 21:13
это не совсем то что мне нужно...
я хочу чтобы у меня добавился в этот лист некий элемент myFlex, при нажатии на который, у меня бы создавался контент элемент с моей флекс формой.

btw, я использую поле myFlexItems в таблице tt_content. Думаю эта функция мне не поможет, т.к. таблица tt_content на этой странице наверное уже представленна.

Pavel Antonov
27.04.2007, 22:31
В меню вставки присутствуют только таблицы, а выбор флекс-формы будет следом в визарде выбора типа контента.

Разве этого не достаточно?

z0r1k
28.04.2007, 09:27
На сколько я понимаю, в эту функцию в качестве параметра нужно передать имя таблицы из базы данных, так?

т.е. t3lib_extMgm::allowTableOnStandardPages("tt_content");

но разве таблица "tt_content" уже не представленна на этой странице? Разве эта строка возымеет нужный мне эффект?

btw, у меня просто в таблице "tt_content" добавленно моё поле - "MyFlex"

void
28.04.2007, 16:33
Да, вы правы, уже представлена. Поэтому вам придется пользоваться визардом, который идет после выбора "pagecontent".

z0r1k
30.04.2007, 12:40
Понятно.
Спасибо за информацию.