arber64

[Решено] Как вывести артикул опции возле опции?

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

arber64    3

У меня опенкарт 1.5.6.4 хочу вывести артикул опций в карточке товара возле опций.

В базе данных в таблице product_option_value есть колонка с артикулом optsku

Не получается вывести эти данные.

пробовал

<?php } ?><?php echo $product_option_value['optsku']; ?>

и просто

<?php echo $optsku; ?>

не выходит....

помогите пожалуйста.

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


Ссылка на сообщение
Поделиться на другие сайты
shalan    40

А в контроллере и модели прописано получение артикула?

Метод getProductOptions в модели /catalog/model/catalog/propuct.php возвращает optsku ?

Контролер  /catalog/controller/product/propuct.php обрабатывает optsku ?

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


Ссылка на сообщение
Поделиться на другие сайты
arber64    3

вот тут и не получается, не знаю как правильно
пробовал в контролере так

$this->data['text_optsku'] = $this->language->get('text_optsku');

/
/
$this->data['optsku'] = $product_info['optsku'];
/
/

и в модели

'sku'              => $query->row['optsku'],
/////////////////////////////////////////////////////////////
if (!empty($data['filter_name'])) {
				$sql .= " OR LCASE(p.optsku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
			}

как правильно это сделать?

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


Ссылка на сообщение
Поделиться на другие сайты
shalan    40

Как у вас выглядит getProductOptions? Напишите код метода полностью. Там есть код для получения optsku? 
 

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


Ссылка на сообщение
Поделиться на другие сайты
arber64    3
	    public function getProductOptions($product_id) {
        $product_option_data = array();

        $product_option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option po LEFT JOIN `" . DB_PREFIX . "option` o ON (po.option_id = o.option_id) LEFT JOIN " . DB_PREFIX . "option_description od ON (o.option_id = od.option_id) WHERE po.product_id = '" . (int)$product_id . "' AND od.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY o.sort_order");

        foreach ($product_option_query->rows as $product_option) {
            if ($product_option['type'] == 'select' || $product_option['type'] == 'radio' || $product_option['type'] == 'checkbox' || $product_option['type'] == 'image') {
                $product_option_value_data = array();

                $product_option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE pov.product_id = '" . (int)$product_id . "' AND pov.product_option_id = '" . (int)$product_option['product_option_id'] . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY ov.sort_order");

                foreach ($product_option_value_query->rows as $product_option_value) {
                    $product_option_value_data[] = array(
                        'product_option_value_id' => $product_option_value['product_option_value_id'],
                        'option_value_id'         => $product_option_value['option_value_id'],
                        'name'                    => $product_option_value['name'],
                        'image'                   => $product_option_value['image'],
                        'quantity'                => $product_option_value['quantity'],
                        'subtract'                => $product_option_value['subtract'],
                        'price'                   => $product_option_value['price'],
                        'price_prefix'            => $product_option_value['price_prefix'],
                        'weight'                  => $product_option_value['weight'],
                        'optsku'                  => $product_option_value['optsku'],
                        'weight_prefix'           => $product_option_value['weight_prefix']
                    );
                }

                $product_option_data[] = array(
                    'product_option_id' => $product_option['product_option_id'],
                    'option_id'         => $product_option['option_id'],
                    'name'              => $product_option['name'],
                    'type'              => $product_option['type'],
                    'option_value'      => $product_option_value_data,
                    'required'          => $product_option['required']
                );
            } else {
                $product_option_data[] = array(
                    'product_option_id' => $product_option['product_option_id'],
                    'option_id'         => $product_option['option_id'],
                    'name'              => $product_option['name'],
                    'type'              => $product_option['type'],
                    'option_value'      => $product_option['option_value'],
                    'required'          => $product_option['required']
                );                
            }
        }

        return $product_option_data;
    }

вот

Изменено пользователем arber64

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


Ссылка на сообщение
Поделиться на другие сайты
shalan    40

в контроллере есть такой код

foreach ($this->model_catalog_product->getProductOptions($this->request->get['product_id']) as $option) {
$product_option_value_data = array();

foreach ($option['product_option_value'] as $option_value) {
if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) {
if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) {
$price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false));
} else {
$price = false;
}

$product_option_value_data[] = array(
'product_option_value_id' => $option_value['product_option_value_id'],
'option_value_id' => $option_value['option_value_id'],
'name' => $option_value['name'],
'image' => $this->model_tool_image->resize($option_value['image'], 50, 50),
'price' => $price,
'price_prefix' => $option_value['price_prefix']
);
}
}

$data['options'][] = array(
'product_option_id' => $option['product_option_id'],
'product_option_value' => $product_option_value_data,
'option_id' => $option['option_id'],
'name' => $option['name'],
'type' => $option['type'],
'value' => $option['value'],
'required' => $option['required']
);
}

тут после 

'option_value_id'         => $option_value['option_value_id'],

добавьте 

'optsky'         => $option_value['optsku'],

теперь можно вывести optsky в шаблоне

<?php echo $option_value['optsku']; ?>

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


Ссылка на сообщение
Поделиться на другие сайты
arber64    3

