PDA

Просмотр полной версии : новый тип поля в FCE templavoila - как?


(:)
28.02.2008, 14:01
всем привет!

задача:

Front End - вывести ссылку на файл (док, пдф, ткст).

Back End - ссылку пользователь задаёт в специальном контент элементе FCE в templavoila.

templavoila позволяет определить поле одного из предопределённых типов
(текстовое поле (input), список (select), картинка (typo3 file field with upload jpg, gif, png), ссылка (link - typo3 set link dialog))

в настоящее время выбрал тип поля ссылка (link) - очень удобно, пользователь кликает на иконке диалога, и открывается новое окошко Typo3browser, который позволяет задать ссылку на страницу, внешнюю ссылку, и на файл из файладмин каталога или ссылку на картинку.

Отлично выбираем файл в файладмин и сохраняем ссылку.

Клиенту не нравится:

Но клиенту не нравится такое отличное решение. Перед тем как создать ссылку, файл надо зааплоадить в файладмин. Потом найти его в диалоге при создании ссылки. Если файл удалили ссылка не работает.

Ну вобщем много лишней работы и мало надёжности для простого пользователя.

Клиент хочет по-другому:

Есть такой стандартный контент элемент файллинкс. Он удобен тем, что прямо в бекенде при создании контент элемента можно зааплоадить несколько файлов и всё ок.

Клиент хочет чтоб был FCE + похожее поле в котором он мог бы зааплоадить файл нужного типа (док, пдф, ткст) и чтоб после всего ссылочка на файл появилась во фронтенде.

Проблема:

Всё бы ничего, но в templavoila нет подходящего типа поля. т.е. есть поле типа картинка, в нём можно зааплоадить файл прямо в контент элементе, и он копируется в темп каталог - становиться частью базы данных, вобщем почти то, что нужно.

Но, как всегда, но... Этот тип поля позволяет аплоадить только картинки, т.е. тип файла (jpg, gif, png). И также к нему автоматом прикручивается тайпоскрипт для вывода файла в виде тега img.

Вопрос:

Какое может быть решение? Как можно добавить свой тип поля в templavoila? если возможно конечно? Может кто-то уже сталкивался с такой проблемой? как решали? какие-то расширения для templavoila?

иначе в голову приходят только длинные решения, типа:
- попытаться использовать поле типа картинка и изменить ограничение на тип файла для аплоада + корректировать ручками ТС для вывода ссылки на файл. вроде ничего вариант, но есть проблемы (лезть ручками причем каждый раз когда вставляешь такое поле в новый FCE или вносишь изменения в существующий, + темпла всё похерит при первой же возможности сама :) (слёт шаблона, обновление других полей, ваш вариант))

- копать темплу и найти где и как добавляются законные поля и их поддержка в бекенде + тайпскрипт + маппинг + еще что-то может встретиться.

вобщем так.

будут мысли, будет интересно узнать.

Евгений,
Харьков

Pavel Antonov
29.02.2008, 15:42
Поле типа картинка как раз то что нужно. Не надо обращать внимания на то что может создать визард - он очень ограничен. Вы всегда можете поправить DS руками.

Действия следующие.
Создаем шаблон с полем типа image;
Открываем DS вновь созданного шаблона;
Ищем наше поле. Оно будет выглядеть что то типа:

<field_t type="array">
<tx_templavoila type="array">
<title></title>
<sample_data type="array">
<numIndex index="0"></numIndex>
</sample_data>
<eType>image</eType>
<TypoScript>
10 = IMAGE
10.file.import = uploads/tx_templavoila/
10.file.import.current = 1
10.file.import.listNum = 0
10.file.maxW = 200
</TypoScript>
</tx_templavoila>
<TCEforms type="array">
<config type="array">
<type>group</type>
<internal_type>file</internal_type>
<allowed>gif,png,jpg,jpeg</allowed>
<max_size>1000</max_size>
<uploadfolder>uploads/tx_templavoila</uploadfolder>
<show_thumbs>1</show_thumbs>
<size>1</size>
<maxitems>1</maxitems>
<minitems>0</minitems>
</config>
<label></label>
</TCEforms>
</field_t>

Меняем eType на file (не знаю нужно ли это вообще, так как все определяет internal_type. Возможно это поле только для визарда)
TypoScript - меняем на то что мы хотим увидеть в FE (ссылку на файл наверно?)
Меняем allowed на расширения которые нужны - doc, xls, txt...
show_thumbs ставим в "0"
Остальное добавить по вкусу, перемешать и варить до полной готовности...Естественно после этой процедуры мы прощаемся в Визардом TV навсегда, так как все на что он способен - уничтожить наши исправления. Маппинг можете делать без проблем, а поля в DS придется добавлять руками. FCE меняются за время жизни сайта очень редко... так что ничего страшного.

(:)
02.03.2008, 02:55
Преотличнейше :)

спасибо, будем ковырять

еще...

что-то свербит залезть в визард, и помочь ему не гадить в этом месте, а наооборот, научить его новому типу поля :)

Евгений
Харьков

Valery Romanchev
02.03.2008, 12:13
вот здеcь посмотрите - на ту же тему пост
http://forum.typo3.biz/showthread.php?t=5928
(правда здесь я как раз поле link использовал, но TS может Вам пригодиться)

Pavel Antonov
02.03.2008, 14:01
что-то свербит залезть в визард, и помочь ему не гадить в этом месте, а наооборот, научить его новому типу поля :)


Есть хук который позволяет делать собственную генерацию кода для элементов: $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['templavoila']['cm1']['eTypesConfGen'][$eType]['tx_templavoila']['eType']]

Но на сам визард это мало влияет - у него все прошито в коде.

(:)
04.03.2008, 11:04
привет, Павел, да залез внутрь,

хук их переопределяет весь список типов полей, т.е. этот весь список полей надо заново переопределить, и этого делать конечно нет никакого желания.
А тут бы нужен был механиз добавления одного нового типа поля. И конечно же соответсвующий механизм добавления этого же типа поля в визард, а в нём как вы верно заметили всё зашито жестко.

Нужен запрос на два хука, причём в обоих случаях что были списки хуков для добавления нескольких типов полей в визард вобщем случае из различных независимых экстеншнов :) Но пока этого дождёшься, и я такого запроса никогда не далел еще, и не знаю как скоро его можно будет воплотить с новой версией ТВ.

Так что лёгкая передалка ТС кода ручками на настоящий момент оказалась лучшим выходом :)

спасибо


Валерий, спасибо за ответ,

как мне кажется я вас правильно понял :) но в нашем случае есть необходимость заменить в бекенде поле link (с вызовом браузера файлов) на поле аплоад (input + кнопка browse т.е. именно то, что TV в ТСЕФормс предлагает поле Image).

Спасибо за ваш совет, было очень полезно рассмотреть различные варианты, и увидеть новые возможности - научиться новому :)

спасибо огромное