TYPO3 - 个性化后端盒子的内容

时间:2012-10-10 18:22:50

标签: typo3 typoscript

我已经构建了一个新的内容元素类型,当你查看后端时,在框内你只能看到模块的名称。我想改变里面显示的信息。

我可以使用“标题”字段,但有没有办法使用其他字段?

Example module

2 个答案:

答案 0 :(得分:1)

两个答案

第一个答案

显示在那里的字段与列表模块中显示的字段相同。它使用扩展名ext_tables.php

中的['ctrl'] ['label']在表格的TCA中设置
$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到你想要显示的任何内容。

陷阱:

  1. 输出位于范围内,因此不允许使用块元素 HTML。任何样式都必须在样式属性中内联完成。
  2. 该函数将在每个内容元素上调用,因此您必须这样做 检查行的CType和(如果适用)list_type字段 您只能操纵自己的内容元素。
  3. 可以在“fed”扩展名中找到一个示例。我希望这会有所帮助。

答案 1 :(得分:0)

对adhominem answear#2稍作更新,这是正确的。

今天在TYP​​O3 6.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;将停止预览的默认呈现。