Как правильно перенести один из фильтров в другое место?

Добрый вечер!
Мне нужно расположить фильтр по брендам над товарами и удалить его из левой колонки, где он сейчас расположен.

В mFilter2 я воспользовался параметром toSeparatePlaceholders задав ему префикc _my и разместил плейсхолдер {'my_ms|vendor' | placeholder} в нужное место.

Вопрос. Как теперь скрыть фильтр по брендам из левой колонки?


Вот как вывожу фильтр
<div class="row msearch2 msearch2-desc " id="mse2_mfilter">
	{'!mFilter2' | snippet : [
        'class'=>'msProduct',
	'element'=>'msProducts',
	'sortby'=>'id',
	'values_delimeter'=>';',
	'paginator'=>'pdoPage@myPdoPage',
	'limit'=>18,
	'sortdir'=>'asc',
	'depth'=>0,
	'parents' => $_modx->resource.id,
	'includeThumbs'=>'medium',
	'tpls'=>'@FILE chunks/product/productListTpl.tpl',
	'toSeparatePlaceholders' =>'my_',
	'tplFilter.row.ms|old_price'=>'mySalesTplMFilter2FilterCheckbox',
	'tplFilter.outer.ms|old_price'=>'mySalesTplMFilter2FilterOuter',
	'tplFilter.row.default'=>'myTplMFilter2FilterCheckbox',
	'tplFilter.outer.default'=>'myTplMFilter2FilterOuter',
	'filters'=>($filters | join : ','),
	'tplFilter.outer.ms|price'=>'myTplMFilter2FilterSlider',
	'tplFilter.row.ms|price'=>'tpl.mFilter2.filter.number',
	'tplFilter.row.ms|vendor'=>'categoryBrandsFilterCheckbox',
	'tplFilter.outer.ms|vendor'=>'categoryBrandsFilterOuter',
    ]}
    <div class="col-md-3 d-none d-lg-block filters-block">
    	
		<form action="{$_modx->resource.uri}" method="post" id="mse2_filters" class="filter-desc">
			{$_modx->getPlaceholder('my_filters')}
			
			{if $_modx->getPlaceholder('my_filters')}
			<button type="reset" class="btn  btn-dark hidden">[[%mse2_reset]]</button>
			<div class="clearfix"></div>
			{/if}
		</form>
		
	</div>
	<div class="col-lg-9 col-md-12">
		
		<div class="col-12 msearch2-sales">{'my_ms|vendor' | placeholder}</div> {* Здесь новое место для фильтра по бренду *}
		
		<div id="mse2_selected_wrapper">
			<div id="mse2_selected">[[%mse2_selected]]:<span></span></div>
		</div>
		
		<div id="mse2_results" class="row">
			{$_modx->getPlaceholder('my_results')}
		</div>

		<div class="mse2_pagination">
			{'page.nav' | placeholder}
		</div>

	</div>
</div>
Заранее спасибо!
Константин
24 декабря 2019, 02:17
modx.pro
643
0

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

Наумов Алексей
24 декабря 2019, 09:38
+1
Вместо
{$_modx->getPlaceholder('my_filters')}
вам нужно сделать foreach по $filters и выводить каждый фильтр отдельно.
Тогда вы можете проверку сделать:
{foreach $filters as $filter}
{if $filter != 'вендор'}
{$_modx->getPlaceholder('фильтр')}
{/if}
{/foreach}
    Константин
    25 декабря 2019, 21:29
    0
    Спасибо.
    Я сделал так
    {foreach $filters as $filter}
    {if $filter != 'ms|vendor:vendors'}
    	{$_modx->getPlaceholder('my_' ~  $filter)}
    {/if}
    {/foreach}
    Бренды с левой колонки пропали, но те, что над товарами {'my_ms|vendor' | placeholder} перестали работать. Жму и ничего не происходит
      Константин
      25 декабря 2019, 22:16
      0
      Так. разобрался. нужно и фильтры и результаты фильтрации обернуть в
      <form action="{$_modx->resource.uri}" method="post" id="mse2_filters">
      здесь подсмотрел
      Все теперь фильтрует норм. только при фильтрации url выглядит примерно так
      site.ru/?id=86;125&msoption|number_of_sheets=125&ms|vendor=11&count=1&options=[]
      До этого было
      site.ru/?ms|vendor=11&msoption|number_of_sheets=125
        Наумов Алексей
        26 декабря 2019, 09:37
        0
        Не совсем так.
        Обернуть действительно нужно в элемент с
        id="mse2_filters"
        , но это должен быть элемент div, а не form.
        Сейчас у вас вся страница стара огромной формой, все hidden инпуты туда попали, перестали работать вложенные формы.
          Константин
          26 декабря 2019, 11:26
          0
          а id=«mse2_filters» разве не должен быть привязан к форме с фильтрами?
            Наумов Алексей
            26 декабря 2019, 13:15
            0
            Прошу прощения… напутал.
            Есть
            <form action="" method="post" id="mse2_filters">
            а есть
            <div id="mse2_mfilter">
            Вот первый да, форма, а второй обертка для всех фильтров.
            Я, чтобы разнести фильтры в разные части страницы, второй id прописывал едва ли не для body, все получалось.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      6