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

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

29.06
145
25 727
DLE-UserBox - вывод информации о любом пользователе в любом месте сайта на DLE 12.x - 13.x (Обновлен до v.1.6)


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

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

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

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

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


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


- Одна обязательная переменная в строке подключения - &userName. Именно через эту переменную модуль определяет для какого юзера выводить информацию.
- Добавляет один запрос на каждого выводимого модулем пользователя. Т.е. если выводить информацию об авторе новости в кратких новостях и на главной странице сайта выводится 30 новостей, которые опубликовали 10 пользователей (по три новости каждый) - то модуль при первом обращении к странице добавит 10 запросов в БД, после чего данные будут браться уже из кеша (при включенном кешировании на сайте). Если на второй странице попадётся пользователь с первой страницы, то запрос в БД на этого пользователя делаться не будет. Если же пользователь видит информацию о самом себе, то запрос не выполняеться а берется с глобальной переменой.
Собственная папка с шаблонами. Для удобства использования.
Можно добавлять свои ячейки с таблицы _users
Модуль выводит следующие данные:
  1. Ник пользователя
  2. E-mail пользователя
  3. ID пользователя
  4. Количество новостей и ссылка на все новости пользователя
  5. Количество комментариев и ссылка на все комментарии пользователя
  6. Группа пользователя (форматированный вывод с префиксами и суффиксами)
  7. Дата последнего входа
  8. Дата регистрации
  9. Поле «О Себе»
  10. Поле «Подпись»
  11. Аватар пользователя
  12. Полное имя пользователя
  13. Место жительства пользователя
  14. Забанен ли пользователь
  15. Дополнительные поля пользователя (выводятся только те, которые не являются личными)

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



Установка:


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


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


вот такой вид блока в полной новости я сделал для покупателей шаблона Madison в довесок к последнему обновлению шаблона.


{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.


Дополнительная документация от автора релиза 1.6



Надеюсь модуль будет вам интересен и полезен. Жду отзывов!
Обновлено: 18 ноября 2018
(Релиз версии 1.6)

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

Комментарии

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, чтобы показывало информацию не мою

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

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

Информация

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