Как быстро создать пользовательские элементы контента в TYPO3 6.икс
в TYPO3 6.x, каков простой способ быстрого создания пользовательских элементов контента?
типичный пример (возможно для сбора отзывов):
в бэкэнде (с соответствующими метками):
- изображение
- поле ввода
- компонент textarea
при рендеринге:
- изображение изменено до xy
- вход, завернутый в h2
- textarea прошло через parseFunc и завернутый в больше разметки
В идеале они будут доступны в модуле страницы как cType, но, по крайней мере, в модуле списка. И используйте жидкие шаблоны.
мои вопросы:
из другой CMS я привык к шаблонам элементов контента, применяемым к BE и FE одновременно (вы пишете шаблон для того, что он должен делать, а затем есть бэкэнд-элемент только для этого типа элемента контента) - но это не так, как работает fluid - или можно ли это сделать?
есть ли расширение, которое будет обрабатывать такие элементы содержания (кроме Templavoila)?
или мне нужно создать пользовательское расширение extbase/fluid для каждого такого типа поля?
и, кстати: есть ли рекомендуемый учебник для нового extbase kickstarter? Меня отпугнули все эти штучки с моделированием доменов.
2 ответов
этот пугающий материал моделирования домена, вероятно, лучший вариант для вас:)
создайте расширение с плагином FE, который содержит и отображает данные, как вы хотите, чтобы вы могли разместить его как "вставить плагин". Можно добавить этот плагин в качестве пользовательского CType, и я найду образец для вас, но немного позже.
Примечание, вам не нужно создавать дополнительные модели, как вы можете хранить необходимые данные ie. в Flexform в.
от плагина FE к Ctype для
давайте рассмотрим, что у вас есть расширение с ключом hello
, которая содержит С list
и single
действия в нем.
в своем ext_tables.php
вы зарегистрировали плагин FE:
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin($_EXTKEY, 'News', 'Scared Hello News');
когда он работает нормально, вы можете добавить его в список типов контента (доступных в TCA), просто добавив пятый параметр в configurePlugin
метод ext_localconf.php
:
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'TYPO3.' . $_EXTKEY,
'News',
array('News' => 'list, show'),
array('News' => ''),
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::PLUGIN_TYPE_CONTENT_ELEMENT // <- this one
);
Следующая часть (на основе этот сайт) добавляет ваш плагин в Новый Контент Мастер как заметил в TYPO3 Вики начиная с TYPO3 ver. 6.0.0 немного изменился, поэтому самый простой способ-добавить что-то подобное в ваш ext_tables.php
:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('<INCLUDE_TYPOSCRIPT: source="FILE:EXT:hello/Configuration/TypoScript/pageTsConfig.ts">');
и /typo3conf/ext/hello/Configuration/TypoScript/pageTsConfig.ts
запись файла добавьте это:
mod.wizards.newContentElement.wizardItems.plugins.elements.tx_hello_news {
icon = gfx/c_wiz/regular_text.gif
title = Scared Hello News
description = Displays Scared News
tt_content_defValues.CType = hello_news
}
# Below the same for TemplaVoila
templavoila.wizards.newContentElement.wizardItems.plugins.elements.tx_hello_news {
icon = gfx/c_wiz/regular_text.gif
title = Scared Hello News
description = Displays Scared News
tt_content_defValues.CType = hello_news
}
обратите внимание, что правильный ключ tx_hello_news
должно быть сочетание строчных tx_
, $_EXTKEY
и имя плагина-используется в registerPlugin
метод.
вы можете остановиться здесь, Если вам скучно ;)
верните поля tt_content в свой CType
вышеуказанные шаги приведут к тому, что типичные поля не будут доступны в TCA для вашего элемента, поэтому вам нужно скопировать что-то или создать собственное. Чтобы увидеть, как это работает, просто посмотрите пример, в бэкэнде в левом меню выберите ADMIN TOOLS
>Configuration
>TCA
>tt_content
>types
здесь вы найдете все типы в система, выберите наиболее необходимый и скопируйте его [showitem]
узел в свой собственный. Опять в ext_tables.php
добавить этот массив PHP:
$TCA['tt_content']['types']['hello_news']['showitem'] = $TCA['tt_content']['types']['textpic']['showitem'];
еще раз: hello_news
является комбинацией строчных $_EXTKEY
и имя плагина FE...
конечно, если это необходимо, вы можете составить собственный набор полей, один за другим по пользовательской строке:
$TCA['tt_content']['types']['hello_news']['showitem'] = '--palette--;LLL:EXT:cms/locallang_ttc.xml:palette.general;general, --palette--;LLL:EXT:cms/locallang_ttc.xml:palette.header;header';
доступ к полям в контроллере Extbase:
к счастью, это самая простая часть, как вы можете просто получить к нему доступ как массив:
$currentTtContent = $this->configurationManager->getContentObject()->data;
$header = $currentTtContent['header'];
debug($currentTtContent);
debug($header);
Я думаю http://typo3.org/extensions/repository/view/dce будет делать именно то, что я искал