Вывод всех постов пользователя
Материал из Umicms
Актуально для версии 20
Задача
Вывести все посты в блогах, созданные определенным пользователем.
Решение
Для реализации данной задачи напишем кастомный макрос в файле /classes/components/custom.php:
public function postList($id){
$posts = new selector('pages');
$posts->types('hierarchy-type')->name('blogs20', 'post');
$posts->where('owner')->equals($id);
$res = "";
foreach ($posts as $post){
$res.= "<li><a href=\"{$post->link}\">{$post->name}</a>\n";
}
return $res;
}
Каждый найденный пост будет оформляться в виде ссылки и выводиться списком. При вызове кастома необходимо передать id пользователя.
TPL шаблонизатор
Вызов кастома можно добавить например в демошаблоне Классический в файле /templates/demoold/tpls/users/profile/default.tpl, который отвечает за вывод страницы с профилем пользователя.
Посты в блогах:
<ul>%custom postList(%id%)%</ul>
XML шаблонизатор
<ul>
<xsl:value-of select="document(concat('udata://custom/postList/', $id))" />
</ul>
PHP шаблонизатор
<ul>
<?=$this->macros('catalog', 'search', [$id])?>
</ul>