Как быстро создать пользовательские элементы контента в 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 будет делать именно то, что я искал