Вывод всех постов пользователя — различия между версиями
Материал из Umicms
Yulia (обсуждение | вклад) (Новая страница: «Задача: вывести все посты в блогах, созданные определенным пользователем. Для реализации …») |
Vitaliks (обсуждение | вклад) (Актуализация статьи) |
||
(не показаны 2 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
− | |||
− | Для реализации данной задачи напишем кастомный макрос в файле /classes/ | + | '''Актуально для версии 20''' |
+ | |||
+ | == Задача == | ||
+ | |||
+ | Вывести все посты в блогах, созданные определенным пользователем. | ||
+ | |||
+ | == Решение == | ||
+ | |||
+ | Для реализации данной задачи напишем кастомный макрос в файле /classes/components/custom.php: | ||
<source lang="php"> | <source lang="php"> | ||
Строка 17: | Строка 24: | ||
Каждый найденный пост будет оформляться в виде ссылки и выводиться списком. | Каждый найденный пост будет оформляться в виде ссылки и выводиться списком. | ||
+ | При вызове кастома необходимо передать id пользователя. | ||
− | + | === TPL шаблонизатор === | |
− | < | + | Вызов кастома можно добавить например в демошаблоне Классический в файле /templates/demoold/tpls/users/profile/default.tpl, который отвечает за вывод страницы с профилем пользователя. |
+ | |||
+ | <source lang='html'> | ||
Посты в блогах: | Посты в блогах: | ||
<ul>%custom postList(%id%)%</ul> | <ul>%custom postList(%id%)%</ul> | ||
− | </ | + | </source> |
+ | |||
+ | === XML шаблонизатор === | ||
+ | |||
+ | <source lang='xml'> | ||
+ | <ul> | ||
+ | <xsl:value-of select="document(concat('udata://custom/postList/', $id))" /> | ||
+ | </ul> | ||
+ | </source> | ||
+ | |||
+ | === PHP шаблонизатор === | ||
+ | |||
+ | <source lang='php'> | ||
+ | <ul> | ||
+ | <?=$this->macros('catalog', 'search', [$id])?> | ||
+ | </ul> | ||
+ | </source> | ||
[[Категория:Написание кастомных макросов]][[Категория:Модуль Блоги20]] | [[Категория:Написание кастомных макросов]][[Категория:Модуль Блоги20]] |
Текущая версия на 10:38, 8 мая 2019
Актуально для версии 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>