Вывод всех постов пользователя — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «Задача: вывести все посты в блогах, созданные определенным пользователем. Для реализации …»)
 
(Актуализация статьи)
 
(не показаны 2 промежуточные версии 2 участников)
Строка 1: Строка 1:
Задача: вывести все посты в блогах, созданные определенным пользователем.
 
  
Для реализации данной задачи напишем кастомный макрос в файле /classes/modules/custom.php:
+
'''Актуально для версии 20'''
 +
 
 +
== Задача ==
 +
 
 +
Вывести все посты в блогах, созданные определенным пользователем.
 +
 
 +
== Решение ==
 +
 
 +
Для реализации данной задачи напишем кастомный макрос в файле /classes/components/custom.php:
  
 
<source lang="php">
 
<source lang="php">
Строка 17: Строка 24:
  
 
Каждый найденный пост будет оформляться в виде ссылки и выводиться списком.
 
Каждый найденный пост будет оформляться в виде ссылки и выводиться списком.
 +
При вызове кастома необходимо передать id пользователя.
  
Вызов кастома пропишем в шаблоне \templates\demoold\tpls\users\profile\default.tpl, который отвечает за вывод страницы с профилем пользователя. При вызове кастома передаем id пользователя:
+
=== TPL шаблонизатор ===
  
<pre>
+
Вызов кастома можно добавить например в демошаблоне Классический в файле /templates/demoold/tpls/users/profile/default.tpl, который отвечает за вывод страницы с профилем пользователя.
 +
 
 +
<source lang='html'>
 
Посты в блогах:
 
Посты в блогах:
 
<ul>%custom postList(%id%)%</ul>
 
<ul>%custom postList(%id%)%</ul>
</pre>
+
</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>