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

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

22 мая 2020, Пятница
2 195
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качиваний: 65)


Скачать последнюю версию BlockPro с гитхаба
Комментарии:
{login}

Твой комментарий..

Модули для создания киносайта и не только на базе DataLife Engine, и многое другое...
Просто блог Евгения Попова, он же - byroot © 2015-2025 | Карта сайта