Не нравятся результаты поиска? Попробуйте другой поиск!

UserBox - вывод информации о любом пользователе в любом месте сайта на DLE 9.8 - 10.0


     30.06.2013    Модули для DLE    6560    25

Краткая информация о модуле (хаке)

Автор: ПафНутиЙ
Версия DLE: 9.8-10.x
Цена: Бесплатно
UserBox - простой модуль для вывода информации о любом пользователе в любом месте сайта на DLE 9.8 - 10.1.
Понадобится, если нужно вывести не только аватар с минимальной нагрузкой на сайт!
Модуль будет полезен тогда, когда нужно вывести информацию о каком-либо пользователе в произвольном месте сайта.
Например кулинарным сайтам, где нужно вывести информацию об авторе рецепта непосредственно в рецепт или личным (коллективным) блогам.

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

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


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

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

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



Скачать модуль UserBox, как всегда, можно только с github т.к. там удобнее поддерживать код и всегда актуальная версия.


Надеюсь модуль будет вам интересен и полезен. Жду отзывов!

Комментарии пользователей (25)

oazet
2

69 | 19

oazet - 1 июля 2013 01:26 - Юзер

Вот за это ОГРОМНОЕ спасибо, нужный, весьма нужный модуль.

ПафНутиЙ
1065

3395 | 2433

ПафНутиЙ - 1 июля 2013 12:50 - Админ

На здоровье!

Каков вопрос - таков и ответ. Просто помните об этом.

sadan
16

107 | 38

sadan - 2 июля 2013 03:45 - Юзер

просто нету слов суперский ! Спасибо Павел !

dj-avtosh
39

1479 | 390

dj-avtosh - 4 июля 2013 05:34 - шашлычник

Паш. Ты классный) особенно помню как долго ты там комменты придумывал в нем :D

skype: elhan.isaev

Cobalt
1 | 3

Cobalt - 6 августа 2013 17:31 - Юзер

Даже зарегистрировался, что бы сказать СПАСИБО :)

sashok7062005
1

23 | 1

sashok7062005 - 8 августа 2013 19:14 - Юзер

А можно этот модуль вставить например в текст новости при ее добавлении , а не в шаблон, например у меня есть новость и есть в ней пункт "мнения экспертов", можно этих экспертов добавить с помощью данного модуля?

ПафНутиЙ
1065

3395 | 2433

ПафНутиЙ - 8 августа 2013 20:50 - Админ

В текст новости нельзя вставить никакой модуль, это делается в целях безопасности. Вы можете завести несколько допполей, куда будете вставлять ники пользователей, а в шаблоне новости происать несколько строк подключения с значениями допполей в качестве переменных.
P.S. В блоге ответить не смог, т к он не заточен под мобильный.

Каков вопрос - таков и ответ. Просто помните об этом.

teleoperator27
10

122 | 34

teleoperator27 - 7 сентября 2013 20:05 - Юзер

Павел, не могли бы вы объяснить, что эти теги делают
[ufgiven_string]string: [ufvalue_string] 
[/ufgiven_string] [ufnotgiven_string]string: не заполнено
[/ufnotgiven_string] [ufgiven_multi]multi: [ufvalue_multi]
[/ufgiven_multi] [ufnotgiven_multi]multi: не заполнено
[/ufnotgiven_multi] [ufgiven_multi1]multi1: [ufvalue_multi1]
[/ufgiven_multi1] [ufnotgiven_multi1]multi1: не заполнено
[/ufnotgiven_multi1] [ufgiven_list]list: [ufvalue_list]
[/ufgiven_list] [ufnotgiven_list]list: не заполнено
[/ufnotgiven_list]"

Chapman
11 | 1

Chapman - 16 октября 2013 10:19 - Юзер

Добрый день, на 9.7 будет работать?

ПафНутиЙ
1065

3395 | 2433

ПафНутиЙ - 3 января 2014 20:00 - Админ

teleoperator27,
Это теги для вывода данных из допполей, просто у вас не созданы поля с заданными в тегах именами.

Chapman,
Да, по идее должен работать.

P.S.
Кстати, сегодня модуль обновился до версии 1.3

Каков вопрос - таков и ответ. Просто помните об этом.

Laidman
1

39 | 14

Laidman - 21 января 2014 14:25 - Юзер

