11

TYPO3 6.x で、カスタム コンテンツ要素をすばやく作成する簡単な方法は何ですか?

典型的な例(おそらく証言のコレクション用):

バックエンド (適切なラベル付き):

  • 画像
  • 入力フィールド
  • テキストエリア

レンダリング時:

  • xy にサイズ変更された画像
  • h2 でラップされた入力
  • textarea は parseFunc を介して渡され、さらにマークアップでラップされます

理想的には、これらはページ モジュールで cType として利用できますが、少なくともリスト モジュールでは利用できます。流動的なテンプレートを使用します。

私の質問:

  • 別の CMS から、コンテンツ アイテム テンプレートが BE と FE に同時に適用されることに慣れています (テンプレートが何をすべきかを記述し、そのタイプのコンテンツ エレメント専用のバックエンド アイテムがあります)。流体がどのように機能するかではありません-またはそれを行うことができますか?

  • このようなカスタム コンテンツ要素 (Templavoila 以外) を処理する拡張機能はありますか?

  • または、そのようなフィールド タイプごとにカスタム extbase/fluid 拡張機能を作成する必要がありますか?

  • ところで、新しい extbase キックスターターに推奨されるチュートリアルはありますか? 私はドメイン モデリングのすべてに恐怖を感じました。

4

2 に答える 2

24

その恐ろしいドメインモデリングは、おそらくあなたにとって最良の選択肢です:)

必要に応じてデータを保持および表示する FE プラグインを使用して拡張機能を作成し、「挿入プラグイン」として配置できます。このプラグインをカスタム CType として追加することは可能です。後でサンプルを見つけます。

必要なデータを保存できるため、追加のモデルを作成する必要はありません。フレックスフォームで。

FE プラグインから CType へ

コントローラーとアクションhelloを含むキーを持つ拡張機能があるとします。Newslistsingle

あなた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);
于 2013-08-27T11:46:20.163 に答える