我已经构建了一个新的内容元素类型,当你查看后端时,在框内你只能看到模块的名称。我想改变里面显示的信息。
我可以使用“标题”字段,但有没有办法使用其他字段?
答案 0 :(得分:1)
两个答案
显示在那里的字段与列表模块中显示的字段相同。它使用扩展名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”扩展名中找到一个示例。我希望这会有所帮助。
答案 1 :(得分: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;
将停止预览的默认呈现。