Смешивание стилей у фильтраций


Всем привет. Есть такая задачка небольшая. Вывожу на одной странице два каталога через компонент mFilter2, но вот странная вещь, когда я применяю фильтрацию или использую паггинацию, то стили сбиваются в одном фильтре, а во втором отказывается работать паггинация.

Делаю так:

<p>Каталог 1</p>
[[!mFilter2?
    &class=`msProduct`
    &element=`msProducts`
    &parents=`[[*id]]`
    &filters=`ms|price:number`
    &tplFilter.outer.ms|price=`tpl.mFilter2.filter.slider`
    &tplOuter=`tpl.mFilter2.outer`
    &tplFilter.row.ms|price=`tpl.mFilter2.filter.number`
    &tpl=`tpl.msProducts.row`
]]
<p>Каталог 2</p>
[[!mFilter2?
    &class=`msProduct`
    &element=`msProducts`
    &parents=`[[*id]]`
    &filters=`ms|price:number`
    &tplFilter.outer.ms|price=`tpl.mFilter2.filter.slider`
    &tplOuter=`tpl.mFilter2.outer.list`
    &tplFilter.row.ms|price=`tpl.mFilter2.filter.number`
    &tpl=`tpl.msProducts.row.list`
]]
Из-за чего такая взаимозависимость и неработоспособность может проявляться?

Посмотреть пример того что получается можно тут: gigstroy42.pfta.ru/декоративный-камень/
solar-wind
23 декабря 2014, 10:55
modx.pro
2 089
0

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

Алексей Ерохин
23 декабря 2014, 14:05
+1
Потому что у Вас на странице огромное количество одинаковых id у элементов.
Чтобы заработали 2 фильтра на одной странице Вам нужен второй экземпляр default.js с другими селекторами и соответ ственно другие id у элементов на странице. Теоретически.
    Василий Наумкин
    23 декабря 2014, 15:02
    0
    А практически оба фильтра будут хранить своё состояние в одной строке адреса.

    Не предназначен mFilter2 вызываться 2 раза на странице.
      solar-wind
      24 декабря 2014, 05:10
      0
      Тогда подскажите как можно, делать подмену чанка в зависимости от выбранного селектора в html-коде?

      Чтобы если допустим активна кнопка в html с id равным first_catalog, то в сниппет !mFilter2? подгружался бы чанк:

      &tpl=`tpl.msProducts.row`
      Если активна кнопка с id second_catalog, то соответственно в сниппет подгружался бы другой чанк:

      &tpl=`tpl.msProducts.row.list`
      Как такое сделать?
        Василий Наумкин
        24 декабря 2014, 06:53
        0
        Параметр &tpls:
        Список чанков для оформления строк, через запятую. Вы можете переключать их указанием в $_REQUEST параметра &tpl. 0 — это чанк по умолчанию, а дальше по порядку. Например: &tpls=`default,chunk1,chunk2`, для вывода товаров чанком «chunk1», нужно прислать в запросе $_REQUEST[tpl] = 1.
          solar-wind
          24 декабря 2014, 08:22
          0
          Первый вопрос: так все-таки &tpl иди &tpls? Потому что если писать в &tpl через запятую чанки, то просто получается вывод массива.

          Если организовать это через $_REQUEST, то получается все будет срабатывать только после перезагрузки страницы, да?

          В моем случае это все выглядит так:

          <div class="panel">
            Отображать
            <a href="" class="button active"><span class="i i-v01">Каталог</span></a>
            <a href="" class="button"><span class="i i-v02">Плитка</span></a>
          </div>
          Через вызов своего сниппета прикручивать к кнопкам что ли подмену чанков или как?
            Василий Наумкин
            24 декабря 2014, 08:46
            0
            &tpls переключает &tpl.

            В стандартном чанке всё предусмотрено, нужно только посмотреть.
              solar-wind
              24 декабря 2014, 10:22
              0
              То что указано по ссылке не совсем то, что надо.

              Вызов идет 42 строке результатов из чанка msProducts (плейсхолдер [[+results]]), так как сниппет mFilter2 привязан к нему. Или то что указывается по ссылке на 27-32 строках, вызывает нужный чанк в [[+results]]?

              [[+tpls:notempty=`<div id="mse2_tpl" class="span4 col-md-4">
              <a href="#" data-tpl="0" class="[[+tpl0]]">[[%mse2_chunk_default]]</a> /
              <a href="#" data-tpl="1" class="[[+tpl1]]">[[%mse2_chunk_alternate]]</a>
              </div>`]]
                Василий Наумкин
                24 декабря 2014, 10:33
                0
                Ты так и будешь дальше вопросы задавать или просто укажешь уже 2 имени чанка через запятую в параметре &tpls?

                bezumkin.ru/sections/components/1546/
                  solar-wind
                  24 декабря 2014, 10:38
                  0
                  Ну хорошо попробую)). Просто хочется делать, уже зная наверняка. Спасибо за терпение и ответы).
                    solar-wind
                    24 декабря 2014, 11:44
                    0
                    Попробовал все работает как задумано, но вот одна особенность, в чанках прописываю условия шаблонизатора:

                    [[+odd:is=`1`:then=`<div class="p_row">проверка</div>`]]
                    [[+first:is=`1`:then=`Первая запись`]]
                    [[+last:is=`1`:then=`Последняя запись`]]
                    и не работают условия почему-то, хотя на другом параллельном сайте модекса, где не используется компонент MFilter2 там все работает (напрямую через msProducts). С чем это может быть связано?
                      solar-wind
                      24 декабря 2014, 12:25
                      0
                      И еще в какой-то момент перестало выполняться условие шаблонизатора:

                      [[+tpls:notempty=`
                      		<div id="mse2_tpl" class="span4 col-md-4">
                      		   <a href="#" data-tpl="0" class="[[+tpl0]]">[[%mse2_chunk_default]]</a> /
                      		   <a href="#" data-tpl="1" class="[[+tpl1]]">[[%mse2_chunk_alternate]]</a>
                      	    </div>
                      	  `]]
                      когда пишешь без условия просто:

                      <div id="mse2_tpl" class="span4 col-md-4">
                      		   <a href="#" data-tpl="0" class="[[+tpl0]]">[[%mse2_chunk_default]]</a> /
                      		   <a href="#" data-tpl="1" class="[[+tpl1]]">[[%mse2_chunk_alternate]]</a>
                      	    </div>
                      то выводит, в противном случае ничего не выводит даже на экран. Как с этими глюками бороться)?
                        solar-wind
                        24 декабря 2014, 12:50
                        0
                        Хотя второй глюк произошел), потому что я опять написал &tpl вместо &tpls).

                        Но почему вот это не работает:

                        [[+odd:is=`1`:then=`<div class="p_row">проверка</div>`]]
                        [[+first:is=`1`:then=`Первая запись`]]
                        [[+last:is=`1`:then=`Последняя запись`]]
                        непонятно…
                      Василий Наумкин
                      24 декабря 2014, 10:41
                      -1
                      Вот пример — minishop2.com/catalog/?tpl=1
                        solar-wind
                        25 декабря 2014, 05:28
                        -2
                        Доброе утро, ну что ответите на вопрос, почему не работают условия шаблонизатора?

                        [[+odd:is=`1`:then=`<div class="p_row">проверка</div>`]]
                        [[+first:is=`1`:then=`Первая запись`]]
                        [[+last:is=`1`:then=`Последняя запись`]]
                          Василий Наумкин
                          25 декабря 2014, 06:12
                          -2
                          Доброе.

                          В обязательном порядке я отвечаю на вопросы только в техподдержке магазина и хостинга. А здесь — по желанию.
                          [[!msProducts?
                          	&parents=`0`
                          	&tpl=``
                          ]]
                          Я не вижу таких плейсхолдеров. А ты?
                            solar-wind
                            25 декабря 2014, 07:28
                            -2
                            Ну у меня на одном сайте, где идет вызов такой:
                            [[!getProducts? 
                               &parents=`12`
                               &includeTVs=`1`
                               &processTVs=`1`
                               &tpl=`div_v`
                            ]]
                            там в чанке спокойно работают такие конструкции:
                            [[+odd:is=`1`:then=`<div class="p_row">проверка</div>`]]
                            [[+first:is=`1`:then=`Первая запись`]]
                            [[+last:is=`1`:then=`Последняя запись`]]
                            Хотя там таких плейсхолдеров тоже не видно, я думал это от modx просто переменные анализирующие состояние загружаемого документа, ресурса или товара. first, last — Проверка первой/последней записи, odd — проверка на четность.

                            А когда пишу через mFilter2 или через другой компонент minishop2, то такое не работает. Как тогда сделать чтобы это работало? Логику сниппета дописывать, чтобы такие плейсхолдеры учитывал?
                            Василий Наумкин
                            25 декабря 2014, 07:48
                            -2
                            getProducts и msProducts — это разные сниппеты, как ни странно.

                            Логику сниппета дописывать, чтобы такие плейсхолдеры учитывал?
                            Документацию почитать. Есть возможность указывать отдельные чанки для первых, последних и других строк.
                            solar-wind
                            25 декабря 2014, 07:49
                            -2
                            Я знаю, что разные, но просто почему в одном работает сниппете, а в другом нет?
                            Василий Наумкин
                            25 декабря 2014, 07:52
                            0
                            Потому что, это разные сниппеты и работают они по-разному!

                            Если бы они работали одинаково — это были бы одинаковые сниппеты, а не разные.

                            Такое ощущение, что шестилетнему ребенку объясняю.
                            solar-wind
                            25 декабря 2014, 08:11
                            -1
                            просто такую элементарную вещь надо было предусмотреть, понятно, что такие условия как определение первой, последней записи, четность, нечетность, очень важны в программировании.
                            solar-wind
                            25 декабря 2014, 08:17
                            0
                            В моем случае это не годится, у меня все обернуто в mFilter2:

                            [[!mFilter2?
                                &class=`msProduct`
                                &element=`msProducts`
                                &includeThumbs=`200x230`
                            	&parents=`[[*id:is=`1`:then=`19`:else=`[[*id]]`]]`
                                &filters=`ms|price:number,
                            	          ms|vendor:vendors`
                                &tplFilter.outer.ms|price=`tpl.mFilter2.filter.slider`
                            	&tplOuter=`tpl.mFilter2.outer`
                                &tplFilter.row.ms|price=`tpl.mFilter2.filter.number`
                            	&includeTVs=`attribut_new_good, count_1, count_2, count_3, exist_good`
                            	&tvPrefix=`tv.`
                            	&showHidden=`1`
                            	&sort=`ms_product|pagetitle:asc,ms|price:asc`
                            	&tpls=`tpl.msProducts.row, tpl.msProducts.row.list`
                                    &tplFirst =`first_chunk`
                            ]]
                            Если сам основной контент подменяется у чанков посредством переключения чанков tpl.msProducts.row и tpl.msProducts.row.list, то первый чанк всегда получается одинаковым, что не вариант. Мне нужно, чтобы первый и последний чанк тоже переключались. Если бы были условия шаблонизатора first, last, то можно было легко намутить это в чанках tpl.msProducts.row и tpl.msProducts.row.list.

                            P.S. Минусуйте на здоровье), просто говорю, что надо делать основательно сниппеты, чтобы потом не мучиться так, как в моем случае.
                            Василий Наумкин
                            25 декабря 2014, 08:37
                            0
                            просто говорю, что надо делать основательно сниппеты
                            Да не вопрос.

                            Готов оплатить 2000 рублей? Я прямо сегодня выпущу обновление с поддержкой этих плейсхолдеров.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        22