【发布时间】:2012-05-13 22:45:21
【问题描述】:
我正在开发一个允许管理员将内容保存到数据库的扩展。
我希望扩展的每个实例在数据库中都应该有自己的 ID。 有没有办法在扩展 php 中获取 tt_content uid(我猜是扩展实例 ID)。
【问题讨论】:
我正在开发一个允许管理员将内容保存到数据库的扩展。
我希望扩展的每个实例在数据库中都应该有自己的 ID。 有没有办法在扩展 php 中获取 tt_content uid(我猜是扩展实例 ID)。
【问题讨论】:
这是方法(在 TYPO3 9.5.4 和 10.4.3 中测试)
获取控制器内的当前内容ID
$this->configurationManager->getContentObject()->data['uid'];
与
这将返回您可以直接呈现的整个 HTML 内容
$conf = [
'tables' => 'tt_content',
'source' => $uid, //uid of tt_content
'dontCheckPid' => 1
];
$html = $GLOBALS['TSFE']->cObj->cObjGetSingle('RECORDS', $conf);
【讨论】:
对于更新该答案并知道插件uid的效果,您可以调试\TYPO3\CMS\Core\Utility\DebugUtility::debug($this->configurationManager->getContentObject()->data['uid'], 'parameter');
如果未完成,则调试不会显示uid,因为configurationManager 和contentObject 使用延迟加载。
这在 TYPO3 8.7 中有效并经过测试
【讨论】:
$contentId 是typo3 后端的内容ID
$content_rec = $GLOBALS["TYPO3_DB"]->exec_SELECTgetrows('header,bodytext','tt_content','uid='.$contentId);
$this->markerArray['###content###'] = $content_rec[0]['bodytext'];
【讨论】:
你在数组中获取所有 tt_content 的数据:
$this->cObj->data
即:
$uidOfCE = $this->cObj->data['uid'];
如果你使用 Extbase 当然你需要先获取内容对象,即:
$this->contentObj = $this->configurationManager->getContentObject();
debug($this->contentObj->data, "current tt_content's data");
【讨论】:
<div class="module" id="<need content ID here>">