Views - снова он

Главные вкладки

Аватар пользователя Asta Asta 17 июля 2016 в 17:03

Добрый день!
На сайте имеется обычный вывод комментариев, я пытаюсь создать блок views для вывода информации о пользователе (как на обычном форуме, ник, аватарка, количество комментариев), В принципе блок создал, все работает, информация выводится, вот только в выводе выводятся сразу все пользователи и я не понимаю как создать фильтр, что бы выводился только тот пользователь который создал тему/прокомментировал.

Я пытался в Критерии фильтрации добавлять "Содержимое: UID Автора", в контекстные фильтры "Содержимое: Пользователь написавший или прокомментировавший" - ничего не помогает, оно либо отображает всех авторов, либо тех которые когда либо комментировали, либо вообще ничего.

Как мне правильно настроить свой блок?
Вот привожу свой вьювс
вьювс

П.С. Так же еще вопрос, как мне прикрутить данный вьювс к сообщениям, что бы напротив каждого отображался? Я конечно могу вывести программно в node.tpl.php, но ведь в таком случае вьювс будет одного и того же автора писать везде. Может есть какой-то другой способ?

Буду очень благодарен за ответ!

Комментарии

Аватар пользователя Asta Asta 18 июля 2016 в 11:49

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

Аватар пользователя Orion76 Orion76 18 июля 2016 в 6:26

Asta wrote:

Так я вывожу не в профиль, а в ноду, или я вас не так понял?

Поняли правильно.
Я выяснял, какие в наличии аргументы для контектного фильтра вьюса.
Значит у нас есть nid текущей ноды.
А чьи комментарии интересуют?
Автора ноды или текущего пользователя пользователя ( просматривающего ноду)?

Аватар пользователя Asta Asta 18 июля 2016 в 11:51

Комментарии интересуют всех и автора ноды и автора комментария. Суть сделать как на обычном форуме (смотрите скрин на мой ответ пользователю shishka0228)

Аватар пользователя Asta Asta 18 июля 2016 в 13:02

В общем мне удалось вывести блок views через фильтр "Если есть материал, то использовать его автора" который выводи информацию о пользователе создавшего ноду.
Прикрутил данный блок программно в comment.tpl.php, но он все равно выводит информацию о создателе ноды. Теперь стоит вопрос как сделать так, что бы в комментариях он выводил информацию о создателе комментария

Аватар пользователя Orion76 Orion76 18 июля 2016 в 13:22

Asta wrote:

Прикрутил данный блок программно в comment.tpl.php

Выводите в комментарии не блок, а сам вьюс этой функцией:
http://www.drupalcontrib.org/api/drupal/contributions%21views%21views.mo...

Тогда можно передать в вьюс uid непосредственно автора комментария (3-й и следующие аргументы функции - это параметры контекстных фильтров вьюса)

Аватар пользователя Asta Asta 18 июля 2016 в 15:28

а можно как-то по другому реализовать данный функционал?
а то я чуть сайт не положил этой штукой

Аватар пользователя Orion76 Orion76 18 июля 2016 в 18:29

Asta wrote:

а можно как-то по другому реализовать данный функционал?

проще только ассемлбером-)
Чтоб сайт не ложился надо кэшировать вьюсы..

Все другие способы или не используют вьюс (прямые запросы к БД) или используют туже функцию..

Кэширование в любом случае необходимо, т.к. считай для каждого коммента делается как минимум по одному запросу к БД с кучей джойнов.

Аватар пользователя Asta Asta 18 июля 2016 в 21:08

Если делать по аналогии как на сайте который я привел ранее, то:

<?php
echo views_embed_view('block-views-user-statistics-window-block--2', 'block');
?>

но я уверен, что это не правильно, так как должны быть еще какие-то аргументы насколько я понимаю. Вот еще http://drupal.stackexchange.com/questions/14103/how-do-i-embed-a-view-in... нашел один сайт с ответом "print views_embed_view('faculty_core','block_1', $node->nid);"

P.S. "block-views-user-statistics-window-block--2" потому что такое системное имя блока вьюхи. Это кстати тот вьювс который выводит информацию о пользователе, но как видите везде один пользователь, так как вывод привязан к контекстному фильтру "Если есть материал, то использовать его автора" который обращается к автору ноды, а не комментария.
вьювс

Аватар пользователя Orion76 Orion76 18 июля 2016 в 21:23

Asta wrote:

так как должны быть еще какие-то аргументы насколько я понимаю.

Orion76 wrote:

тогда можно передать в вьюс uid непосредственно автора комментария (3-й и следующие аргументы функции - это параметры контекстных фильтров вьюса)

Аватар пользователя Asta Asta 18 июля 2016 в 21:46

Видимо уже долго сижу, что начинаю смотреть мимо строк.
Спасибо
Нашел $comment->uid, осталось прикрепить к views_embed_view

Аватар пользователя Asta Asta 18 июля 2016 в 21:56

Получилось!
Спасибо всем огромное за ответы, особая благодарность пользователю Orion76
---------
На будущее таким умникам как я которые хотят вывести информацию о пользователе который прокомментировал:
Создаете вьюху, в контекстный фильтр ставите "Комментарии UID Автора" выбираете "Передать значение по умолчанию " + ID пользователя из URL и галочку "Если есть материал, то использовать его автора"

а в шаблон comment.tpl.php приписывайте:

<?php
print views_embed_view("user_statistics_window","default",$comment->uid);
?>

Где user_statistics_window - системное имя вашей вьюхи
а $comment->uid - вывод айди пользователя прокомментировавшего материал