Смешивание стилей у фильтраций
Всем привет. Есть такая задачка небольшая. Вывожу на одной странице два каталога через компонент 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/декоративный-камень/
Комментарии: 22
Потому что у Вас на странице огромное количество одинаковых id у элементов.
Чтобы заработали 2 фильтра на одной странице Вам нужен второй экземпляр default.js с другими селекторами и соответ ственно другие id у элементов на странице. Теоретически.
Чтобы заработали 2 фильтра на одной странице Вам нужен второй экземпляр default.js с другими селекторами и соответ ственно другие id у элементов на странице. Теоретически.
А практически оба фильтра будут хранить своё состояние в одной строке адреса.
Не предназначен mFilter2 вызываться 2 раза на странице.
Не предназначен mFilter2 вызываться 2 раза на странице.
Тогда подскажите как можно, делать подмену чанка в зависимости от выбранного селектора в html-коде?
Чтобы если допустим активна кнопка в html с id равным first_catalog, то в сниппет !mFilter2? подгружался бы чанк:
Чтобы если допустим активна кнопка в html с id равным first_catalog, то в сниппет !mFilter2? подгружался бы чанк:
&tpl=`tpl.msProducts.row`
Если активна кнопка с id second_catalog, то соответственно в сниппет подгружался бы другой чанк:&tpl=`tpl.msProducts.row.list`
Как такое сделать?
Параметр &tpls:
Список чанков для оформления строк, через запятую. Вы можете переключать их указанием в $_REQUEST параметра &tpl. 0 — это чанк по умолчанию, а дальше по порядку. Например: &tpls=`default,chunk1,chunk2`, для вывода товаров чанком «chunk1», нужно прислать в запросе $_REQUEST[tpl] = 1.
Первый вопрос: так все-таки &tpl иди &tpls? Потому что если писать в &tpl через запятую чанки, то просто получается вывод массива.
Если организовать это через $_REQUEST, то получается все будет срабатывать только после перезагрузки страницы, да?
В моем случае это все выглядит так:
Если организовать это через $_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>
Через вызов своего сниппета прикручивать к кнопкам что ли подмену чанков или как?
То что указано по ссылке не совсем то, что надо.
Вызов идет 42 строке результатов из чанка msProducts (плейсхолдер [[+results]]), так как сниппет mFilter2 привязан к нему. Или то что указывается по ссылке на 27-32 строках, вызывает нужный чанк в [[+results]]?
Вызов идет 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>`]]
Ты так и будешь дальше вопросы задавать или просто укажешь уже 2 имени чанка через запятую в параметре &tpls?
bezumkin.ru/sections/components/1546/
bezumkin.ru/sections/components/1546/
Ну хорошо попробую)). Просто хочется делать, уже зная наверняка. Спасибо за терпение и ответы).
Попробовал все работает как задумано, но вот одна особенность, в чанках прописываю условия шаблонизатора:
[[+odd:is=`1`:then=`<div class="p_row">проверка</div>`]]
[[+first:is=`1`:then=`Первая запись`]]
[[+last:is=`1`:then=`Последняя запись`]]
и не работают условия почему-то, хотя на другом параллельном сайте модекса, где не используется компонент MFilter2 там все работает (напрямую через msProducts). С чем это может быть связано?
И еще в какой-то момент перестало выполняться условие шаблонизатора:
[[+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>
то выводит, в противном случае ничего не выводит даже на экран. Как с этими глюками бороться)?
Хотя второй глюк произошел), потому что я опять написал &tpl вместо &tpls).
Но почему вот это не работает:
Но почему вот это не работает:
[[+odd:is=`1`:then=`<div class="p_row">проверка</div>`]]
[[+first:is=`1`:then=`Первая запись`]]
[[+last:is=`1`:then=`Последняя запись`]]
непонятно…
Вот пример — minishop2.com/catalog/?tpl=1
Доброе утро, ну что ответите на вопрос, почему не работают условия шаблонизатора?
[[+odd:is=`1`:then=`<div class="p_row">проверка</div>`]]
[[+first:is=`1`:then=`Первая запись`]]
[[+last:is=`1`:then=`Последняя запись`]]
Доброе.
В обязательном порядке я отвечаю на вопросы только в техподдержке магазина и хостинга. А здесь — по желанию.
В обязательном порядке я отвечаю на вопросы только в техподдержке магазина и хостинга. А здесь — по желанию.
[[!msProducts?
&parents=`0`
&tpl=``
]]
Я не вижу таких плейсхолдеров. А ты?
Ну у меня на одном сайте, где идет вызов такой:
А когда пишу через mFilter2 или через другой компонент minishop2, то такое не работает. Как тогда сделать чтобы это работало? Логику сниппета дописывать, чтобы такие плейсхолдеры учитывал?
[[!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, то такое не работает. Как тогда сделать чтобы это работало? Логику сниппета дописывать, чтобы такие плейсхолдеры учитывал?
getProducts и msProducts — это разные сниппеты, как ни странно.
Логику сниппета дописывать, чтобы такие плейсхолдеры учитывал?Документацию почитать. Есть возможность указывать отдельные чанки для первых, последних и других строк.
Я знаю, что разные, но просто почему в одном работает сниппете, а в другом нет?
Потому что, это разные сниппеты и работают они по-разному!
Если бы они работали одинаково — это были бы одинаковые сниппеты, а не разные.
Такое ощущение, что шестилетнему ребенку объясняю.
Если бы они работали одинаково — это были бы одинаковые сниппеты, а не разные.
Такое ощущение, что шестилетнему ребенку объясняю.
просто такую элементарную вещь надо было предусмотреть, понятно, что такие условия как определение первой, последней записи, четность, нечетность, очень важны в программировании.
В моем случае это не годится, у меня все обернуто в mFilter2:
P.S. Минусуйте на здоровье), просто говорю, что надо делать основательно сниппеты, чтобы потом не мучиться так, как в моем случае.
[[!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. Минусуйте на здоровье), просто говорю, что надо делать основательно сниппеты, чтобы потом не мучиться так, как в моем случае.
просто говорю, что надо делать основательно сниппетыДа не вопрос.
Готов оплатить 2000 рублей? Я прямо сегодня выпущу обновление с поддержкой этих плейсхолдеров.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.