Denis Bushaev
С нами с 15 января 2020; Место в рейтинге пользователей: #641mFilter2 Не выводятся категории
Пишу эту заметку чисто для поисковиков. Т.к. проблема не гуглится, а на то, что бы разобраться почему это не работает я потратил час ковыряния исходников.
В моём случае решение было простое — расставить menuindex всем подкатегориям в текущей категории.
Код, который ответственен за это находится в файле msearch2/model/msearch2/filters.class.php с 592 строки до 602.
Насколько я понял, то он собирает все категории и кладёт их в общий массив, раскидывая их значению menuindex.
А потом в строке 640 он делает проверку на количество этих подмассивов с ключем = menuindex и если у вас все категории с одинаковыми menuindex`ами, то получается, что он ничего не вывыодит, если флаг showEmptyFilters = false в вызове сниппета mFilter2.
Версия плагина 1.14.1-pl.
В моём случае решение было простое — расставить menuindex всем подкатегориям в текущей категории.
Код, который ответственен за это находится в файле msearch2/model/msearch2/filters.class.php с 592 строки до 602.
Насколько я понял, то он собирает все категории и кладёт их в общий массив, раскидывая их значению menuindex.
А потом в строке 640 он делает проверку на количество этих подмассивов с ключем = menuindex и если у вас все категории с одинаковыми menuindex`ами, то получается, что он ничего не вывыодит, если флаг showEmptyFilters = false в вызове сниппета mFilter2.
Версия плагина 1.14.1-pl.
Не отображаются категории в выборе категорий опций и категорий товара miniShop2
Добрый день, на сайте такая картина на странице выбора категорий для опций miniShop2.
![](https://sun9-64.userapi.com/impg/EtzZmoCVV6Zsr9figWTA99FYvgsH-baQmkdSIA/vAH4d2hOTx0.jpg?size=968x448&quality=96&proxy=1&sign=76f532cb9f9f73817e37c536daf1141e)
Тоже самое и в окне выбора категорий товара:
![](https://sun9-51.userapi.com/impg/XfAG2XcwndGYJpS_ToI3Jal6k8hCl8JFVK029Q/N0uQyuhgL3Q.jpg?size=1321x735&quality=96&proxy=1&sign=1a396c7ebef5f14366d00761a245649a)
Категории импортировал. Наполнение всех категорий абсолютно одинаковое, кроме pagetitle, parent и пары tv`шек.
modx 2.8.1 php 7.4 openserver.
core/cache чистил. Кеш в админке чистил. С инкогнито заходил. Перегенерацию урлов включал.
![](https://sun9-64.userapi.com/impg/EtzZmoCVV6Zsr9figWTA99FYvgsH-baQmkdSIA/vAH4d2hOTx0.jpg?size=968x448&quality=96&proxy=1&sign=76f532cb9f9f73817e37c536daf1141e)
Тоже самое и в окне выбора категорий товара:
![](https://sun9-51.userapi.com/impg/XfAG2XcwndGYJpS_ToI3Jal6k8hCl8JFVK029Q/N0uQyuhgL3Q.jpg?size=1321x735&quality=96&proxy=1&sign=1a396c7ebef5f14366d00761a245649a)
Категории импортировал. Наполнение всех категорий абсолютно одинаковое, кроме pagetitle, parent и пары tv`шек.
modx 2.8.1 php 7.4 openserver.
core/cache чистил. Кеш в админке чистил. С инкогнито заходил. Перегенерацию урлов включал.
pdoTools->getChunk не парсит вложенный контент
Добрый день.
modx 2.6.5
pdoTools 2.12.3-pl
php 7.3
Написал свой плагин для поиска.
Всё нормально работает, но вот ресурсы, у которых class_key === modWebLink и в content есть теги fenom (например у меня там просто ссылки на внутренние ресурсы {`id` | url}), он их не обрабатывает и выплёвывает необработанными тегами.
пытался сделать так
Код:
modx 2.6.5
pdoTools 2.12.3-pl
php 7.3
Написал свой плагин для поиска.
Всё нормально работает, но вот ресурсы, у которых class_key === modWebLink и в content есть теги fenom (например у меня там просто ссылки на внутренние ресурсы {`id` | url}), он их не обрабатывает и выплёвывает необработанными тегами.
пытался сделать так
/* И getChunks и parseChunk */
$obj->content = $pdoTools->getChunk('@INLINE {$c}', ['c'=>$obj->content]);
Обработка тегов в ресурсах включена, конечно.Код:
<?php
if ($modx->event->name != 'OnPageNotFound') {return false;}
$alias = $modx->context->getOption('request_param_alias', 'q');
$searchQueryAlias = 's';
if (!array_key_exists($alias, $_REQUEST) || $_REQUEST[$alias] !== 'search' || !array_key_exists($searchQueryAlias, $_REQUEST)) {return false;}
$searchQuery = trim($_REQUEST[$searchQueryAlias]);
if (!isset($modx->resource)) {
$modx->resource = $modx->newObject('modResource');
$modx->resource->pagetitle = 'Поиск по сайту';
}
$fqn = $modx->getOption('pdoTools.class', null, 'pdotools.pdotools', true);
if ($pdoClass = $modx->loadClass($fqn, '', false, true)) {
$pdoTools = new $pdoClass($modx, $scriptProperties);
}
elseif ($pdoClass = $modx->loadClass($fqn, MODX_CORE_PATH . 'components/pdotools/model/', false, true)) {
$pdoTools = new $pdoClass($modx, $scriptProperties);
}
else {
$modx->log(modX::LOG_LEVEL_ERROR, 'Could not load pdoTools from "MODX_CORE_PATH/components/pdotools/model/".');
return false;
}
$pdoTools->addTime('pdoTools loaded');
$out = '';
$stmt = $modx->newQuery('modResource');
$stmt->limit(15);
$preparedSQ = str_replace(' ', ' ', trim($searchQuery));
$preparedSQ = preg_replace('#[^\w]#u', ' ', $preparedSQ);
$preparedSQ = str_replace(' ', ' ', trim($preparedSQ));
$preparedSQPieces = explode(' ', $preparedSQ);
$stmt->where(['id:!=' => 1]);
$stmt->andCondition(['pagetitle:LIKE' => "%$preparedSQ%"]);
$stmt->orCondition(['longtitle:LIKE' => "%$preparedSQ%"]);
if (count($preparedSQPieces) > 1) {
foreach($preparedSQPieces as $idx => $piece) {
$stmt->orCondition(['pagetitle:LIKE' => "%$piece%"]);
$stmt->orCondition(['longtitle:LIKE' => "%$piece%"]);
}
}
$out = '';
$count = $modx->getCount('modResource', $stmt);
if (intval($count) > 0) {
$objs = $modx->getIterator('modResource', $stmt);
foreach($objs as $obj) {
$obj->content = $pdoTools->getChunk('@INLINE {$c}', ['c' => $obj->content]);
$out .= $pdoTools->getChunk('@FILE chunks/particles/search-list.item.tpl', $obj->toArray());
}
} else {
$out .= '<div class="col-12">По вашему запросу «'.$searchQuery.'», ничего не найдено, уточните запрос.</div>';
}
$out = $pdoTools->getChunk('@FILE pages/search.tpl', [
'title' => 'Результат по запросу «'.$searchQuery.'»',
'items' => $out
]);
die($out);