Перейти к содержанию

Рекомендуемые сообщения

Прошу помощи, решил вывести минимальную цену не в категориях а через модуль: 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);
	}
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

  • Похожий контент

    • От VladimirV
      Доброго времени суток. Хочу вывести минимальную цену в категорию, что то делаю не так, прошу вашей помощи.
      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". Понимаю что делаю не правильно, но знаний не хватает, понять где и что делаю не так. Прошу указать что нет так делаю, заранее спасибо.
    • От 96db
      Доброго времени суток!
       
      Подскажите пожалуйста, как в Opencart 2.0.3.1 возле названий самых последних дочерних категорий(внутри которых идут уже сами товары, а не другие категории) вытянуть наименьшую цену товара?
      Т.е. категория, к примеру "Телевизоры", а рядом вывести "от: 5000 тугриков".

      В каких файлах(контроллерах, моделях) какой код надо дописать и что в итоге надо будет после добавить в category.tpl для вывода этой минимальной цены?
    • От 96db
      Доброго времени суток!
       
      Подскажите пожалуйста, как в Opencart 2.0.3.1 возле названий самых последних дочерних категорий(внутри которых идут уже сами товары, а не другие категории) вытянуть наименьшую цену товара?
      Т.е. категория, к примеру "Телевизоры", а рядом вывести "от: 5000 тугриков".

      В каких файлах(контроллерах, моделях) какой код надо дописать и что в итоге надо будет после добавить в category.tpl для вывода этой минимальной цены?
    • От seolink
      Вот такая ошибка вылазит когда открываю товар который с 0вой ценой снят снят с производства (статус) и количество на складе - 0.
       
      В других товарах по этим же параметрам ошибок не замечал.
      Подскажите, уважаемые, в чем может быть проблема?
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.