Сортировка по определенным полям


Всем доброго вечера. Под вечер в понедельник особенно тяжело работать и туго сображаю уже)), потому прибегаю к вашей помощи. Есть каталог товаров, в котором есть сортировка по двум полям «Название» и «Цена», кроме того есть галка «Только в наличии»:

<!-- catalog panel -->
<div class="cat_panel">
 <div class="left">
    <div class="panel">
       Сортировать по: 
       <a href="" id="name_good" class="active">Названию</a>  
       <a href="" id="price_good">Цене</a>
     </div>
     <div class="chk">
        <input type="checkbox" name="" id="stock">
        <label for="stock">Только в наличии</label>
      </div>
  </div>
Фильтрацию вызываю таким образом:

[[!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`
    &tvPrefix=`tv.`
    &showHidden=`1`
    &sort=`ms_product|pagetitle:asc,ms|price:asc`
]]
Пока сортировка идет по названию и цене, а мне надо чтобы в вызов сниппета включалась та сортировка которая активна в hmtl-коде. В данном случае это:
<a href="" id="name_good" class="active">Названию</a>


Как можно в сниппет передать например посредством js значение?
Пробовал так:
<script>
fucntion print_result()
{
  var r = "ms_product|pagetitle:asc,ms|price:asc";
  return r;
}
</script>
И не передается в сниппет:
...
   &tvPrefix=`tv.`
   &showHidden=`1`
   &sort=`<script>document.write(print_result());</script>`
]]
...
Как правильно сделать?
Андрей
22 декабря 2014, 10:21
modx.pro
2 017
0

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

Василий Наумкин
22 декабря 2014, 14:40
0
В стандартном чанке сортировка обозначается совсем иначе:
<div id="mse2_sort" class="span5 col-md-5">
	[[%mse2_sort]]
	<a href="#" data-sort="resource|publishedon" data-dir="[[+mse2_sort:is=`resource|publishedon:desc`:then=`desc`]]" data-default="desc" class="sort">
		[[%mse2_sort_publishedon]] <span></span>
	</a>
</div>
Посмотри документацию и добавь свои сортировки по образу и подобию.
    Андрей
    23 декабря 2014, 06:36
    0
    Да спасибо большое! Помогло. Решил проблему. И все вопрос такой остается, можно как-то из js передавать значения в вызовы сниппетов? Или это абсурдная вещь)?
      Василий Наумкин
      23 декабря 2014, 07:08
      0
      Конечно, абсурдная. javascript может передать любой посетитель сайта.
      Ты хочешь, что любой посетитель сайта мог выполнять произвольный php у тебя на хостинге?

      Есть $_GET и $_POST — через них передаются параметры для PHP, который их должен очень вдумчиво фильтровать. Эти параметры можно использовать, и так же ими можно управлять на javascript.
        Андрей
        23 декабря 2014, 11:35
        0
        Не произвольный, а например, в сниппет передавать название чанка нужного, в зависимости от того что человек выбрал на своем компьютере.
          Василий Наумкин
          23 декабря 2014, 12:19
          0
          И как человек выберет чанк? Из предложенных опций?

          Ну так и передавай выбранную опцию через $_GET или $_POST параметр — причем здесь вообще javascript? Он нужен только когда ты уже разберешься с логикой работы и захочешь сделать это с помощью ajax.

          Ну и у mFilter2 из коробки есть возможность менять чанки — см. параметр &tpls.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    5