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

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

29.06
144
64 017
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
(Добавлена возможность вывода информации об авторе новости вне шаблона полной новости.)

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

Комментарии

souz21
souz21 15 марта 2014 10:07
ПафНутиЙ,
А что, группа будет отображаться авторизованным пользователям? Зашел как админ, группа администратор отображается в короткой новости. Зашел как гость, везде надпись Пользователь с логином this не найден. Зашел как журналист, везде отображается иконка журналиста.
Разве нельзя сделать так, чтобы отображался статус группы, который разместил новость в не зависимости от авторизации и группы? Чтобы все пользователи и гости видели в короткой новости статус группы, которой принадлежит новость?

В чем смысл данного хака тогда?
ПафНутиЙ
ПафНутиЙ 15 марта 2014 10:20
А строка подключения модуля располагается в шаблоне краткой новости или полной?
souz21
souz21 15 марта 2014 10:58
ПафНутиЙ,
Строка подключения в краткой новости. Но хотелось бы вывести и в полной
ПафНутиЙ
ПафНутиЙ 15 марта 2014 11:05
{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.
souz21
souz21 15 марта 2014 11:29
Спасибо! Понял теперь.
Подключил как:
{include file="engine/modules/userbox.php?&userName={login}&userbox=default"}

теперь вроде всем отображается группа, которой принадлежит новость
samo733792
samo733792 30 мая 2014 17:25
ПфНутиЙ, большое спасибо за модуль, он мне ну просто спасает, использую его уже много месяцев и вот только сегодня решил благодарить feel
NameUser
NameUser 8 июня 2014 18:42
Благодарю за модуль. Единственное, что не понравилось - это ссылка на профиль пользователя. А поисковики, главное, индексируют обе ссылки (и от модуля и ту, что генерит DLE).

Решил очень просто. Открыл \engine\modules\userbox.php

Это:

else {
$user_page = "$PHP_SELF?subaction=userinfo&user=" . urlencode($userField['name']);
}


Заменил на это:

else {
$user_page = "/user/" . urlencode($userField['name']);
}
Vaterland
Vaterland 28 июля 2014 20:47
Привет! Поставил модуль на 10.2 и выводиться такая вещь: https://www.dropbox.com/s/uy67rtsca6tdgzb/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA.JPG

Я так понял он не пашет? PHP 5.4
ПафНутиЙ
ПафНутиЙ 28 июля 2014 20:52
Если бы не пахал - информация о пользователе не вывелась бы.
Просто нужно настроить шаблон под себя.
serik
serik 31 августа 2014 02:49
I can not upload an avatar, but "not_user_foto" don't work!
serik
serik 31 августа 2014 02:50
[not_user_foto]<img src="/genderavatar.png" /> [/not_user_foto] don't work
ПафНутиЙ
ПафНутиЙ 1 сентября 2014 22:19
site url?
serik
serik 1 сентября 2014 23:15
userbox sourche code http://imagizer.imageshack.com/img538/3271/qEAvB9.png

web site html sourche code
http://imagizer.imageshack.com/img661/3808/uqizRp.png
ПафНутиЙ
ПафНутиЙ 3 сентября 2014 20:15
clear dle cache
serik
serik 3 сентября 2014 22:57
clear cache; did not change.
I'm using 10.2 version, so it should be.
serik
serik 3 сентября 2014 23:00
Thanks for userbox.
zemekis
zemekis 9 сентября 2014 13:36
Подскажите, можно ли с помощью этого модуля вывести на главную последнего зарегистрированного пользователя. Если да, то как?
ПафНутиЙ
ПафНутиЙ 9 сентября 2014 19:45
Нет, без модификации модуля нельзя.
AML
AML 10 октября 2014 19:43
hi ПафНутиЙ
how to add online/offline user status to userbox module?
thx
AML
AML 10 октября 2014 19:47
I am using the following code:

if ( ($userField['lastdate'] + 1200) > $_TIME ) {
$tpl->set( '[online]', "" );
$tpl->set( '[/online]', "" );
$tpl->set_block( "'\[offline\](.*?)\/offline\]'si", "" );
} else {
$tpl->set( '[offline]', "" );
$tpl->set( '[/offline]', "" );
$tpl->set_block( "'\[online\](.*?)\[/online\]'si", "" );
}
ПафНутиЙ
ПафНутиЙ 10 октября 2014 23:12
Hi, module operation is cached and loses the tag descriptiveness.
pronchak
pronchak 6 декабря 2014 03:13
Привет, Паша! Не выводится аватарка, вместо картинки просто написан url по которому она находится. Вот так: http://сайт.ру/uploads/fotos/foto_1.png
ПафНутиЙ
ПафНутиЙ 6 декабря 2014 10:15
Так и должно быть.
pronchak
pronchak 6 декабря 2014 13:46
Так саму картинку, то есть аву не возможно вывести? Ведь ссылка даже не кликабельна. Тогда не понимаю какой смысл от модуля. Ведь по скрину твоего шаблона Мэдисон видно, что изображение есть.
ПафНутиЙ
ПафНутиЙ 6 декабря 2014 15:24
Думаю для начала следует понять, что такое картинка http://htmlbook.ru/html/img
и как можно "превратить" ссылку на картинку в саму картинку smile
pronchak
pronchak 6 декабря 2014 17:08
Поумничал, молодец Паша)))
ПафНутиЙ
ПафНутиЙ 6 декабря 2014 23:35
Просто иногда полезно думать своей головой.
pronchak
pronchak 7 декабря 2014 00:32
Ты не понял...в том то и дело, что и по твоему запатентованому уникальному методу не заработало!!!
sashok7062005
sashok7062005 27 января 2015 22:14
А можно добавить возможность модулю выводить 2 ссылки - Все новости пользователя и комментарии пользователя????, так как в профиле
ПафНутиЙ
ПафНутиЙ 27 января 2015 23:16
Это можно сделать на уровне шаблона.

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

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

Информация

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