как убрать подсчет кол-ва в скобках? удалить закоментить строчки в файле catalog\view\javascript\filterpro.min.js
//для атрибутов
$('[at_v_t="' + at_v_i_e + '"]').text($('[at_v_t="' + at_v_i_e + '"]').attr('data-value') + " (" + atts[at_v_i] + ")");
$('[at_v_t="' + at_v_i_e + '"]').text($('[at_v_t="' + at_v_i_e + '"]').attr('data-value'));
// для производителей
$('label[for="manufacturer_' + l[1] + '"]').text($("#m_" + l[1]).val());
$('label[for="manufacturer_' + k.id + '"]').text($("#m_" + k.id).val() + " (" + k.t + ")")
//для опций
$('label[for="option_value_' + l[1] + '"]').text($("#o_" + l[1]).val());
$('label[for="option_value_' + k.id + '"]').text($("#o_" + k.id).val() + " (" + k.t + ")")
для категорий в файле catalog\controller\module\filterpro.php после
if($filterpro_setting['display_categories'] != 'none') {
$this->data['categories'] = $this->model_module_filterpro->getSubCategories($data);
$this->data['expanded_categories'] = isset($filterpro_setting['expanded_categories']) ? 1 : 0;
}
добавить
foreach($this->data['categories'] as $i => $category){
$this->data['categories'][$i]['name'] = substr($category['name'], 0, strpos($category['name'], '('));
}
после
$totals_categories = $this->model_module_filterpro->getTotalCategories($data, $category_id);
добавить
foreach($totals_categories as $i => $category){
$totals_categories[$i]['name'] = substr($category['name'], 0, strpos($category['name'], ' ('));
}
как убрать серую маску при фильтрации? удалить закоментить строчки в файле catalog\view\javascript\filterpro.min.js
$(cont).mask();
$(".filterpro").mask();
как подружить фильтр с модулем product display settings? загрузить файл из архива product-display-settings.zip перестают работать стикеры https://opencartforum.com/files/file/782-astickers-ajax-стикеры-для-товаров/ . что делать? всё очень просто. нужно добавить код вызова стикеров в метод view(); перед последней скобкой catalog/view/theme/ваша_тема/template/product.category.tpl
при сохранении фильтров в админке не все поля сохраняются, например методы фильтрации или расположение фильтра на схемах либо в логах ошибки вида Notice: Undefined index: attr_group in .../catalog/controller/module/filterpro.php on line 274 Notice: Undefined index: filterpro_container 1. нужно указать параметр php_value max_input_vars 3000(или более) в файле .htaccess 2. выполнить скрипт в mysql ALTER TABLE `oc_setting` CHANGE `value` `value` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL где oc_ ваш префикс, можно посмотреть в файле config
define('DB_PREFIX', 'oc_');
если добавить фильтр на схему с производителям, помимо страницы каждого из производителей фильтр отображается в общем списке всех производителей. как его оттуда убрать?
как сделать по-умолчанию сортировку товаров в каталоге по дате добавления? способ хорошо описан тут проблему хорошо описывает скрин ниже. тут пользователь неверно заполнит атрибуты, как правильно можно увидеть на моём демо не отображается слайдер по цене, либо в полях фильтра по цене -1, либо не применились стили фильтра скорее всего проблема в том, что автор шаблона выпилил из него код загрузки сторонних скриптов, стилей, потому нужно их вернуть если взять дефолтный шаблон это код для стилей
<?php foreach ($styles as $style) { ?>
<link rel="<?php echo $style['rel']; ?>" type="text/css" href="<?php echo $style['href']; ?>" media="<?php echo $style['media']; ?>" />
<?php } ?>
должен быть после загрузки основного стиля
<link rel="stylesheet" type="text/css" href="catalog/view/theme/default/stylesheet/stylesheet.css" />
для скриптов
<?php foreach ($scripts as $script) { ?>
<script type="text/javascript" src="<?php echo $script; ?>"></script>
<?php } ?>
должен быть после загрузки основных скриптов, т.е. после
<script type="text/javascript" src="catalog/view/javascript/common.js"></script>
как отсортировать значения цифровых атрибутов в фильтре?
2.5.x в файле catalog/controller/modulefilterpro.php строка 243(примерно) добавить зеленый код после
$this->data['attributes'] = $this->model_module_filterpro->getAttributes($data);
2.2
как сортировать не числовые атрибуты? для версии 2.5 https://opencartforum.com/topic/10096-filter-pro/?do=findComment&comment=371032 для версии 2.4.4.1 ниже в файле catalog\controller\module\filterpro.php добавить выделенное зеленым, где 14 - id атрибута $this->data['attributes'] = $this->model_module_filterpro->getAttributes($data); $multi_sort = array(14 => array("S" => 3, "M" => 2, "XL" => 1, "XXL" => 4)); foreach($this->data['attributes'] as $j => $attribute_group) { foreach($attribute_group['attribute_values'] as $attribute_id => $attribute) { if(!isset($filterpro_setting['display_attribute_' . $attribute_id])) { $filterpro_setting['display_attribute_' . $attribute_id] = 'none'; } else{ if(in_array($attribute_id, array_keys($multi_sort))) { $values = array_flip($this->data['attributes'][$j]['attribute_values'][$attribute_id]['values']); $sort_order = array_intersect_key($multi_sort[$attribute_id], $values); $ssort = array(); foreach($this->data['attributes'][$j]['attribute_values'][$attribute_id]['values'] as $i => $value){ if (!in_array($value, array_keys($sort_order))) { $ssort[$i]= (int)$value; } else { $ssort[$i]=$sort_order[$value]; } } array_multisort($ssort, SORT_ASC, $this->data['attributes'][$j]['attribute_values'][$attribute_id]['values']); } } как отключить фильтр в определенных категориях? в файле catalog/controller/module/filterpro.php (строка примерно 176) после кода
if(isset($this->request->get['path'])) {
$this->data['path'] = $this->request->get['path'];
$parts = explode('_', (string)$this->request->get['path']);
$category_id = array_pop($parts);
}
добавить, где 23, 45 - id'шники категорий через запятую
if (in_array($category_id, array(23, 45))) {
return;
}
как сделать фильтр по кнопке? в файле catalog/view/javascript/filterpro.min.js замените
$("#filterpro .filtered").live("change", (function () {
iF();
}));
на
$("#filterpro .filtered").live("change", (function () {
return false;
}));
в шаблоне в любом удобном месте добавьте код (текст кнопки и стили можно задать какие угодно):
<a onclick="iF()">Применить</a>
по клику на эту кнопку сработает фильтр как скрывать неактивные атрибуты(checkbox) catalog/view/javascript/filterpro.min.js
как в слайдере атрибутов вывести дробные числа catalog\controller\module\filterpro.php код
$this->data['attributes'][$j]['attribute_values'][$attribute_id]['suffix'] = preg_replace("/^[0-9]*/", '', $first);
$values = array_map('intVal', $values);
замените на
$this->data['attributes'][$j]['attribute_values'][$attribute_id]['suffix'] = preg_replace("/^[0-9]*(\\.[0-9]*)?/", '', $first);
$values = array_map('floatVal', $values);
интеграция фильтра с модулем серий Product Series
интеграция с модулем "Текстовый блок с атрибутами"
https://opencartforum.com/topic/14262-текстовый-блок-с-атрибутами/?do=findComment&comment=209521