Dismiss Notice
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

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

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

Discussion in 'Хаки DLE' started by Ботяра, May 22, 2020.

22.05.20 в 19:30
18.11.20 в 12:50
9
1,766
3
  1. TopicStarter Overlay
    Ботяра

    Забанен

    Joined:
    Oct 10, 2015
    Messages:
    0
    Best Answers:
    54
    Ratings:
    +711 / 74 / -0
    1590137926_2020-05-22_15-57-23.png
    Несколько лет назад использовал модуль seasons от LisER. Но всё меньше стараюсь использовать различного рода хаков, и если есть возможность это сделать стандартными средствами DLE - то лучше этим и воспользоваться. Использовал одно время тег custom, но сортировка в нем неправильная, если >10 сезонов (на скрине - симпсоны).

    В полной новости в месте вывода прописываем:
    Code:
    {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 для перелинковки я заменил на:
    Code:
    {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 получилось таким:
    Code:
    {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 Ботяра, May 22, 2020
    Last edited: May 22, 2020
    • Нравится Нравится x 3
    • Полезно Полезно x 1
  2. Forian

    Forian Местный

    Joined:
    Oct 24, 2019
    Messages:
    1,376
    Best Answers:
    3
    Ratings:
    +318 / 45 / -0
    "есть возможность это сделать стандартными средствами DLE "
    А как это делается?
     
  3. TopicStarter Overlay
    Ботяра

    Забанен

    Joined:
    Oct 10, 2015
    Messages:
    0
    Best Answers:
    54
    Ratings:
    +711 / 74 / -0
    2020-05-23_01-35-13.png

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

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

    Forian Местный

    Joined:
    Oct 24, 2019
    Messages:
    1,376
    Best Answers:
    3
    Ratings:
    +318 / 45 / -0
    byroot, а это когда много новостей с одним ID кинопоиска, но в каждой новости другие сезоны) сгодится
     
  5. TopicStarter Overlay
    Ботяра

    Забанен

    Joined:
    Oct 10, 2015
    Messages:
    0
    Best Answers:
    54
    Ratings:
    +711 / 74 / -0
    именно для этого это и есть! ;)
     
  6. Forian

    Forian Местный

    Joined:
    Oct 24, 2019
    Messages:
    1,376
    Best Answers:
    3
    Ratings:
    +318 / 45 / -0
    простите может я туплю, а как реализовать так что бы название выводилось не название всех новостей, а Сезон 1, Сезон2 и тд
     
  7. TopicStarter Overlay
    Ботяра

    Забанен

    Joined:
    Oct 10, 2015
    Messages:
    0
    Best Answers:
    54
    Ratings:
    +711 / 74 / -0
    у меня эти данные записаны в доп поле season и выводятся тегом {$el.xfields.season} в шаблоне, можешь прописать там что угодно, хоть и название сериала добавить к каждуму сезону.
     
  8. ZULI

    ZULI Бывалый

    Joined:
    Nov 16, 2016
    Messages:
    923
    Best Answers:
    1
    Ratings:
    +247 / 30 / -0
    Иногда есть нюансы, у сериалов сезоны идут с разными кинопоискId, как тогда ваши модули будут их находить? Лично я себе делал модуль, где сам создаешь связки, типа коллекций или ручных перелинковок, а в сериале указываешь ID этой связки. Да, при создании постов есть дополнительные телодвижения, но зато можно связать все что хочешь.
     
  9. TopicStarter Overlay
    Ботяра

    Забанен

    Joined:
    Oct 10, 2015
    Messages:
    0
    Best Answers:
    54
    Ratings:
    +711 / 74 / -0
    Балансеры такого не учитывают. В данном случае просто можно через custom выводить новости для перелинковки, а в самих новостях указывать ID Новостей чтобы была перелинковка. Ранее так делал на одном сайте для связи всех частей фильмов.
     
  10. dr.gopher

    Staff Member VIP Кинотрафик v2

    Joined:
    Jun 26, 2015
    Messages:
    1,598
    Best Answers:
    8
    Ratings:
    +473 / 46 / -0
    Добавь в примере:
    Code:
    &notPostId=this
    Сам понимаешь зачем. ))

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