К содержанию

Как между товарами нужно вывести блок баннера?

Всем доброе время суток. У меня возник такой вопрос:
Мне между товарами в mfilter2, minishop2 нужно вывести блок баннера.
Допустим через каждые 16 товаров такой баннер выводить…
Как лучше сделать(идеи предложения)?

про conditionalTpls читал но это не то…
Саша Иващенко
Саша Иващенко
19 ноября 2015, 08:42
modx.pro
2 047
Реклама

Комментарии: 11

Саша Иващенко
Саша Иващенко Старожил
19 ноября 2015, 11:43
Буду рад узнать ваши решения если они имеются))
    Евгений Webinmd
    Евгений Webinmd Эксперт
    19 ноября 2015, 12:09
    &tpl_nN — Имя чанка для каждого N-го ресурса, например, &tpl_n4=`tplEvery4th` будет применено к каждому 4-му ресурсу.

    И уже в нужном чанке вызывайте свои баннера.
      Саша Иващенко
      Саша Иващенко Старожил
      21 ноября 2015, 14:49
      ну если будет вызов товаров через mfilter2 тогда просто товары заменяются данным чанком… не сильно лояльное решение)
      Максим Кузнецов
      Максим Кузнецов Проверенный
      19 ноября 2015, 14:23
      Как альтернатива — через jquery:
      function addBanner() {
      	$(".container > div:nth-child(16n)").after("<div id='bannerBlock'></div>");
      }
      — и вешать функцию на каждое срабатывание mfilter2.
      Саша Иващенко
      Саша Иващенко Старожил
      21 ноября 2015, 14:51
      Да, спасибо. Именно скриптом я и сделал… но вот задача как сделать 1 баннер через каждые 8 а другой через каждые 16, что бы через каждые 8 предыдущий не повторялся…

      т.е. по очереди выводить 2 баннера бесконечно но через каждые 8
        Максим Кузнецов
        Максим Кузнецов Проверенный
        01 декабря 2015, 14:11
        1. Создаешь через каждые 8 блоков контейнер с уникальным классом на перовом уровне вложения родителя:
        $(".container > div:nth-child(8n)").after("<div class='banner-block'></div>");

        2. Теперь для каждого четного вставляешь одно, а для каждого нечетного — другое:
        $(".container > .banner-block:nth-child(odd)").html("2, 4, 6");
        $(".container > .banner-block:nth-child(even)").html("1, 3, 5");

        Как альтернатива — можно расписать условие проверки внутри шага один. Если функцию нужно будет вызывать с определенной периодичностью (инфинити скролл, например), то это предпочтительнее. Если только 1 раз при создании страницы — то лучше вышеописанным способом.
          Саша Иващенко
          Саша Иващенко Старожил
          01 декабря 2015, 18:39
          там чуть сложнее
          вот каталог в котором у меня 2 баннера появляются
          ekodomostroy.ru/catalog/

          когда я нажимаю clip2net.com/s/3r79cDH
          у меня через ajax добавляются еще товары. вот как к ним применять этот скрипт?
          мне искать ajax обработчик и туда вписывать или как то по другому можно?
            Aliaksandr Katlou
            Aliaksandr Katlou Проверенный
            01 декабря 2015, 20:10
            Есть костыль без JS. В каталоге создать ссылки в разделе — после 8го товара, после 16, и через кондишнл темплейтс сделать чанки с баннером для ссылки. Минусы — много лишних движений, при сортировке будет положение меняться.
      Саша Иващенко
      Саша Иващенко Старожил
      21 ноября 2015, 14:54
      так я пока вывожу…
      <script type="text/javascript">
          $(document).ready(function(){
          
          	$("#mse2_results .row.ms2_product:nth-child(8)").after( $('#banner1').clone().removeClass( "hidden" ) );
          	$("#mse2_results .row.ms2_product:nth-child(17)").after( $('#banner2').clone().removeClass( "hidden" ) );
      
      
          });
      </script>
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        11