Вывод результата mFilter2 в отдельный чанк
        Здравствуйте.
Можно ли как-то вынести результат работы фильтра mFilter2 в отдельный чанк?
Структура сайта не позволяет использовать один чанк-шаблон, в котором находится сам фильтр и вывод результатов.
Нужно сделать так, чтобы фильтр был, например, в чанке [[$sidebar]], а результат в чанке [[$content]]
Но я не знаю как это сделать.
P.S. Я фрилансер и клиент попросил сделать редизайн сайта, в связи с этим изменилась структура сайта, которая не позволяет реализовать задуманное.
    
    
                                                                                
            Можно ли как-то вынести результат работы фильтра mFilter2 в отдельный чанк?
Структура сайта не позволяет использовать один чанк-шаблон, в котором находится сам фильтр и вывод результатов.
Нужно сделать так, чтобы фильтр был, например, в чанке [[$sidebar]], а результат в чанке [[$content]]
Но я не знаю как это сделать.
P.S. Я фрилансер и клиент попросил сделать редизайн сайта, в связи с этим изменилась структура сайта, которая не позволяет реализовать задуманное.
Комментарии: 14
&toPlaceholdershttp://docs.modx.pro/components/msearch2/snippets/mfilter2
Если не пусто, mFilter2 сохранит все данные в плейсхолдеры: [[+filters]], [[+results]] и [[+total]] с префиксом, указанным в этом параметре. Например, если вы указжете &toPlaceholders=`my.`, то получите: [[+my.filters]], [[+my.results]] и [[+my.total]]
                Я читал документацию. Но, возможно, не совсем разобрался. 
Пробовал и этот вариант с &toPlaceholders. Задаю префикс как в примере и все равно вывод работает в пределах стандартного чанка «tpl.mFilter2.outer»
Можно как-то на пальцах подробнее рассказать или на примере (было бы замечательно!)
                    Пробовал и этот вариант с &toPlaceholders. Задаю префикс как в примере и все равно вывод работает в пределах стандартного чанка «tpl.mFilter2.outer»
Можно как-то на пальцах подробнее рассказать или на примере (было бы замечательно!)
                Ниже уже ответили. Чуть дополню:
Все, что касается mFilter нужно обернуть в id=«mse2_mfilter»,
сами фильтры, т.е. плейсхолдер [[+my.filters]] должны быть внутри id=«mse2_filters»,
количество найденых ресурсов [[+my.total]] внутри id=«mse2_total»,
результат фильтрации [[+my.results]] внутри id=«mse2_results»,
ну и пагинация внутри id=«mse2_pagination»
                    Все, что касается mFilter нужно обернуть в id=«mse2_mfilter»,
сами фильтры, т.е. плейсхолдер [[+my.filters]] должны быть внутри id=«mse2_filters»,
количество найденых ресурсов [[+my.total]] внутри id=«mse2_total»,
результат фильтрации [[+my.results]] внутри id=«mse2_results»,
ну и пагинация внутри id=«mse2_pagination»
                Тебе нужно сделать вывод сниппета в [[$sidebar]] с параметром &toPlaceholders=`my.`, при этом перенести [[+my.results]] из tpl.mFilter2.outer в [[$content]]. И самое главное [[$sidebar]] и [[$content]] обернуть в общий блок с id=«mse2_mfilter», а из tpl.mFilter2.outer соответсвенно убрать этот id            
                    
                Так, с этим вроде разобрался. Спасибо, Дмитрий и спасибо Евгений!
Теперь возникла вторая проблема: когда фильтр не трогаешь, то выводится основной контент в категории, например. А когда начинаешь фильтровать, то выводится и результат фильтра и сам контент.
Можно как-то проверить результат на пустоту?
Пробовал следующий код, но он не сильно помогает — получается не то что нужно
                    Теперь возникла вторая проблема: когда фильтр не трогаешь, то выводится основной контент в категории, например. А когда начинаешь фильтровать, то выводится и результат фильтра и сам контент.
Можно как-то проверить результат на пустоту?
Пробовал следующий код, но он не сильно помогает — получается не то что нужно
[[+results:empty=`[[*content]]`:else=`<div id="mse2_results" class="clearfix">[[+results]]</div>`]]            
                Попробуйте вместо else -> notempty 
если еще актуально…
                    если еще актуально…
                Евгений если написать [[+results:empty=`[[*content]]`:notempty=`[[+results]]`]]
