Главная страница / DataLife Engine / Скрипты и другая информация / Перелинковка сезонов сериала при посезонной публикации

Перелинковка сезонов сериала при посезонной публикации

22 май 2020, Пятница
74
0
Перелинковка сезонов сериала при посезонной публикации

Несколько лет назад использовал модуль seasons от LisER. Но всё меньше стараюсь использовать различного рода хаков, и если есть возможность это сделать стандартными средствами DLE - то лучше этим и воспользоваться. Использовал одно время тег custom, но сортировка в нем неправильная, если >10 сезонов.

В полной новости в месте вывода прописываем:
{custom xfields="[xfvalue_id_kinopoisk]" template="serial_all_links" limit="35" order="title" sort="asc" cache="yes"}

Шаблон serial_all_links.tpl оформляете по своему усмотрению. Всё бы ничего, но в данном способе есть один минус, его видно на скрине:
Перелинковка сезонов сериала при посезонной публикации

Как видно, если сезонов больше 10, то сортировка будет идти 1 10 2 3 4 и т.д...

Несколько лет висел данный код с неправильной сортировкой, да и перелинковка чисто для ПС, но потом решил подправить и сделать это тегом custom к сожалению не получилось.

Здесь на помощь пришёл модуль DLE-BlockPro от ПафНутиЙ. Стоит заметить, что раньше он был платный, сейчас его может скачать любой желающий.

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

В итоге тег custom для перелинковки я заменил на:
{include file="engine/modules/base/blockpro.php?template=blockpro/serial_all_links&limit=35&xfSearch=id_kinopoisk|[xfvalue_kpid]&sort=xf|nurseason&order=old"}

xf|nurseason - это доп поле nurseason, в котором указан сезон, который выводится в открытой новости.
blockpro/serial_all_links - шаблон serial_all_links.tpl в папке blockpro шаблона.
xfSearch=id_kinopoisk - это доп поле ID кинопоиска, для выборки новостей с одинаковым значением.

У меня в итоге содержимое шаблона blockpro/serial_all_links.tpl получилось таким:
{var $newsCount = $list|count}
{if $newsCount > 1}	{foreach $list as $el}	<a href="{$el.url}" class="seriallink button">{$el.xfields.season}</a>	{/foreach}
{/if}

В результате за несколько лет я наконец таки настроил нормальную сортировку перелинковки сериалов, если у сериала больше 10 сезонов.

Последняя версия блокпро на момент публикации материала:
dle-blockpro-master.zip [508,3 Kb] (cкачиваний: 3)


Скачать последнюю версию BlockPro с гитхаба
Комментарии:
Прокомментировать
Модули для создания киносайта и не только на базе DataLife Engine, и многое другое...
Просто блог Евгения Попова, он же - byroot © 2020