» » UserBox - вывод информации о любом пользователе в любом месте сайта на DLE 9.8 - 10.1 (Обновлен до v.1.3)

UserBox - вывод информации о любом пользователе в любом месте сайта на DLE 9.8 - 10.1 (Обновлен до v.1.3)

29.06
144
51 114
UserBox - вывод информации о любом пользователе в любом месте сайта на DLE 9.8 - 10.1 (Обновлен до v.1.3)


UserBox - простой модуль для вывода информации о любом пользователе в любом месте сайта на DLE 9.8 - 10.0.
Понадобится, если нужно вывести не только аватар с минимальной нагрузкой на сайт!
Модуль будет полезен тогда, когда нужно вывести информацию о каком-либо пользователе в произвольном месте сайта.
Например кулинарным сайтам, где нужно вывести информацию об авторе рецепта непосредственно в рецепт или личным (коллективным) блогам.

Краткая история о причинах создания модуля:

В сети есть один хак, который выводит аватар пользователя, добавившего новость. И у хака был один недостаток - он был хаком, а правки движка я не очень люблю. И вот на досуге я написал небольшой модуль, так и не увидевший свет.
С задачей он справлялся, но тут же захотелось вывести общее количество новостей пользователя и когда он был последний раз на сайте. А если я захочу вывести ещё и информацию о пользователе, а так же оформить блок в стиль сайта? Тут уже не обойтись без шаблона.
В итоге тот простой модуль перерос в чуть более сложный, который и получил название UserBox.

Возможности модуля UserBox:

  • Подключение одной строкой.
  • Вывод данных из профиля пользователя в любом месте сайта, на основе логина пользователя.
  • Вывод дополнительных полей профиля пользователя (выводятся только те, которые не являются личными).
  • Возможность использовать собственные шаблоны для вывода информации.
  • Настраиваемая заглушка-аватар на случай, если у пользователя нет аватара и нужно вывести не стандартную заглушку.
  • Кеширование результата работы модуля. Кеш создаётся с учётом логина пользователя, дефолтного аватара и используемого шаблона вывода модуля.
  • Вывод информации о текущем пользователе вне шаблона login.tpl
  • Вывод информации об авторе новости вне шаблона полной новости.


Особенности:

- Одна обязательная переменная в строке подключения - &userName. Именно через эту переменную модуль определяет для какого юзера выводить информацию.
- Добавляет один запрос на каждого выводимого модулем пользователя. Т.е. если выводить информацию об авторе новости в кратких новостях и на главной странице сайта выводится 30 новостей, которые опубликовали 10 пользователей (по три новости каждый) - то модуль при первом обращении к странице добавит 10 запросов в БД, после чего данные будут браться уже из кеша (при включенном кешировании на сайте). Если на второй странице попадётся пользователь с первой страницы, то запрос в БД на этого пользователя делаться не будет.
- Собственные теги для вывода в шаблоне. Отдельные теги сделаны для того, что бы не было конфликтов и для упрощения обработки этих тегов в модуле, что сократило кода процентов на 10-15 точно.
- Собственная папка с шаблонами. Так же для удобства использования.
- Выводятся не все данные. Т.к. выводить все данные о пользователе не имеет смысла, а так же в целях экономии ресурсов сервера выводятся следующие данные:
  1. email - Email пользователя
  2. name - Логин
  3. news_num - Кол-во новостей
  4. user_id - ID пользователя
  5. comm_num - Кол-во комментариев
  6. user_group - Группа (форматированный вывод с префиксами и суффиксами)
  7. lastdate - Дата последнего посещения сайта
  8. reg_date - Дата регистрации
  9. info - Информация о пользователе
  10. foto - URL аватарки (или настраиваемая заглушка)
  11. fullname - Полное имя
  12. land - Место проживания
  13. icq - Номер ICQ
  14. Дополнительные поля

Полный список поддерживаемых модулем тегов приведён в шаблоне userbox/dafault.tpl

Установка:


  1. Распаковать содержимое папки upload из архива в корень сайта, при этом не забывайте переименовать папку THEME в соответствии с названием текущего шаблона сайта.
  2. В нужном месте любого шаблона сайта прописать:
    {include file="engine/modules/userbox.php?&userName=login"}
    где login - логин пользователя.
  3. Всё!


Примеры использования:


