Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   новый тип поля в FCE templavoila - как? (http://forum.typo3.ru/showthread.php?t=5941)

(:) 28.02.2008 14:01

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

задача:

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 руками.

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

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

  4. Меняем eType на file (не знаю нужно ли это вообще, так как все определяет internal_type. Возможно это поле только для визарда)
  5. TypoScript - меняем на то что мы хотим увидеть в FE (ссылку на файл наверно?)
  6. Меняем allowed на расширения которые нужны - doc, xls, txt...
  7. show_thumbs ставим в "0"
  8. Остальное добавить по вкусу, перемешать и варить до полной готовности...
Естественно после этой процедуры мы прощаемся в Визардом 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

Цитата:

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

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

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

(:) 04.03.2008 11:04

привет, Павел, да залез внутрь,

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

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

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

спасибо


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

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

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

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


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

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