Contao CMS: получение содержимого страницы из идентификатора страницы в PHP-переменной

Я использую надежные пользовательские элементы в Contao. В BE у меня есть дерево страниц, где я могу выбрать внутреннюю страницу. Я могу получить доступ к идентификатору страницы contao в PHP в моем html5-документе FE. Я хочу получить доступ к заголовку h1 выбранной страницы (имеет обычный текстовый элемент contao) и иметь его в php-переменной (в случае, если доступен только весь контент страницы, это тоже будет нормально).

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

С помощью приведенного выше кода я могу получить доступ ко многим переменным выбранной страницы через идентификатор, но я не нахожу ни заголовка, ни содержимого страницы.


person Tom Senner    schedule 25.08.2017    source источник


Ответы (1)


Сама страница не имеет содержания. Страница в 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();
person fritzmg    schedule 10.11.2017