вот такой вид блока в полной новости я сделал для покупателей шаблона Madison в довесок к последнему обновлению шаблона.
UserBox - вывод информации о любом пользователе в любом месте сайта на DLE 9.8 - 10.1 (Обновлен до v.1.3)


{include file="engine/modules/userbox.php?&userName={login}"}
выведет информацию о авторе, если эту строку прописать в шаблоне новости (краткой или полной) или комментария (к примеру можно вывести рейтинг пользователя).

{include file="engine/modules/userbox.php?&userName=this"}
выведет информацию о текущем пользователе, эту конструкцию можно использовать для вывода информации о текущем пользователе вне шаблона login.tpl.

{include file="engine/modules/userbox.php?&userName=thisNewsId"}
выведет информацию об авторе новости при просмотре полной новости (при этом добавится один запрос). Подобная конструкция нужна на случай вывода вне шаблона полной новости (например в main.tpl). При выводе в шаблоне полной новости используйте
&userName={login}


{include file="engine/modules/userbox.php?&userName=Бот&template=newtemplate&defAvatar=images/picture.jpg"}
Выведет информацию о пользователе с логином Бот, для вывода будет использован шаблон, лежащий в папке userbox/newtemplate.tpl, при этом если у пользователя нет аватарки (или не задан gravatar в настройках) - будет выведено изображение из папки images/picture.jpg.



Надеюсь модуль будет вам интересен и полезен. Жду отзывов!
Обновлено: 3 января 2014
(Добавлена возможность вывода информации об авторе новости вне шаблона полной новости.)

Похожие материалы

Комментарии

dj-avtosh
dj-avtosh 29 июня 2013 03:22
Молодец Паша)
IMP
IMP 29 июня 2013 08:09
thank you...
lsdoptom
lsdoptom 29 июня 2013 11:49
спасибо за модуль Павел.Кстати,когда выйдут ваши видео уроки?
ПафНутиЙ
ПафНутиЙ 30 июня 2013 21:48
В техническом плане препятствий уже нет, осталось сесть и записать.
sadan
sadan 2 июля 2013 06:26
не работает вывод рейтинга пользователя
sadan
sadan 2 июля 2013 07:09
упс! извиняюсь, работает!
Разобрался, просто рейтинг другой
sashok7062005
sashok7062005 8 августа 2013 18:08
А можно этот модуль вставить например в текст новости при ее добавлении , а не в шаблон, например у меня есть новость и есть в ней пункт "мнения экспертов", можно этих экспертов добавить с помощью данного модуля?
Golden_Eagle
Golden_Eagle 20 сентября 2013 12:44
Скачал новую версию модуля, ввёл как вы сказали
&userName=this

получилось так
{include file="engine/modules/userbox.php?&userName=this"}

После чего вышло: Пользователь с логином this не найден. Что делать?? Скачана была новая версия на тот момент sad
ПафНутиЙ
ПафНутиЙ 20 сентября 2013 14:15
заключите строку подключения в теги
[not-group=5]{строка}[/not-group]

ну и авторизуйтесь конечно же)
Golden_Eagle
Golden_Eagle 21 сентября 2013 09:30
Цитата: ПафНутиЙ
ну и авторизуйтесь конечно же)

Я авторизован на сайте в данный момент как админ. Может это из за того, что у меня сайт Windows-1251 а модуль на UTF 8. Вы могли бы его переделать на 1251?? feel
ПафНутиЙ
ПафНутиЙ 21 сентября 2013 13:10
Перекодировать модуль можете самостоятельно, это не сложно, делается в любом нормальном редакторе и гугл знает как)
Я тестировал модуль на dle10 - возможно в более старых версиях в реквесте нет нужных данных. Вечером проверю.
Golden_Eagle
Golden_Eagle 21 сентября 2013 14:35
Сделайте для 9.8, перекодирую через notepad++
На DLE 10 не тестировал ещё. Так как целевой сайт на 9.8
ПафНутиЙ
ПафНутиЙ 22 сентября 2013 02:07
Да, ошибочка там была небольшая.
Переписал функционал определения текущего пользователя на более правильный, теперь всё как надо работает!
Golden_Eagle
Golden_Eagle 23 сентября 2013 12:42
Спасибо, павел, но одно "Но", у меня не работают доп.поля. У меня поле называется pgcpoints например, код вывода получается такой:
[ufgiven_pgcpoints]<span style="color:red;">pgcpoints: </span>[ufvalue_pgcpoints] <br>[/ufgiven_pgcpoints]
[ufnotgiven_pgcpoints]<span style="color:red;">pgcpoints:</span> Отсутствуют<br>[/ufnotgiven_pgcpoints]

