Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Вывести цену определенного продукта в карточке товара


Recommended Posts

Помогите пожалуйста вывести цену определенного продукта в карточке товара.


С ссылкой разобрался, а название товара выводит без функции в controller - <?php echo $product['name']; ?>
В controller
$product['href'] = $this->url->link('product/product', 'product_id=' . $product['product_id']);    

Пишу в product.tpl <?php echo $product['price']; ?>
Выкидывает вот такую ошибку Notice: Undefined index: price in /home/..../template/product/product.tpl on line 661

Если писать <?php echo $price; ?> - то выводить цену текущего товара в карточке товара, а не цену определенного товара.
Пробовал писать в controller разные функции, не помогает. 

Прошу помочь. Заранее спасибо!

Змінено користувачем maxway777
Надіслати
Поділитися на інших сайтах


ни чего не понятно но очень интересно.

возьмите за основу встроенный модуль "рекомендуемые в карточке товара" и на его основе сделайте то что хотите. 

Надіслати
Поділитися на інших сайтах


4 хвилини назад, Dimasscus сказав:

ни чего не понятно но очень интересно.

возьмите за основу встроенный модуль "рекомендуемые в карточке товара" и на его основе сделайте то что хотите. 

Грубо говоря, что нужно написать в catalog/controller/product/product.php чтобы вывести цену какого то товара.

Если писать в product.tpl функцию <?php echo $product['price']; ?>
Выкидывает ошибку, что нет чего-то в catalog/controller/product/product.php

Ошибка Notice: Undefined index: price in /home/..../template/product/product.tpl on line 661

Змінено користувачем maxway777
Надіслати
Поділитися на інших сайтах


2 минуты назад, maxway777 сказал:

Грубо говоря, что нужно написать в catalog/controller/product/product.php чтобы вывести цену какого то товара.

Если писать в product.tpl функцию <?php echo $product['price']; ?>

какого то это какого? по какому принципу? в ручную как то указываете или что? непонятно ж ни чего.

 чтобы получить переменную <?php echo $product['price']; ?> в каком то определенном месте нужно сначала разобрать массив товаров и выборкой получить искомое

Надіслати
Поділитися на інших сайтах


4 минуты назад, maxway777 сказал:

Грубо говоря, что нужно написать в catalog/controller/product/product.php чтобы вывести цену какого то товара.

Если писать в product.tpl функцию <?php echo $product['price']; ?>

https://clip2net.com/s/49yldHb вот так выводятся рекомендуемые. отсюда и пляшите

Надіслати
Поділитися на інших сайтах


Подробнее
Есть модуль "Варианты товаров" в самом модуле выводить только картинку, название и title товара https://prnt.sc/v5dk69

Как вывести здесь еще цену товара

