VladimirV

Новичок
  • Публикаций

    7
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о VladimirV

  • Звание
    Новичок

Посетители профиля

79 просмотров профиля
  1. Здравствуйте решил добавить к фильтру возможность присваивать каждому элементу фильтра, изображение. ocStore-2.3.0.2.2 тема дефолтная, фильтр штатный В таблице бд добавил колонку image. скриншот прилагаю. Правил -admin/model/catalog/filter в теле функции addFilter добавил: if (isset($data['image'])}{ .... <?php class ModelCatalogFilter extends Model { public function addFilter($data) { $this->db->query("INSERT INTO `" . DB_PREFIX . "filter_group` SET sort_order = '" . (int)$data['sort_order'] . "'"); $filter_group_id = $this->db->getLastId(); foreach ($data['filter_group_description'] as $language_id => $value) { $this->db->query("INSERT INTO " . DB_PREFIX . "filter_group_description SET filter_group_id = '" . (int)$filter_group_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "'"); } if (isset($data['filter'])) { foreach ($data['filter'] as $filter) { $this->db->query("INSERT INTO " . DB_PREFIX . "filter SET filter_group_id = '" . (int)$filter_group_id . "', sort_order = '" . (int)$filter['sort_order'] . "', image = '" . (int)$filter['sort_order']. "'"); $filter_id = $this->db->getLastId(); if (isset($data['image'])) { $this->db->query("UPDATE" . DB_PREFIX . "filter SET image = '" . $this->db->escape($data['image']) . "' WHERE filter_id = '" . (int)$filter_id . "'"); } foreach ($filter['filter_description'] as $language_id => $filter_description) { $this->db->query("INSERT INTO " . DB_PREFIX . "filter_description SET filter_id = '" . (int)$filter_id . "', language_id = '" . (int)$language_id . "', filter_group_id = '" . (int)$filter_group_id . "', name = '" . $this->db->escape($filter_description['name']) . "'"); } } } return $filter_group_id; } в admin/controller/catalog/filter, в теле функции getForm: if (isset($this->request->get['filter_id']) && ($this->request->server['REQUEST_METHOD'] != 'POST')) { $filter_info = $this->model_catalog_filter->getFilter($this->request->get['filter_id']); } if (isset($this->request->post['image'])) { $data['image'] = $this->request->post['image']; } elseif (!empty($filter_info)) { $data['image'] = $filter_info['image']; } else { $data['image'] = ''; } $this->load->model('tool/image'); if (isset($this->request->post['image']) && is_file(DIR_IMAGE . $this->request->post['image'])) { $data['thumb'] = $this->model_tool_image->resize($this->request->post['image'], 100, 100); } elseif (!empty($filter_info) && is_file(DIR_IMAGE . $filter_info['image'])) { $data['thumb'] = $this->model_tool_image->resize($filter_info['image'], 100, 100); } else { $data['thumb'] = $this->model_tool_image->resize('no_image.png', 100, 100); } $data['placeholder'] = $this->model_tool_image->resize('no_image.png', 100, 100); в шаблоне: <a href="" id="thumb-image" data-toggle="image" class="img-thumbnail"> <img src="<?php echo $thumb; ?>" alt="img" title="" data-placeholder="<?php echo $placeholder; ?>" /> </a> <input type="hidden" name="image" value="<?php echo $image; ?>" id="input-image" /> В итоге изображение загружается в каталог image, но адрес не сохраняется в созданной мной колонке таблицы ну и соответственно не выводиться в админке, что я делаю не так? подскажите, очень хочется разобраться, информации очень мало на эту тему, заранее большое спасибо!
  2. Здравствуйте, прошу помощи в решение проблемы, пытаюсь адаптировать модуль ProScroller 2 2.0.0 под ocStore-2.3.0.2.2 Установил плагин, и в тех файлах где указывался путь model/module поменял на model/extension/module В результате в админ панели все хорошо а вот на странице сайта: Warning: Invalid argument supplied for foreach() in D:\OSPanel\domains\opencart\system\engine\loader.php on line 53Notice: Undefined property: Proxy::getProducts in D:\OSPanel\domains\opencart\catalog\controller\extension\module\proscroller.php on line 124
  3. Прошу помощи, решил вывести минимальную цену не в категориях а через модуль: ksl_OC_category, подскажите что нужно дописать в контроллере. Сейчас выводит: Notice: Undefined variable: category_id in /home/ih506839/public_html/catalog/controller/extension/module/categoryKsl.php on line 112 ocStore 2.3.0.2.2 в catalog>model>catalog>product добавил: public function getMinPriceFromCategory($category_id) { $query = $this->db->query("SELECT LEAST(p.price,IFNULL(ps.price, p.price)) min_price FROM `" . DB_PREFIX . "category` c RIGHT JOIN `" . DB_PREFIX . "product_to_category` p2c ON p2c.category_id = c.category_id RIGHT JOIN `" . DB_PREFIX . "product` p ON p2c.product_id = p.product_id LEFT JOIN `" . DB_PREFIX . "product_special` ps ON p.product_id = ps.product_id AND ps.date_end >= NOW() AND ps.date_start <= NOW() WHERE c.category_id = " . (int)$category_id . " AND p.status = 1 AND c.status = 1 ORDER BY min_price LIMIT 0,1 "); if ($query->num_rows) { return $query->row['min_price']; } else { return 0; } } в шаблоне category.tpl: <?php echo $min_price; ?> Вот сам контроллер: <?php class ControllerExtensionModuleCategoryKsl extends Controller { public function index() { //Определяем текущую категорию (path из GET запроса) if (isset($this->request->get['path'])) { $parts = explode('_', (string)$this->request->get['path']); } else { $parts = array(); } if (isset($parts[0])) { $data['category_id'] = $parts[0]; //родительская } else { $data['category_id'] = 0; } if (isset($parts[1])) { $data['child_id'] = $parts[1]; //дочерняя } else { $data['child_id'] = 0; } if($data['child_id']) $data['category_id'] = null; $this->load->model('catalog/category'); $this->load->model('catalog/product'); $data['categories'] = array(); $categories = $this->model_catalog_category->getCategories(0); //Загружаем модель которая работает с таблицей настроек модулей (oc_setting) $this->load->model('setting/setting'); //Получаем значение - показывать ли изображения $category_images = $this->model_setting_setting->getSetting('categoryKsl')['categoryKsl_images']; //Получаем значение - размеры изображений $category_images_height = $this->model_setting_setting->getSetting('categoryKsl')['categoryKsl_img_height']; $category_images_weight = $this->model_setting_setting->getSetting('categoryKsl')['categoryKsl_img_weight']; //Для дочерних категорий $category_children = $this->model_setting_setting->getSetting('categoryKsl')['categoryKsl_children']; $category_child_images = $this->model_setting_setting->getSetting('categoryKsl')['categoryKsl_child_images']; $category_child_images_height = $this->model_setting_setting->getSetting('categoryKsl')['categoryKsl_child_img_height']; $category_child_images_weight = $this->model_setting_setting->getSetting('categoryKsl')['categoryKsl_child_img_weight']; //Массив категорий, которые не нужно выводить if(isset($this->model_setting_setting->getSetting('categoryKsl')['categoryKsl_checkbox'])){ $categoryKsl_checkbox = $this->model_setting_setting->getSetting('categoryKsl')['categoryKsl_checkbox']; } else $categoryKsl_checkbox = null; foreach ($categories as $category) { //Пропускаем, если в настройках указано отключить данную категорию if (isset($categoryKsl_checkbox[$category['category_id']])) { continue; } $children_data = array(); if ($category_children) { $children = $this->model_catalog_category->getCategories($category['category_id']); foreach($children as $child) { //Пропускаем, если в настройках указано отключить данную категорию if (isset($categoryKsl_checkbox[$child['category_id']])) { continue; } $filter_data = array('filter_category_id' => $child['category_id'], 'filter_sub_category' => true); //Работа с изображениями if ($category_child_images && is_file(DIR_IMAGE . $child['image'])) { $this->load->model('tool/image'); //метод создает изображения указанного размера $image = $this->model_tool_image->resize($child['image'], $category_child_images_weight, $category_child_images_height); } else { $image = ''; } $children_data[] = array( 'category_id' => $child['category_id'], 'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']), 'image' => $image, ); } } $filter_data = array( 'filter_category_id' => $category['category_id'], 'filter_sub_category' => true ); //Работа с изображениями if ($category_images && is_file(DIR_IMAGE . $category['image'])) { $this->load->model('tool/image'); //метод создает изображения указанного размера $image = $this->model_tool_image->resize($category['image'], $category_images_weight, $category_images_height); } else { $image = ''; } $data['categories'][] = array( 'category_id' => $category['category_id'], 'name' => $category['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'children' => $children_data, 'href' => $this->url->link('product/category', 'path=' . $category['category_id']), 'image' => $image, ); } $data['min_price'] = $this->model_catalog_product->getMinPriceFromCategory($category_id); //Добавляем свои стили $this->document->addStyle('catalog/view/theme/default/stylesheet/categoryKSL.css'); return $this->load->view('extension/module/categoryKsl', $data); } }
  4. Снова прошу вашей помощи, решил вывести мин. цену не в категориях а через модуль: ksl_OC_category, подскажите что нужно дописать в контроллере. Сейчас выводит: Notice: Undefined variable: category_id in /home/ih506839/public_html/catalog/controller/extension/module/categoryKsl.php on line 112 Вот сам контроллер: <?php class ControllerExtensionModuleCategoryKsl extends Controller { public function index() { //Определяем текущую категорию (path из GET запроса) if (isset($this->request->get['path'])) { $parts = explode('_', (string)$this->request->get['path']); } else { $parts = array(); } if (isset($parts[0])) { $data['category_id'] = $parts[0]; //родительская } else { $data['category_id'] = 0; } if (isset($parts[1])) { $data['child_id'] = $parts[1]; //дочерняя } else { $data['child_id'] = 0; } if($data['child_id']) $data['category_id'] = null; $this->load->model('catalog/category'); $this->load->model('catalog/product'); $data['categories'] = array(); $categories = $this->model_catalog_category->getCategories(0); //Загружаем модель которая работает с таблицей настроек модулей (oc_setting) $this->load->model('setting/setting'); //Получаем значение - показывать ли изображения $category_images = $this->model_setting_setting->getSetting('categoryKsl')['categoryKsl_images']; //Получаем значение - размеры изображений $category_images_height = $this->model_setting_setting->getSetting('categoryKsl')['categoryKsl_img_height']; $category_images_weight = $this->model_setting_setting->getSetting('categoryKsl')['categoryKsl_img_weight']; //Для дочерних категорий $category_children = $this->model_setting_setting->getSetting('categoryKsl')['categoryKsl_children']; $category_child_images = $this->model_setting_setting->getSetting('categoryKsl')['categoryKsl_child_images']; $category_child_images_height = $this->model_setting_setting->getSetting('categoryKsl')['categoryKsl_child_img_height']; $category_child_images_weight = $this->model_setting_setting->getSetting('categoryKsl')['categoryKsl_child_img_weight']; //Массив категорий, которые не нужно выводить if(isset($this->model_setting_setting->getSetting('categoryKsl')['categoryKsl_checkbox'])){ $categoryKsl_checkbox = $this->model_setting_setting->getSetting('categoryKsl')['categoryKsl_checkbox']; } else $categoryKsl_checkbox = null; foreach ($categories as $category) { //Пропускаем, если в настройках указано отключить данную категорию if (isset($categoryKsl_checkbox[$category['category_id']])) { continue; } $children_data = array(); if ($category_children) { $children = $this->model_catalog_category->getCategories($category['category_id']); foreach($children as $child) { //Пропускаем, если в настройках указано отключить данную категорию if (isset($categoryKsl_checkbox[$child['category_id']])) { continue; } $filter_data = array('filter_category_id' => $child['category_id'], 'filter_sub_category' => true); //Работа с изображениями if ($category_child_images && is_file(DIR_IMAGE . $child['image'])) { $this->load->model('tool/image'); //метод создает изображения указанного размера $image = $this->model_tool_image->resize($child['image'], $category_child_images_weight, $category_child_images_height); } else { $image = ''; } $children_data[] = array( 'category_id' => $child['category_id'], 'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']), 'image' => $image, ); } } $filter_data = array( 'filter_category_id' => $category['category_id'], 'filter_sub_category' => true ); //Работа с изображениями if ($category_images && is_file(DIR_IMAGE . $category['image'])) { $this->load->model('tool/image'); //метод создает изображения указанного размера $image = $this->model_tool_image->resize($category['image'], $category_images_weight, $category_images_height); } else { $image = ''; } $data['categories'][] = array( 'category_id' => $category['category_id'], 'name' => $category['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'children' => $children_data, 'href' => $this->url->link('product/category', 'path=' . $category['category_id']), 'image' => $image, ); } $data['min_price'] = $this->model_catalog_product->getMinPriceFromCategory($category_id); //Добавляем свои стили $this->document->addStyle('catalog/view/theme/default/stylesheet/categoryKSL.css'); return $this->load->view('extension/module/categoryKsl', $data); } }
  5. Огромное вам спасибо, ошибка действительно была в контроллере
  6. Доброго времени суток. Хочу вывести минимальную цену в категорию, что то делаю не так, прошу вашей помощи. ocStore 2.3.0.2.2 в catalog>model>catalog>product добавил: public function getMinPriceFromCategory($category_id) { $query = $this->db->query("SELECT LEAST(p.price,IFNULL(ps.price, p.price)) min_price FROM `" . DB_PREFIX . "category` c RIGHT JOIN `" . DB_PREFIX . "product_to_category` p2c ON p2c.category_id = c.category_id RIGHT JOIN `" . DB_PREFIX . "product` p ON p2c.product_id = p.product_id LEFT JOIN `" . DB_PREFIX . "product_special` ps ON p.product_id = ps.product_id AND ps.date_end >= NOW() AND ps.date_start <= NOW() WHERE c.category_id = " . (int)$category_id . " AND p.status = 1 AND c.status = 1 ORDER BY min_price LIMIT 0,1 "); if ($query->num_rows) { return $query->row['min_price']; } else { return 0; } } в cotroller>product>category, после $data['categories'][] = array( добавил: 'min_price' => $this->model_catalog_product->getMinPriceFromCategory($result['category_id']), в шаблоне category.tpl: <?php echo $min_price; ?> Итог: "Undefined variable: min_price". Понимаю что делаю не правильно, но знаний не хватает, понять где и что делаю не так. Прошу указать что нет так делаю, заранее спасибо.