Но не работает sad В чём может быть причина?
ПафНутиЙ
ПафНутиЙ 23 сентября 2013 12:59
поля личные или доступны всем?
Golden_Eagle
Golden_Eagle 23 сентября 2013 13:21
Название поля: pgcpoints
Описание поля: PGC Points
Тип поля: Одна строка
При регистрации: Нет
Редактирование: Нет (Только Админ)
Личное: Да.
------------------
Это я взял из панели управления сайтом. Но хотелось бы чтоб эти поля были личными, так как это количество очков (или валюты) сайта. У каждого пользователя.
ПафНутиЙ
ПафНутиЙ 23 сентября 2013 13:35
Цитата: Golden_Eagle
Личное: Да.

А в описании сказано:
Вывод дополнительных полей профиля пользователя (выводятся только те, которые не являются личными).

Вот вы и сами ответили на вопрос)
Golden_Eagle
Golden_Eagle 23 сентября 2013 13:39
Можно ли сделать чтоб выводились любые поля?? wink
Так как аналогов модулю нет, а цели огромные :)
ПафНутиЙ
ПафНутиЙ 23 сентября 2013 13:57
https://gist.github.com/pafnuty/6668515
Golden_Eagle
Golden_Eagle 23 сентября 2013 14:36
Спасибо огромное, Павел wink Что бы я без вас делал wink Вы супер!!! wink Я бы даже вам денег заплатил за вашу работу feel
ПафНутиЙ
ПафНутиЙ 23 сентября 2013 14:39
Да без проблем, я всегда им рад)) http://pafnuty.name/obo_mne.html реквизиты внизу.

P.S. позже сделаю возможным отключения фильтрации личных полей, а то нелогично получается действительно. Текущего юзера выводим, а его личные поля он не может видеть)
Golden_Eagle
Golden_Eagle 23 сентября 2013 15:03
wink мастер! request
vasyok28
vasyok28 30 сентября 2013 21:46
Здравствуйте в чем суть проблемы, поставил модуль UserBox
Мне нужно при просмотре странице sait.net/user/login отображалось информация того пользователя чею страницу смотришь, например sait/user/vasyo28, эту страницу смотрит dimas и что бы не отображалось информацию dimas на sait/user/vasyo28. На скриншотах можно все увидить.
http://savepic.net/3882931.png
http://savepic.net/3869619.png
ПафНутиЙ
ПафНутиЙ 30 сентября 2013 21:50
как выглядит строка подключения модуля? адрес сайта есть?
vasyok28
vasyok28 30 сентября 2013 22:51
в main.tpl
{include file="engine/modules/userbox.php?&userName=this"}
сайт пока на локалке, представлю любой код, только помогите очень нужно
ПафНутиЙ
ПафНутиЙ 30 сентября 2013 23:29
this - выводит информацию о текущем пользователе, т.е. о том, который в данный момент залогинен.
vasyok28
vasyok28 30 сентября 2013 23:33
я знаю, {login} не работает. Весь день ломаю голову как решить проблему
vasyok28
vasyok28 1 октября 2013 13:52
примерно мне нужно {include file="engine/modules/userbox.php?&userName={login}"}
Только не работает recourse
ПафНутиЙ
ПафНутиЙ 1 октября 2013 15:13
Вы похоже не уловили суть работы модуля.
Что вы ему скармливаете - то он и показывает.
Передавайте ему имя пользователя (это зависит от того, в каком месте шаблона вы выводите модуль) и он будет показывать то, что хотите.
vasyok28
vasyok28 1 октября 2013 16:22
Мне нужно при просмотре полной информации пользователя в моем случае sait.net/user/vasyok28
Если написать ник, будет только одна статистика. Так сказать для каждого пользователя своя статистика
Например если я зайду под другим ником на адрес sait.net/user/vasyok28, чтобы показывало информацию не мою

Добавить комментарий

Комментировать могут только зарегистрированные пользователи

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.