Все сделал но не выводится.....? код в контролере чуть другой

			foreach ($this->model_catalog_product->getProductOptions($this->request->get['product_id']) as $option) { 
				if ($option['type'] == 'select' || $option['type'] == 'radio' || $option['type'] == 'checkbox' || $option['type'] == 'image') { 
					$option_value_data = array();

					foreach ($option['option_value'] as $option_value) {
						if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) {
							if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) {
								$price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax')));
							} else {
								$price = false;
							}

							$option_value_data[] = array(
								'product_option_value_id' => $option_value['product_option_value_id'],
								'option_value_id'         => $option_value['option_value_id'],
								'optsky'                  => $option_value['optsku'],
								'name'                    => $option_value['name'],
								'image'                   => $this->model_tool_image->resize($option_value['image'], 50, 50),
								'price'                   => $price,
								'price_prefix'            => $option_value['price_prefix']
							);
						}
					}

					$this->data['options'][] = array(
						'product_option_id' => $option['product_option_id'],
						'option_id'         => $option['option_id'],
						'name'              => $option['name'],
						'type'              => $option['type'],
						'option_value'      => $option_value_data,
						'required'          => $option['required']
					);					
				} elseif ($option['type'] == 'text' || $option['type'] == 'textarea' || $option['type'] == 'file' || $option['type'] == 'date' || $option['type'] == 'datetime' || $option['type'] == 'time') {
					$this->data['options'][] = array(
						'product_option_id' => $option['product_option_id'],
						'option_id'         => $option['option_id'],
						'name'              => $option['name'],
						'type'              => $option['type'],
						'option_value'      => $option['option_value'],
						'required'          => $option['required']
					);						
				}
			}
Изменено пользователем arber64

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


Ссылка на сообщение
Поделиться на другие сайты
shalan    40

в шаблоне выведите всё, что есть в опциях

<?php print_r($options); ?>

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


Ссылка на сообщение
Поделиться на другие сайты
arber64    3

Все супер вывелось опечатка была   'optsky' => $option_value['optsku'],

огромное спасибо!!!!!

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


Ссылка на сообщение
Поделиться на другие сайты
arber64    3

Еще попутный вопрос - Как сделать через ['token'] сделать эти артикулы видимыми только при входе в админку?

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


Ссылка на сообщение
Поделиться на другие сайты
arber64    3

Сам решил задачку может кому пригодится:

<?php if ($_SESSION['user_id']=1 && isset($_SESSION['token'])){echo $option_value['optsku'];} ?>

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


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

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

    • От cslov3
      Здравствуйте, помогите вместо этого вывести Артикул  http://prntscr.com/igx5k8
       
      версия 2,1
    • От iura93
      Добрый день.Возможно ли в опциях товара убрать скобки вокруг цены и поставить разделительный слэш между описанием и ценной в опциях.И по возможности чтобы цены были в одном столбце.Спасибо за ранее. robinet.md

    • От seregin

      360.00 руб
      Скачать/Купить дополнение


      Опции и атрибуты в категориях (с обновлением цены)
      Модуль отображает опции и атрибуты на всех стандартных модулях и страницах с товарами.

      Совместим с Opencart: 2.1.0.1 - 3.0.2.0
      Совместим с ocStore: 2.1.0.1 - 2.3.0.2.3
       
      Не совместим с другими модулями изменяющие функционал опций товара.

      Демонстрация

      Главная страница — Перейти на сайт
      Административная панель – Перейти на сайт

      Доступ в административную панель:

      Логин - demo
      Пароль — demo

      Добавлены возможности:
      Обновление цены при выборе количества и опции Установка акции для цены опции. Выбор количества Автоматический выбор первой опции в группе Артикул для каждой опции Добавлен знак равно (=, /, *) в префиксе опции Показ всплывающего изображения при наведении на опцию с изображением  
      Подключение опций в модулях:
      Акции Новые поступления Рекомендуемые Хиты продаж  
      Подключение опций на страницах:
      Категории Поиск Производители Акции Продукт  
      Для нестандартных модулей необходимо сделать дополнительную адаптацию. Стоимость адаптации от 100 — 250 рублей в зависимости от количества модулей.
      Для стандартных модулей поддержка бесплатная.
      Перед установкой сделайте резервную копию сайта.
      Добавил seregin Добавлено 15.08.2016 Категория Опции Системные требования Сайт разработчика http://seregin-pro.ru/ Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Не проверялось  
    • От seregin
      Модуль отображает опции и атрибуты на всех стандартных модулях и страницах с товарами.

      Совместим с Opencart: 2.1.0.1 - 3.0.2.0
      Совместим с ocStore: 2.1.0.1 - 2.3.0.2.3
       
      Не совместим с другими модулями изменяющие функционал опций товара.

      Демонстрация

      Главная страница — Перейти на сайт
      Административная панель – Перейти на сайт

      Доступ в административную панель:

      Логин - demo
      Пароль — demo

      Добавлены возможности:
      Обновление цены при выборе количества и опции Установка акции для цены опции. Выбор количества Автоматический выбор первой опции в группе Артикул для каждой опции Добавлен знак равно (=, /, *) в префиксе опции Показ всплывающего изображения при наведении на опцию с изображением  
      Подключение опций в модулях:
      Акции Новые поступления Рекомендуемые Хиты продаж  
      Подключение опций на страницах:
      Категории Поиск Производители Акции Продукт  
      Для нестандартных модулей необходимо сделать дополнительную адаптацию. Стоимость адаптации от 100 — 250 рублей в зависимости от количества модулей.
      Для стандартных модулей поддержка бесплатная.
      Перед установкой сделайте резервную копию сайта.
    • От 31H43
      Доброго времени суток!
      Может быть кто-то задавался таким вопросом о поиске данного модуля, либо может есть платный(бесплатный).
      Суть на скриншоте.
      Спасибо.

  • Последние посетители   0 пользователей онлайн

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