2017-08-25 91 views
1

我在Contao中使用了坚如磐石的自定义元素。 在BE我有一个页面树,我可以选择一个内部页面。 我可以在我的FE HTML5文档中访问PHP中的contao页面id。 我想要的是访问所选页面的h1标题(具有普通的contao文本元素),并将其放在一个php变量中(如果整个页面内容都可访问,那也可以)。Contao CMS:从页面ID获取页面内容在PHP中 - 变量

$pageObj = Database::getInstance()->prepare("SELECT * FROM tl_page WHERE id = ?") 
->limit(1) 
->execute($pageId); 
$pageArr = $pageObj->fetchAssoc(); 

通过上面的代码,我可以通过id访问所选页面的很多变量,但我没有找到标题或页面内容。

回答

1

该页面本身没有内容。 Contao中的页面包含所谓的文章tl_article)。每篇文章可以放置在您的页面版的不同部分中。

这些文章包含所谓的内容元素tl_content)。 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();