Как правильно задать свой блок "Ничего не найдено" в mFilter2
Здравствуйте!
Пробую сделать свой собственный блок в mFilter2 который бы выводил не просто надпись
«Подходящих результатов не найдено.» А полноценный блок с оформлением и картинкой внутри, пробую внутри tplOuter сделать проверку на количество в totalVar однако как и предполагалось это срабатывает только при загрузке страницы, а при применении фильтров — нет.
Верно ли я понимаю, что единственным верным решением это будет идти и добавлять этот блок на событие mse2_load в js?
В блоке используются словари для мультиязычности и не хотелось бы их опрокидывать в js.
Пробую сделать свой собственный блок в mFilter2 который бы выводил не просто надпись
«Подходящих результатов не найдено.» А полноценный блок с оформлением и картинкой внутри, пробую внутри tplOuter сделать проверку на количество в totalVar однако как и предполагалось это срабатывает только при загрузке страницы, а при применении фильтров — нет.
Верно ли я понимаю, что единственным верным решением это будет идти и добавлять этот блок на событие mse2_load в js?
В блоке используются словари для мультиязычности и не хотелось бы их опрокидывать в js.
Комментарии: 7
Судя по сниппету mFilter2 он действительно не поддерживает стилизацию сообщения об отсутствии результатов под капотом
if (!empty($toSeparatePlaceholders)) {
$modx->setPlaceholders($output['filters'], $toSeparatePlaceholders);
$output['log'] = $log;
if (is_array($output['filters'])) {
$output['filters'] = implode($outputSeparator, $output['filters']);
}
$pcre = '#^' . preg_quote($toSeparatePlaceholders) . '(\d+)$#';
$tmp = array();
foreach ($modx->placeholders as $k => $v) {
if (preg_match($pcre, $k)) {
$tmp[] = $v;
}
}
$output['results'] = !empty($tmp)
? implode($outputSeparator, $tmp)
: $modx->lexicon('mse2_err_no_results');
$modx->setPlaceholders($output, $toSeparatePlaceholders);
}
Запихнуть в mse2_err_no_results html код (а может и вызов чанка)...?..
Это не всегда удобно, поскольку уведомление может быть разным, например
Шуб по вашим критериям не найдено
Штанов по вашим критериям не найдено и тд, я вот пока склоняюсь к добавлению поля tplEmpty и настроить обработку чтобы отдавал чанк если пусто а не запись словаря
Шуб по вашим критериям не найдено
Штанов по вашим критериям не найдено и тд, я вот пока склоняюсь к добавлению поля tplEmpty и настроить обработку чтобы отдавал чанк если пусто а не запись словаря
в итоге вот к чему пришел
Заменил все вхождения
Теперь осталось докрутить чтобы при Ajax работало а то сейчас отдает запись словаря
Заменил все вхождения
$modx->lexicon('mse2_err_no_results')
на $mSearch2->pdoTools->getChunk($scriptProperties['tplEmpty'], $output, $fastMode);
Добился того что при загрузке страницы mfilter2 отдает чанк из параметра tplEmptyТеперь осталось докрутить чтобы при Ajax работало а то сейчас отдает запись словаря
и далее создал копию файла
assets/components/msearch2/action.php
Назвал ее
assets/filters/action.php
Заменил
Поменял assets/components/msearch2/action.php на assets/filters/action.php
PS может как-то могу поспособствовать добавив это изменение в будущие версии mFilter2?
тут правда не реализована проверка запыленности этого банка, но вроде как это не сложный функционал, на msearch2 он есть
assets/components/msearch2/action.php
Назвал ее
assets/filters/action.php
Заменил
'results' => !empty($results) ? $results : $modx->lexicon('mse2_err_no_results'),
На 'results' => !empty($results) ? $results : $pdoFetch->getChunk($scriptProperties['tplEmpty'], []),
Далее в файле js который указывается в системных настройках, у меня он assets/js/filters.min.jsПоменял assets/components/msearch2/action.php на assets/filters/action.php
PS может как-то могу поспособствовать добавив это изменение в будущие версии mFilter2?
тут правда не реализована проверка запыленности этого банка, но вроде как это не сложный функционал, на msearch2 он есть
Сложна.
Я сделал с помощью js. Задал class для div c results
и вот так прописал
Я сделал с помощью js. Задал class для div c results
и вот так прописал
document.querySelector('.easycomm div').textContent = 'Отзывов пока нет, Ваш может стать первым.';
Еще не совсем понимаю как ловится событие post в mfilter2 я думал плагином, а в итоге нет, как оно работает?
Понял, в файле assets/components/msearch2/action.php вся логика
Понял, в файле assets/components/msearch2/action.php вся логика
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.