Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   FlexForms как Content Element (http://forum.typo3.ru/showthread.php?t=3226)

z0r1k 25.04.2007 18:00

FlexForms как Content Element
 
Столкнулся с такой проблемой:
Хочу использовать FlexForms как ContentElement, но ничего рабочего не выходит.
Использование FlexForms через "Insert plugin" не вызывает трудностей, но когда пытаюсь использовать FlexForms как CType ничего не выходит. При этом добавляется новый контент элемент, но флексформа не рендерится. А рендерятся элементы button и header.

Я подозреваю что проблема в этом:
Для использования FlexForms как плагина используется функция:
PHP код:

t3lib_extMgm::addPlugin(array('LLL:EXT:myFlexExt/locallang_db.xml:tt_content.CType_pi1'$_EXTKEY.'_pi1'),'list_type'); 

а для использования FlexForms как CType элемента используется функция:
PHP код:

t3lib_extMgm::addPlugin(array('LLL:EXT:myFlexExt/locallang_db.xml:tt_content.CType_pi1'$_EXTKEY.'_pi1'),'CType'); 

и в таком случае интерфейс описывается в таком виде:
PHP код:

$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

Цитата:

Сообщение от void (Сообщение 11543)
В вашем посте сплошная мешанина.

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

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

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

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

void 25.04.2007 21:19

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

z0r1k 26.04.2007 11:29

Цитата:

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

Догадка действительно верна.
Привожу полный текст ext_tables.php:

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,fe_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

Что даёт
PHP код:

$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, хотель бы побольше узнать о синтаксисе данный строки
PHP код:

"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/docum...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

Я так понимаю, это обычная страница? Тогда вам поможет строка
PHP код:

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

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

т.е.
PHP код:

t3lib_extMgm::allowTableOnStandardPages("tt_content"); 

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

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

void 28.04.2007 16:33

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

z0r1k 30.04.2007 12:40

Понятно.
Спасибо за информацию.


Часовой пояс GMT +4, время: 04:59.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot