Модуль Модуль Advanced Search 4

Подскажите пожалуйста как допилить. У меня на сайте вся продукция со скидкой. Может ссылка есть на решение?
т. к. в данном модуле сортировки работают лучше чем в престе, сделайте категории через сео страницы модуля и 301 редирект со страниц категорий например. Либо копаться в модуле, где выводятся сортировки.
 
Если кому-то поможет (особенно при переходе с 1.6 на 1.7.6.4), модуль 4.12.9 подвисает на большом количестве фильтров. Таблицы в БД совпадают по структуре. В файле pm_advancedsearch4.php в корне модуля необходимо с 3347 строки привести к такому виду (до конца функции:(

Если не сложно - не могли бы приложить свой вариант файла - несколько запутался?

Получается вот это:
foreach ($result[$key]['criterions'][$criterions_group['id_criterion_group']] as $criterion_group) {
$removeCriterionGroup = (isset($criterion_group['nb_product']) && $criterion_group['nb_product'] == $result[$key]['total_products']);
if (!$removeCriterionGroup && !isset($criterion_group['nb_product']) && $criterions_group['display_type'] == 5 && isset($criterion_group['min'], $criterion_group['max']) && $criterion_group['min'] == $criterion_group['max']) {
if ($criterions_group['criterion_group_type'] == 'price') {
$removeCriterionGroup = true;
} else {
$selected_criterion[(int)$criterions_group['id_criterion_group']] = array($criterion_group['min'] . '~' . $criterion_group['max']);
$selected_criteria_groups_type[(int)$criterions_group['id_criterion_group']] = $criterions_group;
$nb_product = As4SearchEngine::getProductsSearched((int)$row['id_search'], As4SearchEngine::cleanArrayCriterion($selected_criterion), $selected_criteria_groups_type, null, null, true);
$removeCriterionGroup = ($nb_product == $result[$key]['total_products']);
}
}
if ($removeCriterionGroup) {
unset($result[$key]['criterions_groups'][$criterions_group_key]);
unset($result[$key]['criterions'][$criterions_group['id_criterion_group']]);
}
}
}
}
}
}
if (empty($result[$key]['id_seo']) && !empty($result[$key]['hide_empty_crit_group']) && empty($result[$key]['display_empty_criteria']) && (isset($result[$key]['total_products']) && $result[$key]['total_products'] == 0) && (($result[$key]['filter_by_emplacement'] && $result[$key]['selected_criterion'] == $result[$key]['selected_criterion_from_emplacement']) || (!$result[$key]['filter_by_emplacement'] && !self::_isFilledArray($result[$key]['selected_criterion'])))) {
unset($result[$key]);
}
}
$return[$cacheKey] = $result;
return $result;
}

Нужно заменить вот на это:
foreach ($result[$key]['criterions'][$criterions_group['id_criterion_group']] as $criterion_group) {
if (isset($criterion_group['nb_product']) && $criterion_group['nb_product'] == $result[$key]['total_products']) {
unset($result[$key]['criterions_groups'][$criterions_group_key]);
unset($result[$key]['criterions'][$criterions_group['id_criterion_group']]);
}
}
}
}
}
}
}
$return[$cacheKey] = $result;
return $result;
}

Верно я понял?
 
Если не сложно - не могли бы приложить свой вариант файла - несколько запутался?

Получается вот это:
foreach ($result[$key]['criterions'][$criterions_group['id_criterion_group']] as $criterion_group) {
$removeCriterionGroup = (isset($criterion_group['nb_product']) && $criterion_group['nb_product'] == $result[$key]['total_products']);
if (!$removeCriterionGroup && !isset($criterion_group['nb_product']) && $criterions_group['display_type'] == 5 && isset($criterion_group['min'], $criterion_group['max']) && $criterion_group['min'] == $criterion_group['max']) {
if ($criterions_group['criterion_group_type'] == 'price') {
$removeCriterionGroup = true;
} else {
$selected_criterion[(int)$criterions_group['id_criterion_group']] = array($criterion_group['min'] . '~' . $criterion_group['max']);
$selected_criteria_groups_type[(int)$criterions_group['id_criterion_group']] = $criterions_group;
$nb_product = As4SearchEngine::getProductsSearched((int)$row['id_search'], As4SearchEngine::cleanArrayCriterion($selected_criterion), $selected_criteria_groups_type, null, null, true);
$removeCriterionGroup = ($nb_product == $result[$key]['total_products']);
}
}
if ($removeCriterionGroup) {
unset($result[$key]['criterions_groups'][$criterions_group_key]);
unset($result[$key]['criterions'][$criterions_group['id_criterion_group']]);
}
}
}
}
}
}
if (empty($result[$key]['id_seo']) && !empty($result[$key]['hide_empty_crit_group']) && empty($result[$key]['display_empty_criteria']) && (isset($result[$key]['total_products']) && $result[$key]['total_products'] == 0) && (($result[$key]['filter_by_emplacement'] && $result[$key]['selected_criterion'] == $result[$key]['selected_criterion_from_emplacement']) || (!$result[$key]['filter_by_emplacement'] && !self::_isFilledArray($result[$key]['selected_criterion'])))) {
unset($result[$key]);
}
}
$return[$cacheKey] = $result;
return $result;
}

Нужно заменить вот на это:
foreach ($result[$key]['criterions'][$criterions_group['id_criterion_group']] as $criterion_group) {
if (isset($criterion_group['nb_product']) && $criterion_group['nb_product'] == $result[$key]['total_products']) {
unset($result[$key]['criterions_groups'][$criterions_group_key]);
unset($result[$key]['criterions'][$criterions_group['id_criterion_group']]);
}
}
}
}
}
}
}
$return[$cacheKey] = $result;
return $result;
}

Верно я понял?
 

Вложения

  • pm_advancedsearch4.rar
    34,1 KB · Просмотры: 50
Спасибо огромное - мил человек! :)

как раз на днях этот модуль положил на 10-ть минут сервер - что они там такого наворотили что так умудриться было положить 2-х ядерных сервер всего на 5 тысячах товаров...
Кстати возможно у Вас будут еще какие то рекомендации из личного опыта по использованию этого модуля?
 
Если кому-то поможет (особенно при переходе с 1.6 на 1.7.6.4), модуль 4.12.9 подвисает на большом количестве фильтров. Таблицы в БД совпадают по структуре. В файле pm_advancedsearch4.php в корне модуля необходимо с 3347 строки привести к такому виду (до конца функции:(

Добрый день. А вы что нибудь еще правили в этом файле? Можно смело заменять оригинал? И второй вопрос 0- ошибок после этой правки не замечено?
 
подскажите пожалуйста такой вопрос.
в 1.6 есть возможность указать css классы для ширины столбцов каждому блоку
upload_2020-5-14_21-48-1.png
в 1.7.6.4 в AS 4.12.9 такой возможности нет?
upload_2020-5-14_21-50-15.png

Может я что-то не включил?
Подскажите как решить этот вопрос
 
Спасибо огромное - мил человек! :)

как раз на днях этот модуль положил на 10-ть минут сервер - что они там такого наворотили что так умудриться было положить 2-х ядерных сервер всего на 5 тысячах товаров...
Кстати возможно у Вас будут еще какие то рекомендации из личного опыта по использованию этого модуля?
рекомендация одна - использовать по полной. без него престашоп - недомагазин.
 
Добрый день. А вы что нибудь еще правили в этом файле? Можно смело заменять оригинал? И второй вопрос 0- ошибок после этой правки не замечено?
не заметил.
удален зацикленный запрос удаления кеша. я так до конца и не понял зачем они это сделали. но в описании к 4.2.10 на сайте производителя как раз и есть строка в фиксах "Fix cache clearing (PrestaShop 1.7)".
я еще не запускал сайт, пока переношу другие модули с 1.6. Ошибок не заметил.
 
подскажите пожалуйста такой вопрос.
в 1.6 есть возможность указать css классы для ширины столбцов каждому блоку
Посмотреть вложение 109789
в 1.7.6.4 в AS 4.12.9 такой возможности нет?
Посмотреть вложение 109790

Может я что-то не включил?
Подскажите как решить этот вопрос
никогда не пользовался таким, это можно поправить в шаблонах в самом модуле. либо покопаться в коде модуля. второе думаю потяжелее будет.
 
никогда не пользовался таким, это можно поправить в шаблонах в самом модуле. либо покопаться в коде модуля. второе думаю потяжелее будет.
в коде конечно можно.
Но это не будет работать для каждого блока в строке.
 
Назад
Сверху