Хэлпер shopYtbPlugin::replaceIframe()

Этот хелпер в качестве агрумента получает html-код и заменяет в нём встреченные iframe-ы с src~=(youtube|yt.be|youto.be) на свои блоки с отложенной загрузкой, кэшированием картинок и прочими плюшками, существенно ускоряющими скорость загрузки сайта.
Например:
{shopYtbPlugin::replaceIframe($product.description)}

{shopYtbPlugin::replaceIframe($cateogory.description)}

{shopYtbPlugin::replaceIframe($wa->block("blog.latest_posts"))}
И т.д.
В самом предельном случае его можно использовать для замены всех youtube-iframe в контенте страниц сайта.
Для этого в теме дизайна достаточно найти шаблон main.html(этот шаблон есть у каждой темы семейства, отдельно для сайта, отдельно для магазина и т.д.) и земенить в нём {$content} на {shopYtbPlugin::replaceIframe($content)}.
Есть пара но.
1. Он использует аналог хэлпера getVideo(). То есть он не знает какой именно типа контента находится внутри iframe(может быть и канал и плэйлист и ролик) и предполагает, что это именно видеоролик.
2. Для парсинга html и поиска в них iframe используются функции preg_match и preg_replace. Это достаточно ресурсоёмкие операции, если речь идёт о парсинге многомегабайтных текстов.
3. Стили блоков видео. Они везде могут требовать разного размера. В случае же использования хэлпера {shopYtbPlugin::replaceIframe()} все iframe-ы заменяются на блоки хэлпера getVideo(). То есть становяться зависимыми от настроек этого блока. Но технически, это можно поправить, если где-то начинает криво отображаться. Iframe-ы наверняка расположенны в каких-то уникальных, именованных соответсвующими css-классами элементами и значит каждый такой блок можно будет отдельно кастомизировать.

В общем этот трюк работает и даже достаточно быстро, но зависит и от парметров хостинга и некоторых других вещей.

При использовании хэлпера, где-то помимо шаблонов магазина используйте конструкцию:
{if $wa->shop}{shopYtbPlugin::replaceIframe("какой-то html-код")}{/if}

В качестве второго аргумента, можно передать свой css-класс:

{if $wa->shop}{shopYtbPlugin::replaceIframe("какой-то html-код", "my-replaced-iframe")}{/if}

Опубликовано: 24 августа 2021
ytb
Эта статья была полезна? Да Нет

0 комментариев


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

    Чтобы добавить комментарий, зарегистрируйтесь или войдите