新しいコンテンツ要素タイプを作成しました。バックエンドを見ると、ボックス内にモジュールの名前のみが表示されています。内部に表示される情報を変更したいのですが。
「ヘッダー」フィールドを使用できますが、別のフィールドを使用する方法はありますか?
新しいコンテンツ要素タイプを作成しました。バックエンドを見ると、ボックス内にモジュールの名前のみが表示されています。内部に表示される情報を変更したいのですが。
「ヘッダー」フィールドを使用できますが、別のフィールドを使用する方法はありますか?
2つの答え
そこに表示されるフィールドは、リストモジュールに表示されるフィールドと同じです。これは、拡張機能の['ctrl']['label']を使用してテーブルのTCAに設定されます。ext_tables.php
$TCA['tx_myext_mytable'] = array(
'ctrl' => array(
'title' => 'My Table'
'label' => 'name_of_the_field_to_display_as_header'
// end snip
それだけでは不十分な場合は、フックを使用してプレビューに任意のHTMLを表示できます。フックはと呼ばれ$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawItem']
ます。
フックは、次のシグネチャを持つ関数で呼び出されます。
public function preProcess(
tx_cms_layout &$parentObject, // parent object
&$drawItem, // i have no idea what this is
&$headerContent, /* the content of the header
(the grey bar in the screenshot i think) */
&$itemContent, /* the content of the preview
(the white area in your screenshot */
array &$row // the content element's record
)
したがって、その関数で行う必要があるのは、itemContentと、必要に応じて、headerContentを表示したいものに設定することだけです。
落とし穴:
CType
コンテンツ要素で呼び出されるため、行と(該当する場合)list_type
フィールドをチェックして、独自のコンテンツ要素のみを操作する必要があります。例は「fed」拡張にあります。これがお役に立てば幸いです。
正しいadhominemanswear#2へのほんの少しの更新。
今日TYPO36.2以降では、フッククラスはインターフェースを継承する必要がありますTYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface
それは最愛のように見えます
<?php
namespace TYPO3\CMS\Backend\View;
/**
* Interface for classes which hook into PageLayoutView and do additional
* tt_content_drawItem processing.
*
* @author Oliver Hader <oliver@typo3.org>
*/
interface PageLayoutViewDrawItemHookInterface {
/**
* Preprocesses the preview rendering of a content element.
*
* @param \TYPO3\CMS\Backend\View\PageLayoutView $parentObject Calling parent object
* @param boolean $drawItem Whether to draw the item using the default functionalities
* @param string $headerContent Header content
* @param string $itemContent Item content
* @param array $row Record row of tt_content
* @return void
*/
public function preProcess(\TYPO3\CMS\Backend\View\PageLayoutView &$parentObject, &$drawItem, &$headerContent, &$itemContent, array &$row);
}
&$drawItem
はブール値であり、参照として送信します。に変更すると$drawItem = false;
、プレビューのデフォルトのレンダリングが停止します。