Opencart 2.1.0.2 переделать фильтр
200 UAHЗдравствуйте! Думаю для тех кто разбирается в Opencart труда не составит. Нужно переделать запрос в базу данных для фильтра. Сейчас он сумирует выборку, допустим по двум критериям. Напримар если задать размер 36 и цвет белый, фильтр выдаст все модели 36(любого цвета) и все белые (любого размера). А нужно чтоб выборка была перекрестная, те только 36 и белые модели. И на последок кнопка сброс фильтра.
catalog/controller/module/filter.php
<?php
class ControllerModuleFilter extends Controller {
public function index() {
if (isset($this->request->get['path'])) {
$parts = explode('_', (string)$this->request->get['path']);
} else {
$parts = array();
}
$category_id = end($parts);
$this->load->model('catalog/category');
$category_info = $this->model_catalog_category->getCategory($category_id);
if ($category_info) {
$this->load->language('module/filter');
$data['heading_title'] = $this->language->get('heading_title');
$data['button_filter'] = $this->language->get('button_filter');
$url = '';
if (isset($this->request->get['sort'])) {
$url .= '&sort=' . $this->request->get['sort'];
}
if (isset($this->request->get['order'])) {
$url .= '&order=' . $this->request->get['order'];
}
if (isset($this->request->get['limit'])) {
$url .= '&limit=' . $this->request->get['limit'];
}
$data['action'] = str_replace('&', '&', $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url));
if (isset($this->request->get['filter'])) {
$data['filter_category'] = explode(',', $this->request->get['filter']);
} else {
$data['filter_category'] = array();
}
$this->load->model('catalog/product');
$data['filter_groups'] = array();
$filter_groups = $this->model_catalog_category->getCategoryFilters($category_id);
if ($filter_groups) {
foreach ($filter_groups as $filter_group) {
$childen_data = array();
foreach ($filter_group['filter'] as $filter) {
$filter_data = array(
'filter_category_id' => $category_id,
'filter_filter' => $filter['filter_id']
);
$childen_data[] = array(
'filter_id' => $filter['filter_id'],
'name' => $filter['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : '')
);
}
$data['filter_groups'][] = array(
'filter_group_id' => $filter_group['filter_group_id'],
'name' => $filter_group['name'],
'filter' => $childen_data
);
}
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/filter.tpl')) {
return $this->load->view($this->config->get('config_template') . '/template/module/filter.tpl', $data);
} else {
return $this->load->view('default/template/module/filter.tpl', $data);
}
}
}
}
}
вывод в шаблон:
<div class="box-category">
<div class="strip-line"></div>
<div class="box-content">
<ul class="box-filter" style="padding:10px 0;">
<?php foreach ($filter_groups as $filter_group) { ?>
<select style="border: 1px #bababa solid;width: 100%;background-color: white;
">
<option><?php echo $filter_group['name']; ?></option>
<?php foreach ($filter_group['filter'] as $filter) { ?>
<?php if (in_array($filter['filter_id'], $filter_category)) { ?>
<option value="<?php echo $filter['filter_id']; ?>" id="filter<?php echo $filter['filter_id']; ?>" selected>
<?php echo $filter['name']; ?>
</option>
<?php } else { ?>
<option value="<?php echo $filter['filter_id']; ?>" id="filter<?php echo $filter['filter_id']; ?>">
<?php echo $filter['name']; ?>
</option>
<?php } ?>
<?php } ?>
</select>
</li>
<?php } ?>
</ul>
<a id="button-filter" class="button"><?php echo $button_filter; ?></a>
</div>
</div>
<script type="text/javascript"><!--
$('#button-filter').bind('click', function() {
filter = [];
$('.box-filter select option:selected').each(function(element) {
filter.push(this.value);
});
location = '<?php echo $action; ?>&filter=' + filter.join(',');
});
//--></script>
Отзыв заказчика о сотрудничестве с Сергеем К.
Opencart 2.1.0.2 переделать фильтрВсе очень быстро и работает!
-
Ну зачем же код в описании приводить
(и кода модели еще не хватает (сарказм))
-
Добрый вечер. Речь идет о стандартном фильтре опенкарта? Просто в других фильтрах это вроде уже реализовано... Если заинтересует, то можем обсудить установку другого фильтра(если сейчас стоит стандартный).
-
незрозуміло для чого Вам виконавець як у Вас все вже є?
-
Актуальные фриланс-проекты в категории PHP
Интеграция GoPosПривет, делал кто нибудь интеграцию GoPos с кастомным сайтом для ресторана в Польше? Нужна помощь, у них очень скудная документация, есть только swagger и тот без описаний https://app.gopos.io/doc/swagger-ui/index.html Суть такая, использовали от них сайт для онлайн заказов,… PHP, Веб-программирование ∙ 13 часов 4 минуты назад ∙ 17 ставок |
Прописать мета данные АЛЬТ при помощи ИИСайт на Laravel , на сайте много изображений, для которых нужно прописать корректные по семантики и релевантные для странице АЛЬТ описание изображения в автоматическом режиме, с возможностью проверки AI и машинное обучение, PHP ∙ 1 день 10 часов назад ∙ 32 ставки |
Нужен разработчик для завершения и интеграции проекта по автоматическому сбору и обработке данных
700 UAH
Основная часть парсера уже реализована. Парсер работает на Windows-среде через Microsoft Edge: сайт имеет антибот-защиту, поэтому сбор данных выполняется не прямыми HTTP-запросами, а через живую браузерную сессию. Скрипты управляют открытой вкладкой Edge через Chrome DevTools… PHP, Веб-программирование ∙ 1 день 16 часов назад ∙ 24 ставки |
Обновление плагинов и тем WP сайт putevka.uz«Нужно провести технический аудит WordPress-сайта, проверить актуальность, безопасность и совместимость установленных плагинов и темы. По результатам — предложить легальные варианты обновления, замены устаревших решений или перехода на официально доступные аналоги. Платные… HTML и CSS верстка, PHP ∙ 1 день 18 часов назад ∙ 39 ставок |
Интеграция блока "Где смотреть" (Laravel / Livewire)Необходимо реализовать интеграцию внешней стриминговой платформы для сайта о фильмах и сериалах на Laravel / Livewire. Что нужно сделать: Реализовать импорт внешнего каталога контента, который обновляется 1 раз в день. Выполнять матчинг контента по IMDb ID и/или TMDB ID. Если… PHP, Веб-программирование ∙ 2 дня 9 часов назад ∙ 40 ставок |