Contao CMS:从PHP-Variable中的Page-ID获取页面内容

时间:2017-08-25 07:37:42

标签: php variables contao

我在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访问所选页面的许多变量,但我找不到标题或页面内容。

1 个答案:

答案 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();