Как сделать что бы теги [online][/online][offline][/offline] работали :(

teleoperator27
10

122 | 34

teleoperator27 - 8 февраля 2014 13:02 - Юзер

Что может мешать модулю выводить логины написаные кириллицей? Например, у меня есть юзер Яна Иванова.при попытке вывести модулем вместо лонгина выводится
ПользоватеРС 
ну и так далее. при изменении кодировки на utf-8 можно прочитать что пользователь с таким логином не найден. Сайт на win-1251. На сайте в utf все работает. куда копнуть?все файлы перекодированны в вин кодировку. Версия php или конфигурация сервера может иметь значение?

teleoperator27
10

122 | 34

teleoperator27 - 8 февраля 2014 21:41 - Юзер

кажется нашел баг, в пхпмайадмине прописано MySQL-кодировка: UTF-8 Unicode (utf8) сайт в 1251, таблицы в 1251, БД вся в 1251. по ходу из-за этого, но как бороться ума не приложу, доступа к my.cnf нет. И вобще не понимаю, почему так выводит, на сайте то все норм работает

albatros775
2

albatros775 - 13 июня 2015 15:57 - Юзер

Выглядет всё вот так:
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 15:42
user_reg_date: 10 июня 2015 22:50
user_info: не заполнено
ссылка на профиль юзера: /sp812/user/albatros775/

Почему не выводит аватарку и фамилию?

sadan
16

107 | 38

sadan - 13 июня 2015 18:38 - Юзер

в dle 10.5 изменена вывод аватара, у вас какая версия?

albatros775
2

albatros775 - 16 июня 2015 21:50 - Юзер

dle 10.5

sadan
16

107 | 38

sadan - 17 июня 2015 05:04 - Юзер

Жди обновления модуля, а пока можно так:
найти в userbox.php:
if (count(explode("@", $userField['foto'])) == 2) {
                    // Если граватар
                    $userField['foto'] = 'http://www.gravatar.com/avatar/' . md5(trim($userField['foto'])) . '?s=' . intval($user_group[$userField['user_group']]['max_foto']);

                }
                else {
                    // Если у нас
                    if ($userField['foto'] and (file_exists(ROOT_DIR . "/uploads/fotos/" . $userField['foto'])))
                        $userField['foto'] = $config['http_home_url'] . 'uploads/fotos/' . $userField['foto'];
                    else
                        $userField['foto'] = $config['http_home_url'] . 'templates/' . $config['skin'] . '/' . $cfg['defAvatar'];

                }

заменить на:
if( $userField['foto'] ) {
                if (strpos($userField['foto'], "//") === 0) $avatar = "http:".$userField['foto']; else $avatar = $userField['foto'];
                $avatar = @parse_url ( $avatar );
                if( $avatar['host'] ) {
                $userField['foto'] = $userField['foto'];
                } else $userField['foto'] = $config['http_home_url'] . "uploads/fotos/" . $userField['foto'];
                } else $userField['foto'] = "{THEME}/dleimages/noavatar.png";


убрал сервис gravatar, думаю особо не нужен
и заглушка &defAvatar не будет функционировать

shim
68 | 28

shim - 17 ноября 2015 13:06 - Юзер

dle 10.6
как на счет обновления модуля?
с выводом аватара проблема еще с 10.5 версии!

lehasta
1

35 | 8

lehasta - 16 января 2016 06:29 - Юзер

Если еще актуально

// Если у нас
                    if ($userField['foto'] and (file_exists(ROOT_DIR . "/uploads/fotos/" . $userField['foto'])))
                        $userField['foto'] = $config['http_home_url'] . 'uploads/fotos/' . $userField['foto'];
                    else
                        $userField['foto'] = $config['http_home_url'] . 'templates/' . $config['skin'] . '/' . $cfg['defAvatar'];

                }

Заменить на


// Если у нас
                    if ($userField['foto'] !=' '){
                        $config['http_home_url'] . 'uploads/fotos/' . $userField['foto'];
                    } else {
                        $userField['foto'] = $config['http_home_url'] . 'templates/' . $config['skin'] . '/' . $cfg['defAvatar'];
                    }
                }


Испытано на для 10.6

ПафНутиЙ
1065

3395 | 2433

ПафНутиЙ - 16 января 2016 12:38 - Админ


Каков вопрос - таков и ответ. Просто помните об этом.

dimavdv
9

192 | 33

dimavdv - 6 февраля 2016 18:57 - Юзер

Павел, Здравствуйте!

Подскажите пожалуйста как сделать чтоб так работало?
[aviable=showfull|userinfo|allnews]{include file="engine/modules/userbox.php?&userName=thisNewsId"}[/aviable]


в полной работает а вот в просмотре профиля и в просмотре новостей профиля не работает.

ПафНутиЙ
1065

3395 | 2433

ПафНутиЙ - 7 февраля 2016 12:28 - Админ

При просмотре профиля нет переменной, выводящий ID новости.
Нужно использовать
 &userName={login}

Каков вопрос - таков и ответ. Просто помните об этом.

dimavdv
9

192 | 33

dimavdv - 7 февраля 2016 14:10 - Юзер

К сожалению
&userName={login}
не работает! {login} - работает стандартно (мой профиль)

Вот как получается - http://prntscr.com/9zdnx9

ПафНутиЙ
1065

3395 | 2433

ПафНутиЙ - 7 февраля 2016 15:17 - Админ

Примеры использования:
{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"} 
выведет информацию об авторе новости при просмотре полной новости (при этом добавится один запрос). Подобная конструкция нужна на случай вывода вне шаблона полной новости. При выводе в шаблоне полной новости используйте &userName={login}

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

Каков вопрос - таков и ответ. Просто помните об этом.

Gorec
1

Gorec - 7 сентября 2016 13:53 - Юзер

ПафНутиЙ,
как правильно прописать строку?
Вот так выводиться правильно:
{include file="engine/modules/userbox.php?&userName=Admin&template=user-foto"}


а мне нужно не конкретный пользователь, а чтобы выводилась аватарка от того кто залогинен на сайте... вот так у меня не работает:
{include file="engine/modules/userbox.php?&userName=this&template=user-foto"}

пишет нет такого пользователя... как правильно обернуть "this", чтобы сработало?
Спасибо.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте