0

新しいコンテンツ要素タイプを作成しました。バックエンドを見ると、ボックス内にモジュールの名前のみが表示されています。内部に表示される情報を変更したいのですが。

「ヘッダー」フィールドを使用できますが、別のフィールドを使用する方法はありますか?

モジュールの例

4

2 に答える 2

1

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

2番目の答え

それだけでは不十分な場合は、フックを使用してプレビューに任意の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を表示したいものに設定することだけです。

落とし穴:

  1. 出力はスパン内にあるため、htmlでブロック要素を使用することはできません。すべてのスタイリングは、style属性でインラインで行う必要があります。
  2. 関数はすべてのCTypeコンテンツ要素で呼び出されるため、行と(該当する場合)list_typeフィールドをチェックして、独自のコンテンツ要素のみを操作する必要があります。

例は「fed」拡張にあります。これがお役に立てば幸いです。

于 2012-11-11T18:14:31.897 に答える
0

正しい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;、プレビューのデフォルトのレンダリングが停止します。

于 2015-08-10T13:50:38.580 に答える