![]() |
flexform и создание extensions
создал расширение которое отлично работает
суть заключается в том что расширение лезет на защищеный WebSrvice и берет оттуда данные, после чего закидывает их в базу предварительно проверяет если последние данные были взяты меньше часу назад то не лезет а берет сразу данные из базы. проблема в том что с этими данными будут работать несколько модулей и у меня ситуация при которой либо я делаю 5-6 отдельных расширений, либо я добавляю в BE к расширению параметры пользователь при вставке плагина выбирает параметр и расширение в соответствии с выбором будет выдаст нужный результат расширение и таблицы создал через KickStarter, но не нашел как сделать форму для внесения параметров, почитал что вроде как это FlexForm, но никакой нормальной инфы по ней не нашел, может кто поможет? |
кикстартер флекс формы к сожалению не делает
Я сам разбирался с флексформами на примерах (экстеншен comments) Пара страниц об этом есть в книжке Дулепова, но проще на примере посмотреть. |
тогда вопрос к Вам, как к уже прошедшему данный этап
достаточно ли создать файл flexform.xml и задать в нем нужную структуру или есть еще пару файлов необходимых для появления формы настроек в BE ??? |
Ещё есть пара файлов
|
можете подсказать или лучше книжку купить??? ;)
|
Думаю, лучше на примерах смотреть. методом научного тыка так сказать :)
|
|
спасибо Void - то что доктор прописал!
|
значит для остальных и по существу.
после написания расширения в KickStarter необходимо его доработать дабы в BE появилась возможность ввести переменные для вставляемого на страницу контент-плагина для этого необходимо 1. создать файл flexform.xml (его структуру можете изучить, почти в любом имеющемся плагине он в корневой папке) 2. добавить строки соответствующие объявленым в flexform.xml в файл locallang_db.xml (он так же находится в корневой папке) 3. в файле ext_tables.php(тоже в корневой директории) добавить строки Код:
if(t3lib_div::int_from_ver(TYPO3_version) >= 4002000) 4. добавить в файл нашего расширения (pi1/class.tx_нашеРасширение_pi1.php) следующий код Код:
function main($content, $conf) { Код:
protected function mergeflexFormValuesIntoConf() { в принципе 4 этих пунктов достаточно чтоб создать форму параметров для вставляемого расширения |
Вы так пишете, что новички могут подумать что flexform.xml всегда один и в корневой папке. На самом деле их может может быть много - например один для каждого плагина (piX).
Я для удобства обычно пишу их не в корень, а в подпапку плагина: pi1/flexform.xml pi2/flexform.xml Так легче разбираться с ними если плагинов в экстеншене несколько. Надо только правильно прописать пути в вызове addPiFlexFormValue(). Ваша функция getDisplayText это от какого-то копипаста остаток. Она вовсе не обязательна и никем кроме вас не может вызываться. Хотя это может быть удобным способом локализации - она берет локализованную строку либо заданную пользователем со странички FF s_messages, либо из стандартного locallang файла. Но это все должно быть должным образом сконфигурировано. Также у вас есть дублирование в коде, так как вы уже FF в $this->conf записали используя mergeflexFormValuesIntoConf(): Код:
$this->mergeflexFormValuesIntoConf(); |
я так пишу как сам обнаружил, а многие просто узнали что это легко и просто, а довести до сведений остальных не считают нужным...
почитайте что мне выше писали... я же написал чтоб пользователь, который вообще об этом не знает, мог хоть както получить результат у меня складывается впечатление что население начинает делиться только когда они покажут что другие вообще в этом не понимают ну так не стоит комплексовать, я своими вопросами как раз и показываю что я практически ничего не знаю, и не стоит ждаьт чтоб я до чего то дошел а потом высмеивать методы к которым я пришел, пишите сразу и для всех - именно в этом я вижу предназначение этого форума |
Люди которые могут чем-то поделится это обычно очень занятые люди, и все же находят время отвечать здесь (видимо из-за большого уважения к TYPO3).
Ведь для ответа на вопрос может быть необходимо поднять и процитировать вам много источников, и затратить на это много времени. Возмите себе за правило - если что-то вы хотите реализовать, и знаете что в каком-то экстеншене это реализовано, то посмотрите в первую очередь его код как пример. И решение быстрее найдете и обогатитесь чужим опытом. По сути вам это и советовали сделать в первых ответах. |
можете мне поверить что занят я не меньше Вашего, а с Typo3 знаком меньше месяца.
подсесть на него вызвано необходимостью передать продукт для поддержки другим лицам так как нет времени заниматься фронтами, так как мой приоритет сервисы с которыми этот фронт работает кое что реализую щас на нем, проект не сложный, но в контексте typo3 занимает очень много времени всякого рода тонкости которые являются важной составляющей typo3, но по которым нет туториалов. что не мешает мне при этом оставлять пару строк в наследие грядущим таким же как и я новичкам. а посему считаю нужным прекратить данный оффтоп, о чем и Вас прошу, эта тема имеет совсем другое предназначение. |
Цитата:
поэтому мне необходимо получать их всех и уже правилами в расширении решать кто из них и как будет обрабатываться |
Возникла проблема, как я предполагаю, с flexform, но возможно я ошибаюсь.
Ситуация такая: я написал несколько плагинов типа "Frontend Plugins". Плагины создавал kickstarter'ом, потом прикручивал flexform для того чтобы можно было менять их параметры из backend'а. Всё хорошо, всё работает по отдельности. Но когда уже установлен один из моих плагинов и я устанавливаю другой, то происходит так, что формы flexform первого плагина заменяются формами второго (последнего установленного). Кто-нибудь с этим сталкивался? Или какие есть мысли на этот счет? |
Запостите сюда файл ext_tables.php
Возможно вы что-то напутали с путями к flexform в нем. |
вот код ext_tables.php одного из моих расширений, ну собственно у остальных он такой же, разное лишь имя расширения:
Код:
<?php |
Попробуйте примерно так написать:
t3lib_extMgm::addPiFlexFormValue($_EXTKEY.'_pi1', 'FILE:EXT:'.$_EXTKEY.'/flexform.xml'); $TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY.'_pi1']='pi_flexform'; Так как первый параметр addPiFlexFormValue() это некий уникальный ключ, а у вас он один и тот же. |
Спасибо! Это помогло =)
|
Часовой пояс GMT +4, время: 03:50. |
Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot