Block.Pro.2.5

29.03
Block.Pro.2.5


Block.Pro.2 - Расширенный вывод блоков с новостями для DLE


Модуль для удобного и гибкого вывода новостей на любой странице DLE-сайта

Версия DLE: 9.5 (на других не проверялся, но работать должен)

Версия модуля: 2.5

Дата релиза: 29.03.2012

Автор: ПафНутиЙ

Контакты: http://pafnuty.name, Google+ или email

Модуль распространяется бесплатно для частного и коммерческого использования

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


Основные возможности модуля

  • Вывод популярных (топ по комментариям, рейтингу, просмотрам или как стандартный топ в dle), похожих, случайных (с возможностью отключения кеширования блока) или последних новостей.
  • Подключение модуля одной строкой непосредственно любой в шаблон (через include).
  • Простая и очень гибкая настройка вывода каждого блока.
  • Кеширование каждого блока (обновление кеша при добавлении новости или комментария на сайт) с возможностью отключения кеша для каждого блока.
  • Настройка категорий для вывода новостей (вывод только из определённых категорий, игнорирование определённых категорий, вывод или ингорирование новостей из просматриваемой категории)
  • Вывод уменьшенной копии картинки (в т.ч. и вместе с оригинальной картинкой) из короткой новости или дополнительного поля (картинки берутся только из папки uploads текущего сайта).
  • Автоматическое создание папки для уменьшенных копий изображений и выставление нужных прав.
  • Обрезка заголовка новости до заданного количества символов.
  • Обрезка текста новости (до заданного количества символов или до конца слова).
  • Ввод иконок категории.
  • Можно задать временной интервал для отбора новостей (по умолчанию 30дней).
  • Можно задать каждому блоку свой шаблон, свою картинку-заглушку.
  • Поддержка всех тегов, используемых в шаблонах кратких новостей.
  • Поддержка фильтра (перекрестные ссылки) по допполям, реализованного в DLE9.5
  • Можно указать с какой по счету новости начать вывод (например с 4й по 15ю).
  • Возможность быстрого редактирования новостей прямо из блока, аналогично стандартному функционалу


Установка модуля

  1. Скопировать файл block.pro.2.php в папку engine/modules/
  2. Скопировать содержимое папки THEME в папку с текущим шаблоном сайта
  3. В нужном месте прописать строку подключения модуля с обязательными параметрами:
    {include file="engine/modules/block.pro.2.php?&block_id=BLOCK&template=blockpro"}
    Где: BLOCK - Уникальный идентификатор блока blockpro - имя шаблона, используемого для вывода
  4. Настроить дополнительные параметры строки подключения и шаблон

Для вывода похожих новостей

  1. Отключить стандартный вывод похожих новостей в админке (Настройка системы » Оптимизация запросов к базе данных » Отображение похожих новостей » "нет")
  2. Открыть файл engine/modules/show.full.php перед
    if( $config['related_news']
    вставить
    /*Block.Pro - relatednews*/
    $block_id = 'related_'.$row['id']; //Не трогать!
    $relatedpro = "1"; //Не трогать!
    $template="relatednews"; // Имя шаблона (можно менять)
    include_once ENGINE_DIR . '/modules/block.pro.2.php';		
    /*Block.Pro - relatednews*/
  3. Настроить дополнительные переменные подключения модуля (Переменные приведены в таблице ниже. При вставке необходимо заменять символ & на $) и шаблон
  4. В ШАБЛОНЕ ПОЛНОЙ НОВОСТИ НИЧЕГО ДОПОЛНИТЕЛЬНО ПРОПИСЫВАТЬ НЕ НУЖНО! модуль выводится через стандартный тег похожих новостей.


Переменные строки подключения

Все переменные указываются непосредственно в строке подключения модуля.

В таблице дано описание возможных для использования переменных

Наименование переменной Значение по умолчанию Описание Примечание
&block_id   Обязательная переменная. Уникальный идентификатор блока любое, уникальное для каждого блока значение
&template   Обязательная переменная. Имя шаблона для вывода блока указывается только имя, без расширения .tpl
&day 30 Количество дней, за которое осуществляется отбор новостей. Если указать ноль (0) - будут браться новости за всё время. Переменная автоматически принимает нулевое значение, если в строке подключения определена переменная &last, &relatedpro или &rndom
&show_cat   Категория/категории для отбора новостей.

Категории указываются через запятую.

Если указать &show_cat=this - новости будут браться только из просматриваемой категории.

&ignore_cat   Модификатор переменной &show_cat. превращает указанные в &show_cat категории в игнорируемые. Для активации модификатора достаточно его определить (например &ignore_cat=y)
&start_from 0 Начало диапазона отбора новостей.  
&news_num 10 Количество новостей в блоке  
&img_xfield   Имя дополнительного поля для получения уменьшенного изображения.

Переменную нужно определять только тогда, когда требуется выводить картинку из дополнительного поля.

Одновременный вывод картинки из краткого содержимого и допполя невозможен.

В допполе должна лежать прямая ссылка на изображение.

&img_size 60x60 Размер уменьшенной копии изображения. (Ширина X Высота) Допустимо указывать одну цифру (например 100). тогда изображение будет уменьшено по большей стороне. при указании нуля (&img_size=0) изображение обрезаться не будет.
&noimage noimage.png Имя и расширение для картинки-заглушки, в случаи отсутствия изображения в новости. Картинка-заглушка должна располагаться в папке images текущего шаблона сайта.
&nocache   Модификатор, отключающий использование кеша для блока. Для активации модификатора достаточно его определить (например &nocache=y)

 

&random

&last

&top_comm

&top_rating

&top_views

 

Варианты сортировки новостей.

Случайным образом

По дате добавления

Самые комментируемые

Самые рейтинговые

Самые часто просматриваемые

По умолчанию выводятся топ-новости (по аналогии со стандартным топом DLE)

Недопустимо использование нескольких вариантов сортировки одновременно.

&wordcut   Модификатор, отключающий обрезку текста новости до конца слова и включающий обрезку до заданного количества символов. Для активации модификатора достаточно его определить (например &wordcut=y)
$relatedpro   Модификатор активирует механизм отображения похожих новостей. Указывается только при подключении модуля в файле show.full.php для вывода похожих новостей. Для активации модификатора достаточно его определить (например $relatedpro=y;)


Теги шаблона

В таблице приведены возможные для использования в шаблоне теги и их описание.

Обозначение тега шаблона Описание Примечание
{link-category} Ссылка/ссылки на категории  
{category} Наименование категории  
{category-icon} Иконка/иконки категорий При отсутствии иконки берётся картинка {THEME}/images/no_icon.gif
[xfvalue_name] Значение дополнительного поля "name", где "name" название дополнительного поля  
[xfgiven_name] [xfvalue_name] [/xfgiven_name] Выводится дополнительное поле "name", если поле не пустое, если поле не имеет значения, то текст просто вырезается  
[xfnotgiven_name] текст [/xfnotgiven_name] Выводят текст указанный в тегах, если дополнительное поле не было задано при публикации новости, где "name" это имя дополнительного поля  
{image-X} Выводит URL уменьшенной картинки находящейся в краткой новости, где Х это номер картинки в новости, например {image-1} выведет URL первой картинки в краткой новости  
{image_original} Выводит URL оригинальной картинки, указанной в {image-X}  
[image_original] текст [/image_original] Выводят текст указанный в тегах, если есть {image_original}  
[not_image_original] текст [/not_image_original] Выводят текст указанный в тегах, если нет {image_original}  
{rating} Выводит рейтинг  
{vote-num} Выводит количество проголосовавших  
[profile] текст [/profile] Выводят прямую ссылку на профиль автора публикации, без использования всплывающего окна минипрофиля.  
{login} Выводит логин пользователя добавившего новость в виде обычной текстовой информации без ссылок на профиль и карточку пользователя.  
{author} Ссылка на автора новости  
{date} Дата новости в формате, установленном в настройках движка  
{date=X} Дата новости в пользовательском формате  
{title} Заголовок новости  
{title limit="X"} Заголовок новости, обрезанный до X символов.  
{text} Текст новости (аналог {short-story})  
{text limit="X"} Текст новости, обрезанный до указанного X количества символов, при этом обрезание текста происходит до последнего логического слова, а не обрывает текст на середине слова.  
{full-link} URL полной новости  
{comments-num} Количество комментариев к новости  
{views} Количество просмотров новости  
[edit] текст [/edit] Ссылка на редактирование новости  

v.2.5.1

  • Модуль адаптирован под DLE 9.6
  • Функция показа похожих новостей временно не работает.

v.2.5

  • Финальная версия, больше изменений делать не планирую.
  • Исправленны все заявленные ошибки.

v.2.5 (RC от 16.03.2012) - проверены окончательно не все функции!

  • В очередной раз всё перелопатил, исправил косяки и неровности, и немалую лепту внёс опять Роман (Giseg), за что ему опять ещё большее спасибо!
  • Добавлена возможность вывода новостей только из той категории, в которй находится пользователь, либо из всех, кроме текущей (при указании переменной &ignore_cat, каждый блок по преждему кешируется.
  • Добавлена возможность быстрого радактирования новостей прямо из блока, аналогично стандартному функционалу.
  • Добавлена поддержка фильтра (перекрестные ссылки) по допполям, реализованного в DLE9.5.
  • Немного улучшена процедура формирования запросов в БД.
  • Можно указать с какой новости начать вывод, для этого в строке подключения нужно указать переменную &start_from=1 (в этом случаи вывод начнётся со второй, попавшей в диапазон, новости). По умолчанию переменная равна нулю и выводятся все новости. Это может понадобиться, когда нужно вывести одну или две новости с одним шаблоном, а остальные с другим).
  • Устранены ошибки при обработке картинок в новости (добавлена дополнительная проверка, что бы картинки со сторонних сайтов уж точно не пролазили и не вызывали глюков))).
  • Добавлена возможность выводить оригинальную картинку, не обрезая её (в строке подключения достаточно указать &img_size=0).
  • Добавлен вывод оригинальной картинки, если происходит её уменьшение. Для этого в шаблон нужно вставить тег {original_img}. Так же доступны теги
    [image_original]текст[/image_original] и [not-image_original]текст[/not-image_original]
    которые выводят текст если есть или нет картинки.
  • Добавлен вывод рейтинга.
  • Добавлена возможность более тонкой сортировки новостей - по количеству комментариев (в строке подключения указываем &top_comm=y), по рейтингу (&top_rating=y), по просмотрам (&top_views=y). ВНИМАНИЕ! - не указывайте одновременно несколько вариантов сортировки
  • Добавлена возможность отключать кеширование блока непосредственно в строке подключения, для этого в строке подключения нужно указать переменную &nocache=y (пригодится в процессе настройки блока).
  • Для картинки-заглушки введена переменная &noimage в которой можно задать название файла (имя и расширение) для картинки-заглушки (по умолчанию эта переменная имеет вид: &noimage=noimage.png). картинка-заглушка по прежнему должна лежать в папке images текущего шаблона.
  • Переменная &category заменена на &show_cat (обнаружил, что в DLE есть глобальная переменная $category, переименовал на всякий случай).
  • Переменная &bad заменена на &ignore_cat для большей внятности кода.
  • Исправлена переменная {comm_num} на {comments-num} как она пишется в стандартных шаблонах DLE.
  • [админам] Возможность выводить время выполнения модуля. Пригодится для отладки (видеть будет только группа id=1) Смотрите закомментрованные строки ниже в коде и в самом конце файла.

v.2.4

  • Добавлено автоматическое создание папки blockpro и установка необходимых прав, даже если они были сбиты (например при переезде на новый хостинг).
  • Изменена методика создания уменьшенных копий картинок - теперь скрипт берёт только те картинки, которые лежат в папке uploads сайта (все картинки, которые загружаются на сайт обычно туда и попадают). Если картинка будет лежать на сторонем сайте она будет проигнорирована и вместо неё выведется заглушка. Это сделано в целях безопасности сайта и устраниения проблемы с белым листом (Not Supported File! Thumbnails can only be made from .jpg, gif and .png images!), которая возникала при определённых обстоятельствах.
  • За изменения в этой версии отдельное спасибо отличному пограммисту Роману (Giseg), если бы не он - врядли были бы эти важные исправления!

v.2.3

  • Исправлена ошибка, работы с категориями. При указании категорий, из которых следует выводить новости, они наоборот скрывались.
  • Изменен синтаксис перечисления категорий для вывода/скрытия. Теперь категории нужно перечислять через запятую, по аналогии с тем же custom к примеру.

v.2.2

  • Добавлена возможность подключить модуль для вывода похожих новостей (отдельное спасибо Sander`у за исправление моих косяков при перелопачивании кода).
  • Переписаны имена "модульных" переменных, чтоб не было конфликтов при выводе похожих новостей.

v.2.1(релиза не было)

  • Исправлена и оптимизирована функция обрезания содержимого новостей (в некоторыx, непонятныx для меня случаяx содержимое обрезалось полностью). За доработку спасибо nowheremany.
  • Изменён вывод блока с новостями. Теперь блок выводится без "обёртки" в общий div с id равным переменной &block_id. (исправлено на случай использования в шаблоне для обёртки новости тегов
    <li></li>
    и оборачивания строки подключения в
    <ul></ul>
    . В этом случаи блок не проxодил валидацию и не корректно обрабатывался в качестве слайдера (плагин jcarousel)
  • Исправлены мелкие ошибки, допущенные в прошлой версии по невнимательности или лени )))

v.2.0

  • код модуля переработан.
  • модуль переведён на работу с шаблонами.
  • убраны лишние комментарии, тот кто разбирается и так поймёт, а чайнику дорога на www.dle-faq.pro


Техническая поддержка модуля осуществляется только по указанным контактным данным

Но это не означает, что техподдержка будет оказана :)

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

ВНИМАНИЕ!

Все обсуждения модуля теперь только в этой теме или на сайте

Комментарии

Predator
Predator 10 августа 2012 15:31
Да я с вами всегда был согласен, сам понимал это.Время учит. После того как он не первй раз понятный, разборчивый вопрос удаляет , у меня нет желания и нервов писать.Я просто не понимаю как в его голову вдолбить, и тем более с каждым разом не то что бы желание пропадает одно и тоже писать, я уж пишу исходя из того чтоб мне узнать файл этот.

http://s2.hostingkartinok.com/uploads/images/2012/08/4baeb8db2c7ccb55989c1f035197d9c8.jpg
Одно жалко, не могу открыть больше 2 модальных окон чтоб показать виновника во всем. Главное пафунтий не причем и не мог быть. Так как человек он ,а не изверг.
Predator
Predator 19 августа 2012 19:39
Если изображение(анимация). Как сохранить анимацию при создании уменьшенной копии?
ПафНутиЙ
ПафНутиЙ 19 августа 2012 22:05
не создавать уменьшенную копию, а "сжимать" средствами css (width или height)
ankn
ankn 21 августа 2012 04:59
Приветствую. Пафнутий. Прежде всего хочу поблагодарить за такой модуль. А теперь к делу, я сделал вывод похожих новостей вашим модулем, но работает не так как надо, как сделать, чтобы в похожих не отображалась новость, на которой я сейчас и нахожусь собственно? Т.е сама на себя ставит ссылку в похожих. И как сделать, чтобы блок брал не из категории статьи, а похожие ?
Спасибо
ПафНутиЙ
ПафНутиЙ 21 августа 2012 08:04
воспользуйтесь , сгенерируйте строку подключения с нужными параметрами.
exarh
exarh 21 августа 2012 11:49
если картинки новости находятся в нестандартной папке, а в любй другой, модуль бессилен их вывести.
OKyJIucT
OKyJIucT 21 августа 2012 12:07
6 пункт Основных возможностей модуля
Вывод уменьшенной копии картинки (в т.ч. и вместе с оригинальной картинкой) из короткой новости или дополнительного поля (картинки берутся только из папки uploads текущего сайта).
ПафНутиЙ
ПафНутиЙ 21 августа 2012 12:07
Спасибо КЭП.
Мы совсем не в курсе этого:
Вывод уменьшенной копии картинки (в т.ч. и вместе с оригинальной картинкой) из короткой новости или дополнительного поля (картинки берутся только из папки uploads текущего сайта).
exarh
exarh 21 августа 2012 12:11
так это же ужасно!
И если снова КЕП скажете, ужасно вдвойне!
Вы своим модулем , призванным расширить возможности, ограничиваете работу "движка".
Ведь, к примеру тот же тег topnews, в легкую выводит картинки из любой папки, лишь бы они были в самой новости.
Predator
Predator 21 августа 2012 12:26
Скажите пожалуйста. Как можно указать размер уменьшенной картинки только по ширине, а высота буди в зависимости от оригинала но так сказать соотносить с шириной. То есть высота у каждой картинки своя в зависимости от высоты оригинального изображения.
OKyJIucT
OKyJIucT 21 августа 2012 12:30
&img_size=100
OKyJIucT
OKyJIucT 21 августа 2012 12:31
но в этом случае картинка будет уменьшена по большей стороне, а не именно по ширине
ПафНутиЙ
ПафНутиЙ 21 августа 2012 12:51
А с каких пор topnews научился уменьшать картинки?
Вы бы прежде чем писать сначала подумали, почему так происходит. Вполне возможно вы бы пришли к выводу, что уменьшение картинок, лежащих непонятно где не совсем простая задача, особенно для говнохостинга. Так же я лично считаю, что хранение картинок для новостей НЕ на своём хостинге неправильно и глупо.
ПафНутиЙ
ПафНутиЙ 21 августа 2012 12:52
&img_size=100x5000
exarh
exarh 21 августа 2012 13:05
А кто сказал что научился уменьшать?
Однако никто нам не помешает в него вставить
<a href="{link}">{title}<img src="{image-1}" alt="{title}" style="max-width: 150px;" /></a>

и вывести. Ну да я не об этом...

А кто говорит про "непонятно где" или про не свой хост?

Вы бы прежде чем отвечать не додумывали!
Я веду речь о выводе из вполне определенной папки, на том же хосте где установлена DLE, пусть эта папка зовется, к примеру images43 и в новостях картинки берутся из этой папки
[img alt="" src="/images43/s97250005.jpg" align="" /]

Сам двиг, вышеприведенной мной конструкцией в topnews - это умеет.
Ваш блок, ограничен этим. Конечно, если это
не совсем простая задача
- для вас, то ...
ПафНутиЙ
ПафНутиЙ 21 августа 2012 13:15
Объясняю. В DLE есть папка uploads/posts/ по умолчанию использующаяся для заливки картинок в новости. Все остальный папки по умолчанию не предназначены для этого, отсюда это ограничение. Вы же дома не ставите фарфоровый заварочный чайник на газ, чтоб подогреть чай? Однако если этот чайник металлический - почему бы не поставить.
Поэтому проходим по форкаем репозиторий и делаем "металлический чайник" путём замены имени папки uploads на нужную.
Надеюсь доступно объяснил.
exarh
exarh 21 августа 2012 13:26
А если у меня таких папок images не одна?
images1
images2
...
никакого "металлического чайника" уже не сделаешь, путем замены.

А насчет движка DLE. в нем как раз нет такого ограничения. В новости можно выводить картинки из любых папок, "обозвАнных" как угодно. Более того, сам DLE воспринимает эти картинки своими тегами из этих любых папок.
Это именно вы напридумывали это ограничение.
ПафНутиЙ
ПафНутиЙ 21 августа 2012 15:29
Не нравится модуль - не используйте, есть же стандартный topnews, который работает лучше, тратит меньше оперативной памяти и т.д. и т.п., я никого не заставляю использовать модуль))
А убрать проверку расположения картинки вам может любой школо-программист.
exarh
exarh 21 августа 2012 15:37
Модуль отпад! Вот тут не надо!

А на счет школо-програмиста... я к тому разговор и вел, почему вы ввели проверку расположения.
ПафНутиЙ
ПафНутиЙ 21 августа 2012 16:37
Потому, что (как было написано выше), если картинки грузятся на сайт - то они попадают в папку uploads, т.к. в редакторе dle нет возможности выбрать папку для загрузки картинок. и в 99% случаев так и делается, вместе с тем, если картинка не в папке upload, то она в 99% случаев, на стороннем сервере. Всё просто)
А если картинка на стороннем сервере - класс, который используется для создания уменьшенных копий картинок не может её обработать и вываливает fatal error (потому что не предназначен для работы с удалёнными изображениями)
Predator
Predator 22 августа 2012 23:09
ПафНутиЙ,
Немного не то, тогда высота получается оригинальной.

На примере, есть много картинок с разной высотой. Я указываю только ширину, а высота разная но в пределах разумного. Высота тоже будит меньше, но уже от высоты оригинала зависеть и по ширине.
ПафНутиЙ
ПафНутиЙ 22 августа 2012 23:11
А вы пробовали такие настройки?
Predator
Predator 23 августа 2012 11:54
ПафНутиЙ,
Какие настройки?
240x*
240
230x5000
Все не то.
Predator
Predator 23 августа 2012 11:56
Predator,
Что такое? Удалите мои коменты, сори .Нашел выход.
Tomich
Tomich 16 сентября 2012 20:39
Добрый день, ув.ПафНутиЙ, тут уже кто-то писал, что иногда возникает ошибка в модуле:
{"error":"The file is not the image, or this file is damaged."}

у меня эта ошибка тоже возникла на странице:tv-zona.net/156-trk-ukraina-trk-ukrayina.html. Вся загвоздка в том, что раньше все работало и модуль работал и тут вдруг...
ПафНутиЙ
ПафНутиЙ 17 сентября 2012 10:53
значит появилась картинка неправильная или поврежденная.
Tomich
Tomich 18 сентября 2012 11:04
а как она появилась, если раньше ее небыло? это можно как-нибудь исправить?
ПафНутиЙ
ПафНутиЙ 18 сентября 2012 19:03
руками проверить все новости.
Tomich
Tomich 18 сентября 2012 19:58
извините, если я Вас уже достал, но как руками? как понять какая новость виновата, если во всех новостях картинки вроде нормальные...
mandarin
mandarin 23 сентября 2012 23:08
Подскажите в чем может быть проблема.
modules/block.pro.2.php on line 428
пытаюсь генерировать похожие новости в show_full.
dle null на хостинге.

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

Информация

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

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