【发布时间】:2013-11-29 10:50:51
【问题描述】:
我需要使用我的扩展从 tt_content 呈现特定内容。
我该怎么做?
\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer ?
【问题讨论】:
-
请详细说明你想做什么,结果应该是什么样子,你试图让它发挥作用。
标签: database plugins typo3 frontend typo3-6.1.x
我需要使用我的扩展从 tt_content 呈现特定内容。
我该怎么做?
\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer ?
【问题讨论】:
标签: database plugins typo3 frontend typo3-6.1.x
在 Extbase 扩展中$this->cObj 在当前范围内不再可用,因此您需要先获取它才能使用:
$cObj = $this->configurationManager->getContentObject();
$ttContentConfig = array(
'tables' => 'tt_content',
'source' => 123,
'dontCheckPid' => 1
);
$content .= $cObj->RECORDS($ttContentConfig);
【讨论】:
$this->cObj 不给你一个cObject。在一个正常的分机中。 $this->cObj 应该给你一个 cObject。您可以尝试:t3lib_div::makeInstance('tslib_cObj')->RECORDS($tt_content_conf); 如果这不起作用,您必须发布有关您的扩展的更多信息
pi_base 编码和 Extbase 之间的区别
yourPid 和yourContentElementID(所以它只是硬编码)。我还有其他情况:使用 BE 模块,我在一个页面上创建不同类型的 tt_content,但用于我的分机的不同父记录。前端插件仅根据显示的父记录的 UID 当前显示选定的内容。使用 TS 无法完成此任务,使用您展示的(我编辑过的)可以遍历数据库结果以仅获取所需的内容。最后,我看不到在不需要时使用冗余 TS 的理由......
您也可以通过控制器进行操作。如果我理解你的问题,你可能想试试这个
$cObject = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer');
【讨论】:
您可以使用 Typoscript CONTENT object 并将其传递给流畅的 ViewHelper:
lib.myContent = CONTENT
lib.myContent {
table = tt_content
select {
pidInList = yourPid
where = uid=yourContentElementID
}
}
在您使用 Fluid 的扩展程序中:
<f:cObject typoscriptObjectPath="lib.myContent" />
你也可以通过 viewHelper 传递值,见here
【讨论】:
以下脚本将使用 PI 基础扩展。
$uid = $this->cObj->data['uid'];
if ($this->cObj->data['_LOCALIZED_UID']) {
$uid = $this->cObj->data['_LOCALIZED_UID'];
}
以下脚本将用于 EXT BASE 扩展。
$this->contentObj = $this->configurationManager->getContentObject();
$uid = $this->contentObj->data['uid'];
有关 TYPO3 的更多信息,您可以访问我的blog
【讨论】: