Краткая информация о модуле (хаке)
Автор: ПафНутиЙ
Версия DLE:
9.8-10.x
UserBox - простой модуль для вывода информации о любом пользователе в любом месте сайта на DLE 9.8 - 10.1.
Понадобится, если нужно вывести не только аватар с минимальной нагрузкой на сайт!
Модуль будет полезен тогда, когда нужно вывести информацию о каком-либо пользователе в произвольном месте сайта.
Например кулинарным сайтам, где нужно вывести информацию об авторе рецепта непосредственно в рецепт или личным (коллективным) блогам.
С задачей он справлялся, но тут же захотелось вывести общее количество новостей пользователя и когда он был последний раз на сайте. А если я захочу вывести ещё и информацию о пользователе, а так же оформить блок в стиль сайта? Тут уже не обойтись без шаблона.
В итоге тот простой модуль перерос в чуть более сложный, который и получил название UserBox.
- Добавляет один запрос на каждого выводимого модулем пользователя. Т.е. если выводить информацию об авторе новости в кратких новостях и на главной странице сайта выводится 30 новостей, которые опубликовали 10 пользователей (по три новости каждый) - то модуль при первом обращении к странице добавит 10 запросов в БД, после чего данные будут браться уже из кеша (при включенном кешировании на сайте). Если на второй странице попадётся пользователь с первой страницы, то запрос в БД на этого пользователя делаться не будет.
- Собственные теги для вывода в шаблоне. Отдельные теги сделаны для того, что бы не было конфликтов и для упрощения обработки этих тегов в модуле, что сократило кода процентов на 10-15 точно.
- Собственная папка с шаблонами. Так же для удобства использования.
- Выводятся не все данные. Т.к. выводить все данные о пользователе не имеет смысла, а так же в целях экономии ресурсов сервера выводятся следующие данные:
Полный список поддерживаемых модулем тегов приведён в шаблоне userbox/dafault.tpl
вот такой вид блока в полной новости я сделал для покупателей шаблона Madison в довесок к последнему обновлению шаблона.
Надеюсь модуль будет вам интересен и полезен. Жду отзывов!
Понадобится, если нужно вывести не только аватар с минимальной нагрузкой на сайт!
Модуль будет полезен тогда, когда нужно вывести информацию о каком-либо пользователе в произвольном месте сайта.
Например кулинарным сайтам, где нужно вывести информацию об авторе рецепта непосредственно в рецепт или личным (коллективным) блогам.
Краткая история о причинах создания модуля:
В сети есть один хак, который выводит аватар пользователя, добавившего новость. И у хака был один недостаток - он был хаком, а правки движка я не очень люблю. И вот на досуге я написал небольшой модуль, так и не увидевший свет.С задачей он справлялся, но тут же захотелось вывести общее количество новостей пользователя и когда он был последний раз на сайте. А если я захочу вывести ещё и информацию о пользователе, а так же оформить блок в стиль сайта? Тут уже не обойтись без шаблона.
В итоге тот простой модуль перерос в чуть более сложный, который и получил название UserBox.
Возможности модуля UserBox:
- Подключение одной строкой.
- Вывод данных из профиля пользователя в любом месте сайта, на основе логина пользователя.
- Вывод дополнительных полей профиля пользователя (выводятся только те, которые не являются личными).
- Возможность использовать собственные шаблоны для вывода информации.
- Настраиваемая заглушка-аватар на случай, если у пользователя нет аватара и нужно вывести не стандартную заглушку.
- Кеширование результата работы модуля. Кеш создаётся с учётом логина пользователя, дефолтного аватара и используемого шаблона вывода модуля.
- Вывод информации о текущем пользователе вне шаблона login.tpl
- Вывод информации об авторе новости вне шаблона полной новости.
Особенности:
- Одна обязательная переменная в строке подключения - &userName. Именно через эту переменную модуль определяет для какого юзера выводить информацию.- Добавляет один запрос на каждого выводимого модулем пользователя. Т.е. если выводить информацию об авторе новости в кратких новостях и на главной странице сайта выводится 30 новостей, которые опубликовали 10 пользователей (по три новости каждый) - то модуль при первом обращении к странице добавит 10 запросов в БД, после чего данные будут браться уже из кеша (при включенном кешировании на сайте). Если на второй странице попадётся пользователь с первой страницы, то запрос в БД на этого пользователя делаться не будет.
- Собственные теги для вывода в шаблоне. Отдельные теги сделаны для того, что бы не было конфликтов и для упрощения обработки этих тегов в модуле, что сократило кода процентов на 10-15 точно.
- Собственная папка с шаблонами. Так же для удобства использования.
- Выводятся не все данные. Т.к. выводить все данные о пользователе не имеет смысла, а так же в целях экономии ресурсов сервера выводятся следующие данные:
- email - Email пользователя
- name - Логин
- news_num - Кол-во новостей
- user_id - ID пользователя
- comm_num - Кол-во комментариев
- user_group - Группа (форматированный вывод с префиксами и суффиксами)
- lastdate - Дата последнего посещения сайта
- reg_date - Дата регистрации
- info - Информация о пользователе
- foto - URL аватарки (или настраиваемая заглушка)
- fullname - Полное имя
- land - Место проживания
- icq - Номер ICQ
- Дополнительные поля
Полный список поддерживаемых модулем тегов приведён в шаблоне userbox/dafault.tpl
Установка:
- Распаковать содержимое папки upload из архива в корень сайта, при этом не забывайте переименовать папку THEME в соответствии с названием текущего шаблона сайта.
- В нужном месте любого шаблона сайта прописать:
{include file="engine/modules/userbox.php?&userName=login"}
где login - логин пользователя. - Всё!
Примеры использования:
вот такой вид блока в полной новости я сделал для покупателей шаблона Madison в довесок к последнему обновлению шаблона.
{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 т.к. там удобнее поддерживать код и всегда актуальная версия.
Надеюсь модуль будет вам интересен и полезен. Жду отзывов!