我在Contao中使用坚如磐石的自定义元素。 在BE我有一个pagetree,我可以选择一个内部页面。 我可以在我的FE html5文档中访问PHP中的contao页面id。 我想要的是访问所选页面的h1标题(具有正常的contao文本元素)并将其放在php变量中(如果整个页面内容都可访问,那也可以。)
$pageObj = Database::getInstance()->prepare("SELECT * FROM tl_page WHERE id = ?")
->limit(1)
->execute($pageId);
$pageArr = $pageObj->fetchAssoc();
使用上面的代码,我可以通过ID访问所选页面的许多变量,但我找不到标题或页面内容。
答案 0 :(得分:2)
页面本身没有内容。 Contao中的页面包含所谓的文章(tl_article
)。每篇文章都可以放置在页面布局的不同部分中。
这些文章包含所谓的内容元素(tl_content
)。内容元素可以是标题,文本,图像等。
为了在布局的 main 部分中获取页面的第一个内容元素,您可以执行以下操作:
$objArticle = \ArticleModel::findPublishedByPidAndColumn($pageId, 'main')->first();
$objContent = \ContentModel::findPublishedByPidAndTable($objArticle->id, \ArticleModel::getTable())->first();
您也可以使用简单的查询,而不是使用Contao模型:
$db = \Database::getInstance();
$arrContent = $db->prepare("SELECT c.* FROM tl_content AS c, tl_article AS a
WHERE a.pid = ? AND c.pid = a.id AND a.inColumn = 'main'
ORDER BY a.sorting, c.sorting
LIMIT 1;")->execute($pageId)->fetchAssoc();