Я так понимаю в модификаторе вот сюда нужно что то добавить:
<file path="catalog/controller/product/product.php">
      <operation>
         <search position="replace"><![CDATA[$data['column_left'] = $this->load->controller('common/column_left');]]></search>
         <add><![CDATA[//product variant
            $data['variantproducts'] = $this->model_catalog_product->getProductVariantproducts($this->request->get['product_id']);

            foreach ($data['variantproducts'] as $k => $variantproduct) {
                if ($variantproduct['products']) {
                    foreach ($variantproduct['products'] as $j => $product) {
                        if ($product['image']) {
                            $image = $this->model_tool_image->resize($product['image'], 60, 60);
                        } else {
                            $image = false;
                        }
                        $product['image'] = $image;
                        $product['href'] = $this->url->link('product/product', 'product_id=' . $product['product_id']);    
                        $data['variantproducts'][$k]['products'][$j] = $product;
                         вот сюда........

И сюда 
<file path="catalog/view/theme/*/template/product/product.tpl">
      <operation>
         <search position="replace"><![CDATA[<div class="well well-sm product-info product_informationss">]]></search>
         <add position="before"><![CDATA[
      <?php if ($variantproducts) { ?>      
      <?php foreach ($variantproducts as $variantproduct) { ?>
      <?php if (!empty($variantproduct['products'])) { ?>
      <h3 class="vp_title"><?php echo $variantproduct['title']; ?>: </h3>    
      </br>    
      <div class="vbox">
      <?php foreach ($variantproduct['products'] as $product) { ?>
      <div class="vblock">
      <?php if ($product['image']) { ?>
      <div><a href="<?php echo $product['href']; ?>" id="<?php echo $product['product_id']; ?>" data-toggle="tooltip"  title="<?php echo $product['name']; ?>"> <img src="<?php echo $product['image']; ?>" alt="<?php echo $product['name']; ?>" /><?php echo $product['name']; ?></a>

Добавить <?php echo $product['price']; ?>

Вот так более подробно, чтобы понятнее было.

Змінено користувачем maxway777
Надіслати
Поділитися на інших сайтах


3 минуты назад, maxway777 сказал:

Подробнее
Есть модуль "Варианты товаров" в самом модуле выводить только картинку и title товара https://prnt.sc/v5dk69

Как вывести здесь еще цену товара

Я так понимаю в модификаторе вот сюда нужно что то добавить:
<file path="catalog/controller/product/product.php">
      <operation>
         <search position="replace"><![CDATA[$data['column_left'] = $this->load->controller('common/column_left');]]></search>
         <add><![CDATA[//product variant
            $data['variantproducts'] = $this->model_catalog_product->getProductVariantproducts($this->request->get['product_id']);

            foreach ($data['variantproducts'] as $k => $variantproduct) {
                if ($variantproduct['products']) {
                    foreach ($variantproduct['products'] as $j => $product) {
                        if ($product['image']) {
                            $image = $this->model_tool_image->resize($product['image'], 60, 60);
                        } else {
                            $image = false;
                        }
                        $product['image'] = $image;
                        $product['href'] = $this->url->link('product/product', 'product_id=' . $product['product_id']);    
                        $data['variantproducts'][$k]['products'][$j] = $product;
                         вот сюда........

И сюда 
<file path="catalog/view/theme/*/template/product/product.tpl">
      <operation>
         <search position="replace"><![CDATA[<div class="well well-sm product-info product_informationss">]]></search>
         <add position="before"><![CDATA[
      <?php if ($variantproducts) { ?>      
      <?php foreach ($variantproducts as $variantproduct) { ?>
      <?php if (!empty($variantproduct['products'])) { ?>
      <h3 class="vp_title"><?php echo $variantproduct['title']; ?>: </h3>    
      </br>    
      <div class="vbox">
      <?php foreach ($variantproduct['products'] as $product) { ?>
      <div class="vblock">
      <?php if ($product['image']) { ?>
      <div><a href="<?php echo $product['href']; ?>" id="<?php echo $product['product_id']; ?>" data-toggle="tooltip"  title="<?php echo $product['name']; ?>"> <img src="<?php echo $product['image']; ?>" alt="<?php echo $product['name']; ?>" /><?php echo $product['name']; ?></a>

Добавить <?php echo $product['price']; ?>

Вот так более подробно, чтобы понятнее было.

 $data['variantproducts'] = $this->model_catalog_product->getProductVariantproducts($this->request->get['product_id']);

что в модели этот метод берет из бд?

Надіслати
Поділитися на інших сайтах


<file path="catalog/model/catalog/product.php">
      <operation>
         <search><![CDATA[public function getProductAttributes($product_id)]]></search>
         <add position="before"><![CDATA[public function getProductVariantproducts($product_id)
    {
        $variantproduct_data = array();

        $sql = "
                    SELECT vd.title, (SELECT GROUP_CONCAT(v2p.product_id) FROM " . DB_PREFIX . "variantproducts_to_product v2p WHERE v.variantproduct_id = v2p.variantproduct_id AND v2p.product_id<>'" . (int)$product_id . "') prodIds
                    FROM " . DB_PREFIX . "variantproducts v
                    LEFT JOIN " . DB_PREFIX . "variantproducts_description vd ON (v.variantproduct_id = vd.variantproduct_id)
                    LEFT JOIN " . DB_PREFIX . "variantproducts_to_product v2p ON (v.variantproduct_id = v2p.variantproduct_id)
                    WHERE
                        v2p.product_id = '" . (int)$product_id . "' AND
                        vd.language_id = '" . $this->config->get('config_language_id') . "' AND
                        v.status = '1'
                    ORDER BY v.sort_order, v.variantproduct_id ASC
                    ";
        $variantproduct_query = $this->db->query($sql);

        foreach ($variantproduct_query->rows as $variantproduct) {
            $products = array();
            if ($variantproduct['prodIds']) $products = $this->getPorudctsByIds(explode(',', $variantproduct['prodIds']));

            $variantproduct_data[] = array(
                'title' => $variantproduct['title'],
                'products' => $products,
            );
        }

        return $variantproduct_data;
    }

    public function getPorudctsByIds($ids)
    {
        $sql = "SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order 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) WHERE p.product_id IN('" . implode("','", $ids) . "') AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY p.sort_order";
        $query = $this->db->query($sql);

        if ($query->num_rows) {

            $products = array();
            foreach ($query->rows as $row) {
                $products[] = array(
                    'product_id' => $row['product_id'],
                    'name' => $row['name'],
                    'model' => $row['model'],
                    'image' => $row['image']
                );
            }

            return $products;
        } else {
            return false;
        }
    }]]></add>
      </operation>

Надіслати
Поділитися на інших сайтах


Только что, maxway777 сказал:

<file path="catalog/model/catalog/product.php">
      <operation>
         <search><![CDATA[public function getProductAttributes($product_id)]]></search>
         <add position="before"><![CDATA[public function getProductVariantproducts($product_id)
    {
        $variantproduct_data = array();

        $sql = "
                    SELECT vd.title, (SELECT GROUP_CONCAT(v2p.product_id) FROM " . DB_PREFIX . "variantproducts_to_product v2p WHERE v.variantproduct_id = v2p.variantproduct_id AND v2p.product_id<>'" . (int)$product_id . "') prodIds
                    FROM " . DB_PREFIX . "variantproducts v
                    LEFT JOIN " . DB_PREFIX . "variantproducts_description vd ON (v.variantproduct_id = vd.variantproduct_id)
                    LEFT JOIN " . DB_PREFIX . "variantproducts_to_product v2p ON (v.variantproduct_id = v2p.variantproduct_id)
                    WHERE
                        v2p.product_id = '" . (int)$product_id . "' AND
                        vd.language_id = '" . $this->config->get('config_language_id') . "' AND
                        v.status = '1'
                    ORDER BY v.sort_order, v.variantproduct_id ASC
                    ";
        $variantproduct_query = $this->db->query($sql);

        foreach ($variantproduct_query->rows as $variantproduct) {
            $products = array();
            if ($variantproduct['prodIds']) $products = $this->getPorudctsByIds(explode(',', $variantproduct['prodIds']));

            $variantproduct_data[] = array(
                'title' => $variantproduct['title'],
                'products' => $products,
            );
        }

        return $variantproduct_data;
    }

    public function getPorudctsByIds($ids)
    {
        $sql = "SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order 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) WHERE p.product_id IN('" . implode("','", $ids) . "') AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY p.sort_order";
        $query = $this->db->query($sql);

        if ($query->num_rows) {

            $products = array();
            foreach ($query->rows as $row) {
                $products[] = array(
                    'product_id' => $row['product_id'],
                    'name' => $row['name'],
                    'model' => $row['model'],
                    'image' => $row['image']
                );
            }

            return $products;
        } else {
            return false;
        }
    }]]></add>
      </operation>

https://clip2net.com/s/49ylFYI  ну и где тут прайс?

добавьте выборку цены сюда. потом сделайте то что выше писали для контрлера и тпл

Надіслати
Поділитися на інших сайтах


3 хвилини назад, Dimasscus сказав:

https://clip2net.com/s/49ylFYI  ну и где тут прайс?

добавьте выборку цены сюда. потом сделайте то что выше писали для контрлера и тпл

Получилось, огромное спасибо!!! Не досмотрел, что в моделе нет цены(

Змінено користувачем maxway777
Надіслати
Поділитися на інших сайтах


А еще подскажите, как сделать итоговую цену со скидкой, если есть скидка ? И если нету скидки, то выводит обычную цену.

Змінено користувачем maxway777
Надіслати
Поділитися на інших сайтах


29 минут назад, maxway777 сказал:

А еще подскажите, выводит цену без скидки, как сделать итоговую цену, если есть скидка со скидкой?

добрый вечер не могли бы поделиттся решением?

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.