Size: a a a

MODX. Русскоязычное сообщество.

2021 June 04

Е

Евгений in MODX. Русскоязычное сообщество.
пожалуйста, используется данный сниппет:
<?php
$id = $modx->resource->id;
$opKey = 'msOption';
$copKey = 'msCategoryOption';
$filters = explode(',', $scriptProperties['filters']);
$tplRow = $scriptProperties['tplFilter.row'];
$tplOuter = $scriptProperties['tplFilter.outer'];

$filterKeys = [];
foreach($filters as $filter) {
   $filterKey = reset(explode(':', end(explode('|', $filter))));
   $filterKeys[$filterKey] = $filterKey;
   
}

$q = $modx->newQuery($copKey);
$q->select(array(
   "{$copKey}.category_id",
   "{$copKey}.option_id",
   "{$opKey}.key"
));
$q->where(["{$copKey}.category_id" => $id]);
$q->leftJoin($opKey, $opKey, "{$copKey}.option_id = {$opKey}.id");


$q->prepare();
$q->stmt->execute();
$options = $q->stmt->fetchAll(PDO::FETCH_ASSOC);

$_options = [];

if(count($exclude) > 0) {
  foreach ($options as $key => $option) {
       if (array_search($option['key'], $exclude) > -1) {
           unset($options[$key]);
       }
   }
}

foreach ($options as $option) {
   if(!array_key_exists($option['key'], $filterKeys)) {
       switch($option['type']) {
           case 'checkbox':
               $filter = ':boolean';
               break;
           case 'numberfield':
               $filter = ':number';
               break;
           default:
               $filter = '';
               break;
       }
       
       if ($option['type'] == 'checkbox') {
           $filter = ':boolean';
       }
       
       $_options[] = 'msoption|' . $option['key'] . $filter;
       $scriptProperties['tplFilter.outer.msoption|' . $option['key']] = $tplOuter;
       $scriptProperties['tplFilter.row.msoption|' . $option['key']] = $tplRow;
   }
}
$scriptProperties['filters'] = implode(',', array_merge($_options, $filters));

return $modx->runSnippet('mFilter2@filter', $scriptProperties);

вот вызов сниппета

{'!mFilter3' | snippet : [
 'includeThumbs' => 'standard',
 'parents' => $_modx->resource.id,
 'filters' => '
   msoption|length:number,
   msoption|width:number,
   msoption|height:number,
   msoption|thickness_mm:number,
   msoption|color,
   msoption|strana,
   msoption|class,
   msoption|species,
   msoption|construction,
   msoption|structure,
   msoption|brightness,
   msoption|coating,
   msoption|collection,
   msoption|lay_type,
   [[--msoption|material,]]
   ms|price:number',
 'sortby' => '{"thumb":"desc","price":"asc"}',
 'exclude' => $exclude,
 'where' => '{ "template":"3"}',
 'limit' => '40',
 'cacheTime' => '3600',
 'cache' => '3600',

 'tplOuter' => 'tpl.mFilter2.outer.custom',

 'tplFilter.outer' => 'tpl.mFilter2.filter.outer.custom',
 'tplFilter.row' => 'tpl.mFilter2.filter.checkbox.custom',
источник

Е

Евгений in MODX. Русскоязычное сообщество.
'tplFilter.outer.ms|price' => 'tpl.mFilter2.filter.slider',
 'tplFilter.row.ms|price' => 'tpl.mFilter2.filter.number',
 'tplFilter.outer.msoption|thickness_mm' => 'tpl.mFilter2.filter.slider',
 'tplFilter.row.msoption|thickness_mm' => 'tpl.mFilter2.filter.number',
 'tplFilter.outer.msoption|color' => 'tpl.mFilter2.filter.outer.custom',
 'tplFilter.row.msoption|color' => 'tpl.mFilter2.filter.checkbox.custom',
 'tplFilter.outer.msoption|material' => 'tpl.mFilter2.filter.outer.custom',
 'tplFilter.row.msoption|material' => 'tpl.mFilter2.filter.checkbox.custom',
 'tplFilter.outer.msoption|class' => 'tpl.mFilter2.filter.outer.custom',
 'tplFilter.row.msoption|class' => 'tpl.mFilter2.filter.checkbox.custom',
 'tplFilter.outer.msoption|species' => 'tpl.mFilter2.filter.outer.custom',
 'tplFilter.row.msoption|species' => 'tpl.mFilter2.filter.checkbox.custom',
 'tplFilter.outer.msoption|construction' => 'tpl.mFilter2.filter.outer.custom',
 'tplFilter.row.msoption|construction' => 'tpl.mFilter2.filter.checkbox.custom',
 'tplFilter.outer.msoption|coating' => 'tpl.mFilter2.filter.outer.custom',
 'tplFilter.row.msoption|coating' => 'tpl.mFilter2.filter.checkbox.custom',
 'tplFilter.outer.msoption|structure' => 'tpl.mFilter2.filter.outer.custom',
 'tplFilter.row.msoption|structure' => 'tpl.mFilter2.filter.checkbox.custom',
 'tplFilter.outer.msoption|brightness' => 'tpl.mFilter2.filter.outer.custom',
 'tplFilter.row.msoption|brightness' => 'tpl.mFilter2.filter.checkbox.custom',
 'tplFilter.outer.msoption|collection' => 'tpl.mFilter2.filter.outer.custom',
 'tplFilter.row.msoption|collection' => 'tpl.mFilter2.filter.checkbox.custom',
 'tplFilter.outer.msoption|lay_type' => 'tpl.mFilter2.filter.outer.custom',
 'tplFilter.row.msoption|lay_type' => 'tpl.mFilter2.filter.checkbox.custom',
 'tplFilter.outer.msoption|strana' => 'tpl.mFilter2.filter.outer.custom',
 'tplFilter.row.msoption|strana' => 'tpl.mFilter2.filter.checkbox.custom',
 ]}
источник

Е

Евгений in MODX. Русскоязычное сообщество.
'sortby' => '{"thumb":"desc","price":"asc"}',

сортирует по первому параметру, т.е. по thumb desc
price как-бы не участвует в выборке
источник

Е

Евгений in MODX. Русскоязычное сообщество.
пытался с Data.price, Data.thumb тоже самое
источник

ИБ

Иван Бочкарев... in MODX. Русскоязычное сообщество.
В ТП обращались с этим вопросом?
источник

Е

Евгений in MODX. Русскоязычное сообщество.
Еще нет
источник

ИБ

Иван Бочкарев... in MODX. Русскоязычное сообщество.
Вы тут с неделю этот вопрос решаете. Если не получается решить - напишите в ТП. Не зря он платный
источник

НК

Николай Корогодин... in MODX. Русскоязычное сообщество.
Иван, друг, помоги с сайтом)
источник

ИБ

Иван Бочкарев... in MODX. Русскоязычное сообщество.
Я не беру в работу.
источник

НК

Николай Корогодин... in MODX. Русскоязычное сообщество.
придётся на FL идти(((
источник

НК

Николай Корогодин... in MODX. Русскоязычное сообщество.
ох и хапну я там горя)))
источник

ИБ

Иван Бочкарев... in MODX. Русскоязычное сообщество.
https://t.me/ru_modx_work - c описанием ТЗ
источник

НК

Николай Корогодин... in MODX. Русскоязычное сообщество.
спасибо!
источник

Д

Даник in MODX. Русскоязычное сообщество.
ааа, так это mFilter2
источник

Д

Даник in MODX. Русскоязычное сообщество.
sort' => '{"thumb":"desc","price":"asc"}'
источник

Д

Даник in MODX. Русскоязычное сообщество.
а не sortby
источник

ИБ

Иван Бочкарев... in MODX. Русскоязычное сообщество.
источник

Д

Даник in MODX. Русскоязычное сообщество.
стоп, пардон
источник

Д

Даник in MODX. Русскоязычное сообщество.
че за mFilter3
источник

Е

Евгений in MODX. Русскоязычное сообщество.
'sort' => '{"thumb":"desc","price":"asc"}'
не, это не то, неработает
'sort' => 'thumb:desc,price:asc', так тоже
источник