Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

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

Тема в разделе "Хаки DLE", создана пользователем byroot, 22 май 2020.

22.05.20 в 19:30
18.11.20 в 12:50
9
1.335
3
  1. TopicStarter Overlay
    byroot

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.297
    Лучших ответов:
    54
    Рейтинги:
    +5.204 / 74 / -0
    1590137926_2020-05-22_15-57-23.png
    Несколько лет назад использовал модуль 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 оформляете по своему усмотрению. Всё бы ничего, но в данном способе есть один минус, его видно на скрине:
    1590137003_2020-05-22_15-42-31.png
    Как видно, если сезонов больше 10, то сортировка будет идти 1 10 11... 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 сезонов (просто не хотел покупать отдельный модуль, потому что через кастом, хоть и криво, но перелинковка для ПС выводилась в каждом сезоне).

    Источник
     
    #1 byroot, 22 май 2020
    Последнее редактирование: 22 май 2020
    • Нравится Нравится x 3
    • Полезно Полезно x 1
  2. Forian

    Forian Местный

    Регистрация:
    24 окт 2019
    Сообщения:
    1.374
    Лучших ответов:
    3
    Рейтинги:
    +316 / 45 / -0
    "есть возможность это сделать стандартными средствами DLE "
    А как это делается?
     
  3. TopicStarter Overlay
    byroot

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.297
    Лучших ответов:
    54
    Рейтинги:
    +5.204 / 74 / -0
    2020-05-23_01-35-13.png

    вроде бы всё написал :)

    35 - это количество сезонов, просто у симпсонов их больше 30.
     
  4. Forian

    Forian Местный

    Регистрация:
    24 окт 2019
    Сообщения:
    1.374
    Лучших ответов:
    3
    Рейтинги:
    +316 / 45 / -0
    byroot, а это когда много новостей с одним ID кинопоиска, но в каждой новости другие сезоны) сгодится
     
  5. TopicStarter Overlay
    byroot

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.297
    Лучших ответов:
    54
    Рейтинги:
    +5.204 / 74 / -0
    именно для этого это и есть! ;)
     
  6. Forian

    Forian Местный

    Регистрация:
    24 окт 2019
    Сообщения:
    1.374
    Лучших ответов:
    3
    Рейтинги:
    +316 / 45 / -0
    простите может я туплю, а как реализовать так что бы название выводилось не название всех новостей, а Сезон 1, Сезон2 и тд
     
  7. TopicStarter Overlay
    byroot

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.297
    Лучших ответов:
    54
    Рейтинги:
    +5.204 / 74 / -0
    у меня эти данные записаны в доп поле season и выводятся тегом {$el.xfields.season} в шаблоне, можешь прописать там что угодно, хоть и название сериала добавить к каждуму сезону.
     
  8. ZULI

    ZULI Бывалый

    Регистрация:
    16 ноя 2016
    Сообщения:
    926
    Лучших ответов:
    1
    Рейтинги:
    +248 / 29 / -0
    Иногда есть нюансы, у сериалов сезоны идут с разными кинопоискId, как тогда ваши модули будут их находить? Лично я себе делал модуль, где сам создаешь связки, типа коллекций или ручных перелинковок, а в сериале указываешь ID этой связки. Да, при создании постов есть дополнительные телодвижения, но зато можно связать все что хочешь.
     
  9. TopicStarter Overlay
    byroot

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.297
    Лучших ответов:
    54
    Рейтинги:
    +5.204 / 74 / -0
    Балансеры такого не учитывают. В данном случае просто можно через custom выводить новости для перелинковки, а в самих новостях указывать ID Новостей чтобы была перелинковка. Ранее так делал на одном сайте для связи всех частей фильмов.
     
  10. dr.gopher

    Команда форума VIP Кинотрафик v2

    Регистрация:
    26 июн 2015
    Сообщения:
    1.546
    Лучших ответов:
    8
    Рейтинги:
    +444 / 44 / -0
    Добавь в примере:
    Код:
    &notPostId=this
    Сам понимаешь зачем. ))

    Спасибо, ты мне открыл глаза на блокпро!
     
Яндекс.Метрика