Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Общие вопросы

Ответ
 
Опции темы Опции просмотра
Старый 30.12.2009, 11:31   #1
3ton
Senior Member
 
Регистрация: 25.12.2009
Сообщений: 106
По умолчанию flexform и создание extensions

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

проблема в том что с этими данными будут работать несколько модулей и у меня ситуация при которой либо я делаю 5-6 отдельных расширений, либо я добавляю в BE к расширению параметры
пользователь при вставке плагина выбирает параметр и расширение в соответствии с выбором будет выдаст нужный результат

расширение и таблицы создал через KickStarter, но не нашел как сделать форму для внесения параметров, почитал что вроде как это FlexForm, но никакой нормальной инфы по ней не нашел, может кто поможет?
3ton вне форума   Ответить с цитированием
Старый 30.12.2009, 13:40   #2
Valery Romanchev
Administrator
 
Аватар для Valery Romanchev
 
Регистрация: 23.08.2003
Адрес: Moscow, Russia
Сообщений: 1,926
Отправить сообщение для Valery Romanchev с помощью Skype™
По умолчанию

кикстартер флекс формы к сожалению не делает
Я сам разбирался с флексформами на примерах (экстеншен comments)
Пара страниц об этом есть в книжке Дулепова, но проще на примере посмотреть.
__________________
Веб-студия ТТЛАБ
www.ttlab.ru
Valery Romanchev вне форума   Ответить с цитированием
Старый 30.12.2009, 13:46   #3
3ton
Senior Member
 
Регистрация: 25.12.2009
Сообщений: 106
По умолчанию

тогда вопрос к Вам, как к уже прошедшему данный этап

достаточно ли создать файл flexform.xml и задать в нем нужную структуру или есть еще пару файлов необходимых для появления формы настроек в BE ???
3ton вне форума   Ответить с цитированием
Старый 30.12.2009, 14:53   #4
void
Senior Member
 
Аватар для void
 
Регистрация: 14.03.2006
Адрес: Russia, Penza
Сообщений: 1,504
Отправить сообщение для void с помощью ICQ
По умолчанию

Ещё есть пара файлов
__________________
TYPO3 FAQ
void вне форума   Ответить с цитированием
Старый 30.12.2009, 14:54   #5
3ton
Senior Member
 
Регистрация: 25.12.2009
Сообщений: 106
По умолчанию

можете подсказать или лучше книжку купить???
3ton вне форума   Ответить с цитированием
Старый 30.12.2009, 15:11   #6
Lucifer
Senior Member
 
Аватар для Lucifer
 
Регистрация: 01.07.2008
Сообщений: 392
По умолчанию

Думаю, лучше на примерах смотреть. методом научного тыка так сказать
Lucifer вне форума   Ответить с цитированием
Старый 30.12.2009, 22:35   #7
void
Senior Member
 
Аватар для void
 
Регистрация: 14.03.2006
Адрес: Russia, Penza
Сообщений: 1,504
Отправить сообщение для void с помощью ICQ
По умолчанию

http://wiki.typo3.org/index.php/Exte...sing_Flexforms
__________________
TYPO3 FAQ
void вне форума   Ответить с цитированием
Старый 31.12.2009, 00:40   #8
3ton
Senior Member
 
Регистрация: 25.12.2009
Сообщений: 106
По умолчанию

спасибо Void - то что доктор прописал!
3ton вне форума   Ответить с цитированием
Старый 04.01.2010, 12:22   #9
3ton
Senior Member
 
Регистрация: 25.12.2009
Сообщений: 106
По умолчанию

значит для остальных и по существу.

после написания расширения в KickStarter необходимо его доработать дабы в BE появилась возможность ввести переменные для вставляемого на страницу контент-плагина

для этого необходимо
1. создать файл flexform.xml (его структуру можете изучить, почти в любом имеющемся плагине он в корневой папке)
2. добавить строки соответствующие объявленым в flexform.xml в файл locallang_db.xml (он так же находится в корневой папке)
3. в файле ext_tables.php(тоже в корневой директории) добавить строки

Код:
if(t3lib_div::int_from_ver(TYPO3_version) >= 4002000)
	t3lib_extMgm::addPiFlexFormValue('*','FILE:EXT:'.$_EXTKEY.'/flexform.xml');
