Skip to content

Instantly share code, notes, and snippets.

@pafnuty
Last active August 29, 2015 14:23
Show Gist options
  • Save pafnuty/0f419444b41c7e0c1f54 to your computer and use it in GitHub Desktop.
Save pafnuty/0f419444b41c7e0c1f54 to your computer and use it in GitHub Desktop.
Вывод информации об авторе новости через BlockPro 4
{*
$block_id - это уникальный идентификатор блока (у блоков с разными настройками он разный) для того,
что бы правильно организовать постраничную навигацию на ajax.
*}
<div id="{$block_id}">
{* Массив с логинами авторов новостей *}
{set $users = []}
{* Заполняем массив логинами *}
{foreach $list as $key => $el}
{set $users[] = $el.autor}
{/foreach}
{* Получаем нужные данные из таблицы пользователей *}
{*
Первым параметром модификатор принимает массив с логинами пользователей.
Вторым параметром поля, которые требуется вернуть, чем больше полей,
тем тяжелее запрос, не забывайте.
Если второй параметр не указать — будут возвращены все данные о пользователе, кроме пароля.
На выходе получим массив, ключами которого являются логины, а значениями — массив данных о пользователе.
Это сделано для экономии ресурсов сервера,
ведь на странице может быть несколько новостей одного автора и не имеет смысл дёргать одного автора несколько раз.
*}
{set $arUsers = $users|getAuthors:'email, user_id, news_num, comm_num, foto'}
{* Удалем ненужную переменную *}
{unset $users}
{*Пробегаем по массиву с новостями*}
{foreach $list as $key => $el}
<p>{$el.title}</p>
{*
Выводим информацию об авторе новости в каждой новости
Нам заранее известен логин пользователя и известно,
что логин является ключом, поэтому будем обращаться к массиву,
полученных ранее пользователей, по ключу.
*}
<p>email: {$arUsers[$el.autor].email}</p>
<p>user_id: {$arUsers[$el.autor].user_id}</p>
<p>news_num: {$arUsers[$el.autor].news_num}</p>
<p>comm_num: {$arUsers[$el.autor].comm_num}</p>
<p>foto: {$arUsers[$el.autor].foto}</p>
{/foreach}
{$pages}
</div> <!-- #{$block_id} -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment