Список блоггеров в блоке.

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

Аватар пользователя mperocedwi mperocedwi 11 мая 2011 в 18:33

Доброго времени суток, уважаемые! Хочу поделиться проблемой решением проблемы:
Стала задача - вывести в блок список самых активных блоггеров. Вывести имя пользователя и количество нод типа Blog post, оставленных им. Сортировка по убыванию по количеству постов. И имя каждого пользователя в добавок ко всему должно было выводиться ссылкой на его блог.

В итоге получилось следующее:

Как получилось? Под катом.

Итак, по порядку. Что я имел для достижения цели:
Drupal 7.x
Views 3.0-beta3

Рецепт получения блока:

Делаем новую вьюшку и делаем дисплей Block.
Мы будем выводить поля. По сему ставим Show:Fields
Фильтр: по типу содержимого Blog entry. Ставим Content: Type (= Blog entry)

Какие мы выводим поля:
- User: Name (ставим галку на Exclude from display, так как нам нужно просто взять из базы данных значение, но фактически не показывать его в данном поле. Почему - опишу ниже.)
- User: Uid (ставим галку на Exclude from display по той же причине)
- Content:Nid. При добавлении поля Views спросит о группировке, укажите Count. Таким образом мы получаем количество постов в блоге от определённого пользователя. После указания группировки Count, поле Content:Nid будет содержать только количество записей блога на каждого пользователя.
Вот тут и начинается самое интересное: нужно вывести имя блоггера, рядом показать счётчик постов, и это поле сделать ссылкой на блог пользователя. Я долго ломал голову как это реализовать, но Dealancer подсказал отличное решение: переписать поле. Действительно: у нас есть имя пользователя, его uid и количество его постов. Почему бы не вывести это в таком порядке, в каком нам это необходимо?
Есть замечательная опция у большинства полей: REWRITE RESULTS. Это свойство поля заменять свой текст по определённым правилам, которые описаны в разделе Replacement patterns, если раскрыть свойство REWRITE RESULTS.
В свойствах поля Content:Nid раскроем REWRITE RESULTS:

Поставим галочки на
[x] Rewrite the output of this field
[x] Output this field as a link
Что даст нам возможность изменять содержание поля и ссылку поля.

После расстановки галочек появятся дополнительные опции Text и Link path. Эти поля определяют текст поля и его ссылку соответственно. Они-то нам и нужны.
Нам необходимо вывести в следующем порядке: Автор (кол_во_постов постов), если сказать по-человечески: Admin (25 постов)
Мы помним, что количество постов у нас хранит поле Content:Nid. По этому дадим имя нашему полю:
[name] ([nid] постов)

Чтобы попасть на страницу блога пользователя, нужно перейти по адресу example.com/blog/user_id
А значит ссылка у нас будет вида blog/[uid]

Сохраняем, и вуаля! Осталось только сделать сортировку по убыванию количества постов. То есть чем больше постов, тем выше в списке будет показываться блоггер.

Для этого поставим сортировку по убыванию значения поля Content:nid. Напоминаю, Content:nid хранит количество постов.
COUNT(Content: Nid) (desc)

В конечном итоге вьюшка преобретает следующий вид

Надеюсь мой опыт будет кому нибудь полезен Wink
Спасибо пользователю Dealancer за неоценимую помощь!

Комментарии

Аватар пользователя mperocedwi mperocedwi 11 мая 2011 в 22:20

"q2_faith" wrote:
все гениальное просто) спасибо)

Над кажущейся простотой я сидел с бубном полдня Smile Но тем не менее, получилось просто. Хоть и сложно было до этого додуматься Smile

Аватар пользователя Dorian76453 Dorian76453 25 июня 2011 в 17:20

я что-то на 6-ке не могу настроить. может кто подскажет.
выводит имя юзера, ссылку на блог. но вот кол-во записей показывает не правильно.

«Content:Nid. При добавлении поля Views спросит о группировке, укажите Count.»
не совсем понял этот момент. в 6-й версии не нашел этого.
Подскажите плз.

Аватар пользователя sergip sergip 26 июня 2011 в 15:56

"Dorian76453" wrote:
«Content:Nid. При добавлении поля Views спросит о группировке, укажите Count.»
не совсем понял этот момент. в 6-й версии не нашел этого.
Подскажите плз.

Тоже интересно

Аватар пользователя superintendent superintendent 5 сентября 2012 в 6:42

Quote:
User: Name

нету такого в 7ке.

Quote:
User: Uid

есть поле Content: Nid; такого - User: Uid нету.

Quote:
- Content:Nid. При добавлении поля Views спросит о группировке, укажите Count.

где указывать группировку? в 6ке было, в 7ке не могу найти.

Аватар пользователя q2_faith q2_faith 5 сентября 2012 в 11:26

"K.V." wrote:
есть поле Content: Nid; такого - User: Uid нету.

через релэйшн
"K.V." wrote:
где указывать группировку? в 6ке было, в 7ке не могу найти.

включите агрегацию и тут же найдете