else
	t3lib_extMgm::addPiFlexFormValue('default','FILE:EXT:'.$_EXTKEY.'/flexform.xml');

$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY.'_pi1']='pi_flexform';
позволяющие нам работать с flexform из нашего плагина

4. добавить в файл нашего расширения (pi1/class.tx_нашеРасширение_pi1.php)
следующий код

Код:
	function main($content, $conf) {
		$this->conf = $conf;
		$this->pi_setPiVarDefaults();
		$this->pi_loadLL();
		// Init FlexForm configuration for plugin:
		$this->pi_initPIflexForm();
		$this->mergeflexFormValuesIntoConf();
		// Get vars
		$var1 = $this->flexFormValue('var1', 's_модуль');
		$var2 = $this->flexFormValue('var2', 's_модуль');
		$var3 = $this->flexFormValue('var3', 's_модуль');
далее добавить методы

Код:
	 protected function mergeflexFormValuesIntoConf() {
		$flex = array();
		if ($this->flexFormValue('var1', 's_модуль')) {
			$flex['var1'] = $this->flexFormValue('var1', 's_модуль');
		}

		if ($this->flexFormValue('var2', 's_модуль')) {
			$flex['var2'] = $this->flexFormValue('var2','s_модуль');
		}

		if ($this->flexFormValue('var3', 's_модуль')) {
			$flex['var3'] = $this->flexFormValue('var3', 's_модуль');
		}

		$pid = $flex['pages'] ? $this->pi_getPidList($flex['pages'], $flex['recursive']) : 0;
		if ($pid > 0) {
			$flex['storagePid'] = $pid;
		}

		$this->conf = array_merge($this->conf, $flex);
	}


	protected function flexFormValue($var, $sheet) {
		return $this->pi_getFFvalue($this->cObj->data['pi_flexform'], $var,$sheet);
	}

	protected function getDisplayText($label, $stdWrapArray=array()) {
		return $this->flexFormValue($label,'s_messages') ? $this->cObj->stdWrap($this->flexFormValue($label,'s_messages'),$stdWrapArray) : $this->cObj->stdWrap($this->pi_getLL('ll_'.$label, '', 1), $stdWrapArray);
	}
насчет последнего метода не уверен, но мне кажеться он вызывается парентом, так как без него у меня не срабатывает отображение

в принципе 4 этих пунктов достаточно чтоб создать форму параметров для вставляемого расширения
3ton вне форума   Ответить с цитированием
Старый 04.01.2010, 16:50   #10
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Вы так пишете, что новички могут подумать что flexform.xml всегда один и в корневой папке. На самом деле их может может быть много - например один для каждого плагина (piX).

Я для удобства обычно пишу их не в корень, а в подпапку плагина:
pi1/flexform.xml
pi2/flexform.xml

Так легче разбираться с ними если плагинов в экстеншене несколько. Надо только правильно прописать пути в вызове addPiFlexFormValue().

Ваша функция getDisplayText это от какого-то копипаста остаток. Она вовсе не обязательна и никем кроме вас не может вызываться. Хотя это может быть удобным способом локализации - она берет локализованную строку либо заданную пользователем со странички FF s_messages, либо из стандартного locallang файла. Но это все должно быть должным образом сконфигурировано.

Также у вас есть дублирование в коде, так как вы уже FF в $this->conf записали используя mergeflexFormValuesIntoConf():
Код:
$this->mergeflexFormValuesIntoConf();
// Get vars
$var1 = $this->conf('var1');
И стоит сказать, что такая практика нужна если вы хотите использовать в плагине возможность конфигурирования одновременно через FF и через TypoScript. Иначе записывать в $this->conf совсем не обязательно.
dmartynenko вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Security Bulletin TYPO3-20080919-1: Multiple third party extensions found insecure RSS Bot Новости TYPO3 (на английском) 0 19.09.2008 12:00
Multiple security issues in third party TYPO3 extensions RSS Bot Новости TYPO3 (на английском) 0 16.07.2008 01:54
Multiple security issues in third party TYPO3 extensions RSS Bot Новости TYPO3 (на английском) 0 01.07.2008 10:51
Создание нескольких меню Podlec Общие вопросы 2 13.03.2007 14:21
Создание новых Frontend Plugins Юрий Общие вопросы 0 19.02.2004 21:11


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


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

Хостинг и техническая поддержка: TYPO3 Лаборатория