2017-08-25 85 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();