TYPO3从类中渲染bodytext。 Errror访问lib.parseFunc_RTE

时间:2013-10-21 12:03:02

标签: typo3

我有一个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; 

    }

}

1 个答案:

答案 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>