-
Публікації
1 508 -
З нами
-
Відвідування
Тип публікації
Профілі
Форум
Маркетплейс
Статті
FAQ
Наші новини
Магазин
Блоги
module__dplus_manager
Повідомлення, опубліковані користувачем SooR
-
-
simulacrum, вы про калькуляцию цены при особых параметрах?
-
А в редакте товара во вкладке "Опции фильтра" вы указали эти значения?
- 1
-
simulacrum, может не присвоены значения к товарам?
-
simulacrum, А это не?
-
Boob, система -> пользователи -> группы пользователей -> Главный администратор [Изменить], ставим галки напротив catalog/filter и сохраняем
-
LiS, сравните код с вашим в category.php
if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } $this->data['sorts'] = array();
И стоит ли переменная $url во всех элементах массива sorts?
Должно быть так:
if (isset($this->request->get['filter'])) {
$url .= '&filter=' . $this->request->get['filter'];
}
$this->data['sorts'] = array();
$this->data['sorts'][] = array('text' => $this->language->get('text_name_asc'), 'value' => 'pd.name-ASC', 'href' => $this->model_tool_seo_url->rewrite($this->url->http('product/category&path=' . $this->request->get['path'] . '&sort=pd.name&order=ASC' . $url)));
$this->data['sorts'][] = array('text' => $this->language->get('text_name_desc'), 'value' => 'pd.name-DESC', 'href' => $this->model_tool_seo_url->rewrite($this->url->http('product/category&path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url)));
$this->data['sorts'][] = array('text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->model_tool_seo_url->rewrite($this->url->http('product/category&path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url)));
$this->data['sorts'][] = array('text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->model_tool_seo_url->rewrite($this->url->http('product/category&path=' . $this->request->get['path'] . '&sort=p.price&order=DESC' . $url)));
$this->data['sorts'][] = array('text' => $this->language->get('text_rating_desc'), 'value' => 'rating-DESC', 'href' => $this->model_tool_seo_url->rewrite($this->url->http('product/category&path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url)));
$this->data['sorts'][] = array('text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->model_tool_seo_url->rewrite($this->url->http('product/category&path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url)));
Внимание, состав элементов массива sorts в вашей версии OpenCart может отличаться! Так что не копируйте данный код, а просто исправьте при необходимости свой.
-
LiS, я учел это и по умолчанию все сортирует. Покажите ваш магазин.
-
Возможность есть. Скоро напишу как выводить опции и значения для категории и для отдельного товара.
-
snastik, для текста в grid_mode в css прописать свойство display:none;
.grid .short-descr{display:none;}
-
hotep, уж лучше мужчин и женщин разбить на категории, или под видом брендов. Или же делать зависимые опции (от выбранных значений), но это отдельная тема.
Trance around the world) скиньте полный код ошибки или страницу с ошибкой. Я написал о полной совместимости с версией, указанной по ссылке.
-
Идентичны, меняется только вид.
Можно вытащить первые n слов из описания и управлять ним с CSS.
Вот обрезка по словам:
private function cropTextByWord($text, $counttext = 10, $sep = ' ') { // исходный текст, сколько слов выводить, какой разделитель для слов $words = split($sep, $text); if ( count($words) > $counttext ) $text = join($sep, array_slice($words, 0, $counttext)); return $text; }
-
Да просто, эту строчку
$this->data['view_mode'] = (isset($this->session->data['view_mode']) ? $this->session->data['view_mode'] : 'grid');
Меняем на
$this->data['view_mode'] = (isset($this->session->data['view_mode']) ? $this->session->data['view_mode'] : 'list');
Найди 1 отличие)
- 1
-
Нисколько не против, всё на благо развития.
Другое дело, что надо добавить еще диапазон по цене, поле для выбора где размещать опцию (везде, только в фильтре, только в характеристиках), ну и еще пару мелочей... есть идеи.
-
Добавьте в контроллер product.php (метод getList) строки вида
$this->data['button_enable'] = 'Включено';
$this->data['button_disable'] = 'Выключено';
-
UnderStorm, ну если header.tpl подгрузился, значит выбран ваш шаблон.
Или вы не изменяли остальные .tpl, или скрипт их не может найти, подгружая с папки default.
-
Как вы смотрите на то, чтобы сделать редактирование языковых файлов с админки?
-
Какая версия двига?
-
Попробуйте...
PS>> уже залил пива, возможно где-то косяк.
Основные методы для фильтра в категории:
public function getProductsByCategoryId($category_id, $filter = 0, $sort = 'p.sort_order', $order = 'ASC', $start = 0, $limit = 20) { $sql = "SELECT *, pd.name AS name, p.image, m.name AS manufacturer, ss.name AS stock, (SELECT AVG(r.rating) FROM " . DB_PREFIX . "review r WHERE p.product_id = r.product_id GROUP BY r.product_id) AS rating FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "stock_status ss ON (p.stock_status_id = ss.stock_status_id) LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p2c.category_id = '" . (int)$category_id . "'"; // Start filter if ($filter) { foreach (explode(';', $filter) as $option) { $values = explode('=', $option); $data = array(); foreach (explode(',', $values[1]) as $value_id) { $query = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "product_to_value WHERE value_id='" . (int)$value_id . "'"); if ($query->rows) { foreach($query->rows as $row) { $data[] = $row['product_id']; } } else { unset($data); } } if (!empty($data)) { $sql .= " AND p.product_id IN (" . implode(",", $data) . ")"; } } } // End filter $sql .= " GROUP BY p.product_id"; $sort_data = array( 'pd.name', 'p.sort_order', 'special', 'rating', 'p.price', 'p.model' ); if (in_array($sort, $sort_data)) { if ($sort == 'pd.name' || $sort == 'p.model') { $sql .= " ORDER BY LCASE(" . $sort . ")"; } else { $sql .= " ORDER BY " . $sort; } } else { $sql .= " ORDER BY p.sort_order"; } if ($order == 'DESC') { $sql .= " DESC"; } else { $sql .= " ASC"; } if ($start < 0) { $start = 0; } $sql .= " LIMIT " . (int)$start . "," . (int)$limit; $query = $this->db->query($sql); return $query->rows; } public function getTotalProductsByCategoryId($category_id = 0, $filter = 0) { $sql = "SELECT COUNT(DISTINCT p.product_id) AS total FROM " . DB_PREFIX . "product_to_category p2c LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_value p2v ON (p.product_id = p2v.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND p2c.category_id = '" . (int)$category_id . "'"; // Start filter if ($filter) { foreach (explode(';', $filter) as $option) { $values = explode('=', $option); $data = array(); foreach (explode(',', $values[1]) as $value_id) { $query = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "product_to_value WHERE value_id='" . (int)$value_id . "'"); if ($query->rows) { foreach($query->rows as $row) { $data[] = $row['product_id']; } } else { unset($data); } } if (!empty($data)) { $sql .= " AND p.product_id IN (" . implode(",", $data) . ")"; } else { return 0; // запрос на строке 88 ничего не вернул, а общее количество в категории нам не интересно } } } // End filter $query = $this->db->query($sql); return $query->row['total']; }
-
Дайте оригинальный файл.
-
Добавить описание и будет ВО модуль.
-
Доступ к ФТП - хранятся файлы сайта и сам сайт
Доступ к базе данных - phpMyAdmin или панель хостинга
Доступ к хостингу и его конфигурации
Доступ к домену и его конфигурации
-
Для избежания этой ошибки, уже всем скачавшим советую перекачать архив, там исправлено.
-
afwollis, уже разобрались, т.к. делался update модуля, то многие option_id в product_to_value остались в нулевом значении, что недопустимо при выборке с данным запросом
if ($filter) { $options = array(); $values = array(); foreach (explode(';', $filter) as $option) { $parts = explode('=', $option); foreach (explode(',', $parts[1]) as $value_id) { $values[] = (int)$value_id; } $options[] = (int)$parts[0]; } $sql .= " AND p2v.value_id IN (" . implode(",", $values) . ") AND p2v.option_id IN (" . implode(',', $options) . ")"; }
Поэтому, чтобы не обновлять уже большое количество товаров, поставили другой способ выборки
if ($filter) { foreach (explode(';', $filter) as $option) { $values = explode('=', $option); $data = array(); foreach (explode(',', $values[1]) as $value_id) { $query = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "product_to_value WHERE value_id='" . (int)$value_id . "'"); if ($query->rows) { foreach($query->rows as $row) { $data[] = $row['product_id']; } } else { unset($data); } } if (!empty($data)) { $sql .= " AND p.product_id IN (" . implode(",", $data) . ")"; } } }
-
И не найдете, если хоть одна из таблиц фильтра уже есть.кнопочки "Установить таблицы". не нашел :)
[Модуль] Фильтр товаров в категории 2.0 / 3.0
в Вывод товара, изображения, фильтры вывода
Опубліковано: