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

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

29.06
145
25 713
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)

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

Комментарии

sashok7062005
sashok7062005 28 января 2015 01:05
ПафНутиЙ,
На уровне шаблона модуля, или на уровне шаблона сайта?
sashok7062005
sashok7062005 28 января 2015 01:07
На уровне шаблона модуля, или на уровне шаблона сайта?
ПафНутиЙ
ПафНутиЙ 28 января 2015 17:28
шаблона модуля конечно же.
sashok7062005
sashok7062005 28 января 2015 18:34
Спасибо что подсказали в каком направлении копать, все нашел, еще раз - СПАСИБО.
Yanat
Yanat 15 мая 2015 22:06
Здравствуйте.
Это всё интересно и познавательно, но что то до меня не дошло...
Как вывести лишь рейтинг текущего пользователя на главной.
Прописал так но что то не то...

{include file="engine/modules/userbox.php?&userName=this&userbox={user_rating}"}

Буду признателен за помощь!
ПафНутиЙ
ПафНутиЙ 15 мая 2015 22:11
модуль не выводит рейтинг.
Yanat
Yanat 15 мая 2015 22:19
ПафНутиЙ,
Спасибо.

Может подскажите каким макаром можно вывести рейтинг на главной?
ПафНутиЙ
ПафНутиЙ 16 мая 2015 12:08
Ну разве что допилить модуль.
Yanat
Yanat 16 мая 2015 14:39
ПафНутиЙ,
Очень мудрое решение...
Когда ждать?
ПафНутиЙ
ПафНутиЙ 16 мая 2015 15:54
Вы наверное меня не правильно поняли. Я предложил вам самостоятельно попробовать реализовать вывод рейтинга т.к. я это делать не планирую.
Yanat
Yanat 16 мая 2015 16:01
ПафНутиЙ,
Жаль..., если б руки с того места росли...
Ну, спасибо и на этом.
albatros775
albatros775 13 июня 2015 15:16
Вот что у меня выводит:

Альбина
user_foto: /sp812/templates/sp812/dleimages/noavatar.png
user_news_num: не заполнено
user_comm_num: не заполнено
user_user_id: 2
user_user_group: Администраторы
user_lastdate: 13 июня 2015 14:50
user_reg_date: 10 июня 2015 22:50
user_info: не заполнено
ссылка на профиль юзера: /sp812/user/albatros775/

Почему не выводит аватарку и Фамилию?
ПафНутиЙ
ПафНутиЙ 15 июня 2015 22:38
- Выводятся не все данные. Т.к. выводить все данные о пользователе не имеет смысла, а так же в целях экономии ресурсов сервера выводятся следующие данные:
email - Email пользователя
name - Логин
news_num - Кол-во новостей
user_id - ID пользователя
comm_num - Кол-во комментариев
user_group - Группа (форматированный вывод с префиксами и суффиксами)
lastdate - Дата последнего посещения сайта
reg_date - Дата регистрации
info - Информация о пользователе
foto - URL аватарки (или настраиваемая заглушка)
fullname - Полное имя
land - Место проживания
icq - Номер ICQ
Дополнительные поля
albatros775
albatros775 1 июля 2015 19:39
ПафНутиЙ,
почему вместо авы ссылка к ней
ПафНутиЙ
ПафНутиЙ 1 июля 2015 21:15
А что должно быть, и чем отличается
/image.png

от
<img src="/image.png" >
?
SkiFteL
SkiFteL 12 июля 2015 20:45
Подскажите в чем проблема?
Не выводится аватар пользователя.
No avatar - выводится, а вот если загрузить свою авку то нет...

Заранее благодарен!
DLE 10.5
ПафНутиЙ
ПафНутиЙ 13 июля 2015 22:32
Лмбо баг на сайте, либо в модуле, для более точного диагноза нужен пациент.
Сержант
Сержант 3 августа 2015 20:31
Аналогично...
Если закоментировать сроки
// else
// $userField['foto'] = $config['http_home_url'] . 'templates/' . $config['skin'] . '/' . $cfg['defAvatar'];

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

К стати, у модуля iComm тоже беда с аватарками...ссылку на картинку выводит в таком виде:
/uploads/fotos/http://сайт.ру/uploads/fotos/foto_1.jpg


P.S. Шаблон дефолтный, версия DLE 10.5 (чистая).
Сержант
Сержант 6 августа 2015 19:44
В PHP не силен, но методом "тыка" пришел к выводу, что функция file_exists возвращает значение false вместо true.

Аватарка начинает корректно отображаться, если написать так:
// Если у нас
if ($userField['foto'])
$userField['foto'] = $userField['foto'];
else
$userField['foto'] = $config['http_home_url'] . 'templates/' . $config['skin'] . '/' . $cfg['defAvatar'];

но это бред какой-то...
ПафНутиЙ
ПафНутиЙ 6 августа 2015 23:44
Так может не в модулях проблема?
klaf
klaf 4 сентября 2015 22:36
Ещё с июня известно о проблеме в модуле. И человек подсказал решение:
http://dle-faq.ru/modules/5943-userbox-vyvod-informacii-o-lyubom-polzovatele-v-lyubom-meste-sayta-na-dle-98-100.html
ПафНутиЙ
ПафНутиЙ 8 сентября 2015 16:34
Ждите обновления.
sashok7062005
sashok7062005 24 сентября 2015 18:54
Не всегда выводило фото пользователя, а в наглую вставляло заглушку , взял поменял блок с фото на такой ( с другого модуля)
	// Если у нас
					if($row['foto']) $foto = $config['uploads/fotos/']  . $row['foto'];
			else $foto = "{THEME}/dleimages/noavatar.png";
, все заработало. вопрос - можно так?
shim
shim 20 ноября 2015 13:32
dle 10.6
как на счет обновления модуля?
с выводом аватара проблема еще с 10.5 версии!
Crashlabs
Crashlabs 22 ноября 2015 13:28
Здравствуйте!
Хотелось бы уточнить планируется ли обновление модуля?
Модуль отлично выполняет свои функции за исключением вывода аватара. Аналогов других нет.
ПафНутиЙ
ПафНутиЙ 22 ноября 2015 20:05
shim,
Crashlabs,
У меня пока нет возможности заниматься этим модулем.
Но ведь модуль бесплатный, лежит на гитхабе, никто не запрещает зайти на https://github.com/dle-modules/userbox, форкнуть репозиторий, поправить то, что нужно и отправить pull-rquest, я с радостью его одобрю и будет новая версия.

shim,
не верю, что вы столько времени спокойно терпите ошибку в модуле.
Gott
Gott 7 ноября 2016 15:04
Как аву автора новости вывести ?
ПафНутиЙ
ПафНутиЙ 7 ноября 2016 22:57
{user_foto}
Gott
Gott 6 декабря 2016 02:25
Привет Пафнутий!
Помоги пожалуйста ;)

Возможно ли вывести аватар пользователя в краткой и полной новости (аватар автора)
Я прост не до конца понял как работает модуль и есть ли вообще в нем необходимая мне функция ?
ПафНутиЙ
ПафНутиЙ 6 декабря 2016 08:07
Да, возможно. Для этого достаточно уставновить модуль и вывести его на странице с шаблоном по умолчанию, в этом шаблоне как раз представлены все теги, которые может вывести модуль. Вас интересует тег {user_foto}

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

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

Информация

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