その恐ろしいドメインモデリングは、おそらくあなたにとって最良の選択肢です:)
必要に応じてデータを保持および表示する FE プラグインを使用して拡張機能を作成し、「挿入プラグイン」として配置できます。このプラグインをカスタム CType として追加することは可能です。後でサンプルを見つけます。
必要なデータを保存できるため、追加のモデルを作成する必要はありません。フレックスフォームで。
FE プラグインから CType へ
コントローラーとアクションhello
を含むキーを持つ拡張機能があるとします。News
list
single
あなたext_tables.php
はFEプラグインを登録しました:
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin($_EXTKEY, 'News', 'Scared Hello News');
configurePlugin
正常に動作している場合は、次のメソッドに5 番目のパラメーターを追加するだけで、コンテンツ タイプのリスト (TCA で利用可能) に追加できます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 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 プラグイン名の組み合わせです...
もちろん、それが必要な場合は、カスタム文字列で 1 つずつ、まったく独自のフィールド セットを作成できます。
$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);