1

我在 Contao 中使用了坚如磐石的自定义元素。在 BE 中,我有一个页面树,我可以在其中选择一个内部页面。我可以在我的 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 访问所选页面的许多变量,但我找不到标题或页面内容。

4

1 回答 1

2

该页面本身没有内容。Contao 中的页面由所谓的文章( tl_article) 组成。每篇文章都可以放置在页面布局的不同部分

这些文章由所谓的内容元素( tl_content) 组成。内容元素可以是标题、文本、图像等。

为了在布局的主要部分中获取页面的第一个内容元素,您可以执行以下操作:

$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();
于 2017-11-10T16:21:44.697 回答