то не срабатывает empty
            
                    то не срабатывает empty
                Попробуйте:
                    [[+total:gt`0`:then=`[[+results]]`:else=`[[*content]]`]]            
                правильно будет так:
                    [[!+total`0`:then=`<div id="mse2_results">[[results]]</div>`:else=`<div id="mse2_results">[[*content]]</div>`]]            
                только в место mse2_results нужно поставить results            
                    
                Евгений, все хорошо, но не выводится пагинация и фильтры:
                    <div class="row">
                    	<div id="mse2_sort" class="span5 col-md-5">
                    		[[!%mse2_sort]]
                    		<a href="#" data-sort="ms|price" data-dir="[[+mse2_sort:is=`ms|price:desc`:then=`desc`]]" data-default="desc" class="sort">[[!%mse2_sort_price]] <span></span></a>
                    	    <a href="#" data-sort="ms|availability" data-dir="[[+mse2_sort:is=`ms|availability:desc`:then=`desc`]]" data-default="desc" class="sort">[[!%mse2_sort_availability]] <span></span></a>
                    	    [[!%mse2_limit]]
                    	    <select name="mse_limit" id="mse2_limit">
                				<option value="10" [[+limit:is=`10`:then=`selected`]]>10</option>
                				<option value="20" [[+limit:is=`20`:then=`selected`]]>20</option>
                				<option value="50" [[+limit:is=`50`:then=`selected`]]>50</option>
                				<option value="100" [[+limit:is=`100`:then=`selected`]]>100</option>
                			</select>
                    	 </div>
                    	[[+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>
                     
                    <div id="mse2_selected_wrapper">
                    <div id="mse2_selected">[[!%mse2_selected]]:
            				<span></span>
            			</div>
            		</div>            
                Всем добрый день.
Столкнулся с непонятной проблемой. Пытаюсь вывести фильтр и результат фильтрации в разных контейнерах.
Получаю такую картину:
1. При указании
Результат: фильтр слева исчезает, а продукция справа есть.
2. Однако, когда я не указываю "&toPlaceholders" и работаю с плейсхолдерами по-умолчанию, у меня фильтр слева есть, но, результат справа не показывается до момента активации фильтра (до первого выбора любого фильтра). Потом справа появляются товары и все работает нормально.
Я понимаю, что где-то ошибся с настройками, но я не могу найти где. Все ID прописаны корректно. Может быть должна быть какая-то максимальная\минимальная глубина нахождения каждого ID?
                    Столкнулся с непонятной проблемой. Пытаюсь вывести фильтр и результат фильтрации в разных контейнерах.
Получаю такую картину:
1. При указании
&toPlaceholders=`my.`И при корректном переносе всех id:<div id="mse2_mfilter" class="wrapper">
    <div class="navigation">
        [[!mFilter2?
            &parents=`[[*id]]`
            &toPlaceholders=`my.`
            &class=`msProduct`
            &element=`msProducts`
            &filters=`
                ms|vendor:vendors,
                ms|price:number,
                ms|size:number
            `
            &tplOuter=`user_tpl.mFilter2.outer`
            &tplFilter.outer.ms|price=`tpl.mFilter2.filter.slider`
            &tplFilter.row.ms|price=`tpl.mFilter2.filter.number`
            &tplFilter.outer.ms|size=`tpl.mFilter2.filter.slider`
            &tplFilter.row.ms|size=`tpl.mFilter2.filter.number`
            &showLog=`1`
        ]]
    </div>
    <div class="right-zone">
        <div id="mse2_results">
			[[+my.results]]
		</div>
    </div>
</div>В чанке фильтра «user_tpl.mFilter2.outer» удаляю #mse2_mfilter и добавляю к плейсхолдерам «my.», больше ничего не меняю.Результат: фильтр слева исчезает, а продукция справа есть.
2. Однако, когда я не указываю "&toPlaceholders" и работаю с плейсхолдерами по-умолчанию, у меня фильтр слева есть, но, результат справа не показывается до момента активации фильтра (до первого выбора любого фильтра). Потом справа появляются товары и все работает нормально.
Я понимаю, что где-то ошибся с настройками, но я не могу найти где. Все ID прописаны корректно. Может быть должна быть какая-то максимальная\минимальная глубина нахождения каждого ID?
                Аналогичная проблема. Не понимаю, где намудрил.            
                    
                Свою проблему решил в итоге, просто скопировав с нуля родной чанк и удалив аккуратно лишнее, проверяя на каждом удалении работу.
Пришлось внутри чанка организовать две колонки — после этого все заработало.
Похоже, одну из оберток все-таки терял.
                    Пришлось внутри чанка организовать две колонки — после этого все заработало.
Похоже, одну из оберток все-таки терял.
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.