我有一个tt_content的自定义cType,其中重用了普通tt_content中的header和bodytext字段。目标是拥有一个自定义tt_content cType,它只是以正常方式显示header和bodytext。但我需要从PHP而不是TS来做,因为我必须在返回之前处理文本。
我可以输出header和bodytext作为原始文本,但我无法使用pi_RTEcssText格式化bodytext。每次我尝试失败。无法访问parseFunc_RTE的东西。
关于如何使用自定义类(不是前端插件)正确格式化输出bodytext的任何其他好主意。我试图包含tslib并将其存储在$ this-> hObj中,并尝试了正常的$ this-> cObj与同样的restult
require_once(PATH_tslib . 'interfaces/interface.tslib_content_cobjgetsinglehook.php');
require_once(PATH_tslib . 'class.tslib_pibase.php');
class tx_cObj_ogProcessTtContent implements tslib_content_cObjGetSingleHook {
protected $cObj;
public function getSingleContentObject($contentObjectName, array $configuration, $TypoScriptKey, tslib_cObj &$parentObject) {
$this->cObj =& $parentObject;
// access to pibase
$this->hObj = new tslib_pibase(); // <-- did try with cObj with same result
// content from current tt_content element
$headerOfCE = $this->cObj->data['header'];
$bodytextOfCE = $this->cObj->data['bodytext'];
// header
$content = '<h1>'.$headerOfCE.'</h1>'; // <-- is there a wrap as header func?
// add bodytext (not possible since no access to lib.parseFunc_RTE)
$content .= $this->hObj->pi_RTEcssText($bodytextOfCE);
return $content;
}
}
答案 0 :(得分:0)
对于那个简单的情况,没有必要使用cObject钩子。
您可以在typo3conf / extTables.php(AdditionalConfiguration.php)中注册一个新插件:
$TCA['tt_content']['columns']['CType']['config']['mycontent'] = array(
'label' => 'My Content',
);
$TCA['tt_content']['columns']['CType']['config']['items'][] = array('My Content', 'mycontent', 'path/to/my_icon.gif');
/* Arrange the fields you want to use in your content element */
$TCA['tt_content']['types']['mycontent'] = array(
'showitem' => 'CType;;4;;1-1-1, hidden, header, bodytext,
--div--;LLL:EXT:cms/locallang_tca.xml:pages.tabs.access, starttime, endtime'
);
然后,您可以使用Page TSconfig:
将内容类型添加到新的内容元素向导中mod.wizards.newContentElement.wizardItems {
mycontent {
icon = path/to/my_icon.gif
}
common.show := addToList(mycontent)
}
mod.wizards.newContentElement.wizardItems.common.elements.mycontent {
icon = path/to/my_icon.gif
title = My content
description = The description
tt_content_defValues {
CType = mycontent
}
}
然后你需要一些TypoScript来正确渲染内容。如果要使用tt_content的渲染作为基础,请使用
tt_content.mycontent < tt_content.text
然后你可以,例如操纵标题的渲染:
# delete the stdheader
tt_content.mycontent.10 >
tt_content.mycontent.10 = TEXT
tt_content.mycontent.10.field = header
tt_content.mycontent.10.wrap = <h1>|</h1>