0

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

我可以使用“标题”字段,但是有没有办法使用另一个字段?

示例模块

4

2 回答 2

1

两个答案

第一个答案

那里显示的字段与列表模块中显示的字段相同。它是使用扩展名中的 ['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 设置为您想要显示的任何内容。

陷阱:

  1. 输出在跨度内,因此 html 中不允许有块元素。任何样式都必须在 style 属性中内联完成。
  2. 该函数将在每个内容元素上调用,因此您必须检查行CType和(如果适用)list_type字段,以便您只操作自己的内容元素。

可以在“fed”扩展中找到一个示例。我希望这有帮助。

于 2012-11-11T18:14:31.897 回答
0

只是对 adhominem answear #2 的一点更新,这是正确的。

今天在 TYPO3 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;将停止预览的默认呈现。

于 2015-08-10T13:50:38.580 回答