Как отображать товары в порядке отображения в админке?
Здравствуйте. Давно не занимался интернет магазинами, но пришла надобность вернуться к этому, и выполнить казалось бы простую задчу. Используя фильтр mFilter2 сделать изначальное отображение товаров (имеется ввиду без фильтрации и сортировки) такое же, как и в админке. В доках на сниппет нашел информацию про сортировку, и так же в категории увидел поле IDx, по которому строится порядок товаров. Но сниппет mFilter2 ни в каком виде IDx не принимает. 'sort' => 'IDx:desc' так же не работает с приставкой ms| и ms_product.
Подскажите пожалуйста, может я что-то не то делаю. Все везде перерыл уже…
Подскажите пожалуйста, может я что-то не то делаю. Все везде перерыл уже…
Комментарии: 6
для начала что бы понять, какие поля доступны, выведите без шаблона,
tpl => ''
, получите массив данных, найдите нужное поле и например 'sort' => 'ms|idx:asc'
Пробовал и так. В результате ничего не выводится. В вызове сниппета вроде не ошибся…
Без шаблона вывожу, idx там отсутствует.
Без шаблона вывожу, idx там отсутствует.
{'!mFilter2' | snippet : [
'paginator' => 'pdoPage@filters'
'element' => 'msProducts'
'sort' => 'ms|idx:asc'
'parents' => $_modx->resource.id
'limit' => 12
'tpl' => 'item'
'class' => 'msProduct'
'tplOuter'=> 'filters'
'filters' => 'ms|price:number,
msoption|strana,
ms|vendor:vendors,
msoption|iznos,
msoption|depth,
msoption|fasks,
msoption|vid,
msoption|gamma,
msoption|shir,
msoption|obrabotka,
msoption|derevo,
msoption|vors,
msoption|safe_layer_depth,
msoption|tip_r,
msoption|klass_pb,
msfiles|name
'
'aliases' => 'ms|price==price,msfiles|name==colors'
'tplFilter.outer.default' => 'filter-wrapper'
'tplFilter.row.default' => 'filter'
'tplFilter.outer.price' => 'filter-price'
'tplFilter.row.price' =>'filter-price-row'
'tplFilter.outer.colors' => 'filter-colors'
'tplFilter.row.colors' => 'filter-colors.row'
]}
магия какая-то
В документации же явно написано:
'sort' => 'ms|idx:asc'
В документации же явно написано:
'sortby' => 'menuindex',
'sortdir' => 'asc'
либо json 'sortby' => '{ "menuindex":"ASC" }'
Что значит «ничего не выводится»? Совсем ничего не выводится?
Покажите вывод showlog. Он ж наверняка не просто так сделан)
Покажите вывод showlog. Он ж наверняка не просто так сделан)
Вот буквально ничего. В контейнере с результатами пустота.
Что еще интересно, 'showlog' => 1 ничего не дал. Может все потому-что сниппет стоит запускать сниппетом, а не через fenom…
Что еще интересно, 'showlog' => 1 ничего не дал. Может все потому-что сниппет стоит запускать сниппетом, а не через fenom…
IDx это menuindex. menuindex товару ставится максимальный относительно других товаров этой категории, а не относительно всех товаров. То есть товары из разных категорий могут иметь один и тот же menuindex, а значит сортировка как в админке не получится. Можно или компонентом этим воспользоваться, чтобы расставлять сортировку в категориях индивидуально, либо расставить menuindex товарам глобально, например скриптом:
А потом отсортировать товары по menuindex.
<?php
function updateMenuIndex($id) {
global $menuindex, $modx;
$childsIds = $modx->getChildIds($id,1,array('context' => 'web'));
if(!count($childsIds)) return;
$q = $modx->newQuery('modResource');
$q->where( ['id:IN' => $childsIds] );
$q->sortby('menuindex', 'ASC');
$result = $modx->getIterator('modResource', $q);
foreach($result as $key=>$res) {
$menuindex++;
$res->set('menuindex', $menuindex);
$res->save();
//echo "$menuindex - {$res->pagetitle} ({$res->id})<br>";
updateMenuIndex($res->get('id'));
}
}
updateMenuIndex(0); // id родителя в параметре
return "menuindex обновлены у $menuindex ресурсов";
А потом отсортировать товары по menuindex.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.