0

我有一个用于 tt_content 的自定义 cType,其中重用了普通 tt_content 中的 header 和 bodytext 字段。目标是拥有一个自定义的 tt_content cType,它只以正常方式显示标题和正文。但我需要从 php 而不是 TS 来做,因为我必须在返回之前处理文本。

我可以将标题和正文输出为原始文本,但我无法使用 pi_RTEcssText 格式化正文。每次我尝试它都会失败。无法访问 parseFunc_RTE 的东西。

关于如何使用自定义类(不是前端插件)正确输出正文格式的任何其他好主意。我尝试包含 tslib 并将其存储在 $this->hObj 中,还尝试了具有相同结果的正常 $this->cObj

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; 

    }

}
4

1 回答 1

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>
于 2013-10-21T13:44:01.757 回答