Помощь Помогите передать значение опции товара из корзины в базу

Тема в разделе "Opencart", создана пользователем george_vin, 27 ноя 2015.

Информация :
Внимание форумчане! При создании тем, или выкладывании какой-либо информации проверьте в какой ветке форума вы находитесь! Не путайте Opencart и Opencart2. При несоблюдении данного условия выносится соответствующее наказание! И потом не говорите что вас НЕ ПРЕДУПРЕЖДАЛИ! По возможности используйте обменники mail, yandex, google, dropbox, rghost Дабы избежать просьб перезалить и проблем с рекламой!
Модераторы: ZiX
  1. george_vin

    george_vin Постоялец

    Регистр.:
    23 дек 2012
    Сообщения:
    90
    Симпатии:
    15
    Доброго времени суток всем.
    Установил модуль "Автоматическая обработка прайс-листов (Поставщики v8.2a)" - появилась возможность добавить SKU каждой опции, в базе появился столбец optsku....
    Набросал XML что бы вывести этот SKU напротив каждой опции в карточке товара.

    Теперь собственно вопрос. - Как это SKU передать в корзину, а потом еще и прикрутить в письма (админу и покупателю)

    Нарыл что за передачу инфы о товаре в корзину отвечает скрипт в product.tpl

    А эта строка, вродибы конкретно передает тип и значения опций.


    Подскажите знающие люди, как передать еще и optsku опции?
    версия ОС - 2.0.3.1

    столбец optsku в базе в order_option создал.

    Спасибо всем неравнодушным.
     
  2. george_vin

    george_vin Постоялец

    Регистр.:
    23 дек 2012
    Сообщения:
    90
    Симпатии:
    15
    Немного поразмыслив. пришел к выводу, что скрипт в product.tpl все-же передает информацию об опции продукта, и ее id....
    А вот контролер корзины решает, какую информацию тянуть из базы данных, если не прав - подправьте пожалуйста.
    Так вот... Порывшись в коде контролера, нашел строки отвечающие за вывод значения опции

    Так вот... Как подправить этот скрипт, чтоб он кроме типа опции и ее значения, выводил значение еще из одной ячейки в таблице опций базы данных.
    Спасибо.
     
  3. unfume

    unfume Редиска

    Регистр.:
    20 янв 2014
    Сообщения:
    519
    Симпатии:
    208
    кажись в system\library\cart.php надо копать
     
    george_vin нравится это.
  4. george_vin

    george_vin Постоялец

    Регистр.:
    23 дек 2012
    Сообщения:
    90
    Симпатии:
    15
    Спасибо за подсказку.
    Действительно в этом файле оказались нужные строки.
     
  5. george_vin

    george_vin Постоялец

    Регистр.:
    23 дек 2012
    Сообщения:
    90
    Симпатии:
    15
    После проделанной работы по правке кода, спасибо подсказке "unfume", получил желаемый результат - значение определенной ячейки базы, выводится в корзине как дополнительное значение опции.

    Теперь стоит задача №2..... при оформлении заказа отправить и записать это значение в базу, в таблицу `oc_order_option` в созданную мной optsku.

    Установлена корзина "simple"
    Подскажите где править, в контроллере simple, или в стандартном checkout.php, или это вообще в моделе order.php ??
    Спасибо всем неравнодушным.
     
  6. unfume

    unfume Редиска

    Регистр.:
    20 янв 2014
    Сообщения:
    519
    Симпатии:
    208
    catalog\model\checkout\order.php
    и вообще покопай в файлах order.*
    у тебя потом возникнет вопрос с выводом в личный кабинет и отправкой на почту + в админке захочется видеть
     
  7. george_vin

    george_vin Постоялец

    Регистр.:
    23 дек 2012
    Сообщения:
    90
    Симпатии:
    15
    Спасибо попробую найти, в админку уже вывел :), правда при условии что в ячейку значение вношу через PhpMyAdmin :).
    теперь копаюсь как туда записывать не через PhpMyAdmin :D
     
  8. unfume

    unfume Редиска

    Регистр.:
    20 янв 2014
    Сообщения:
    519
    Симпатии:
    208
    тебе нужно еще опции через админку чтоли добавить?
     
  9. unfume

    unfume Редиска

    Регистр.:
    20 янв 2014
    Сообщения:
    519
    Симпатии:
    208
    На код vqmod чтобы в админке добавлять артикул в опциях к товару, код вроде рабочий, но поправь под себя его
    Код:
    <?xml version="1.0" encoding="UTF-8"?>
    <modification>
       
        <file name="admin/language/*/catalog/product.php">
       
            <operation error="log">
                <search position="before"><![CDATA[// Error]]></search>
                <add><![CDATA[$_['entry_sku_option_value']           = 'SKU:';
            ]]></add>
            </operation>
           
        </file>
       
        <file name="admin/controller/catalog/product.php">
       
            <operation error="log">
                <search position="after"><![CDATA[$this->data['entry_option_value'] = $this->language->get('entry_option_value');]]></search>
                <add><![CDATA[$this->data['entry_sku_option_value'] = $this->language->get('entry_sku_option_value');
            ]]></add>
            </operation>
           
            <operation error="log">
                <search position="after" offset="5" index="2"><![CDATA[$product_total = $this->model_catalog_product->getTotalProducts($data);]]></search>
                <add><![CDATA[
            $product_sku_options = array();
            $product_sku_options = $this->model_catalog_product->getProductOpt1Option($result['product_id']);
           
                ]]></add>
            </operation>
           
            <operation error="log">
                <search position="after"><![CDATA['selected'   => isset($this->request->post['selected']) && in_array($result['product_id'], $this->request->post['selected']),]]></search>
                <add><![CDATA[
            'sku_option'      => $product_sku_options,
                ]]></add>
            </operation>
           
            <operation error="log">
                <search position="after"><![CDATA['points_prefix'           => $product_option_value['points_prefix'],]]></search>
                <add><![CDATA[
            'sku_option'           => $product_option_value['sku_option'],
                ]]></add>
            </operation>
           
        </file>
       
       
        <file name="admin/model/catalog/product.php">
            <operation error="log">
                <search position="iafter" index="1"><![CDATA["', weight_prefix = '" . $this->db->escape($product_option_value['weight_prefix']) .]]></search>
                <add><![CDATA[ "', sku_option = '" . $product_option_value['sku_option'] . ]]></add>
            </operation>
           
            <operation error="log">
                <search position="iafter" index="2"><![CDATA["', weight_prefix = '" . $this->db->escape($product_option_value['weight_prefix']) .]]></search>
                <add><![CDATA[ "', sku_option = '" . $product_option_value['sku_option'] . ]]></add>
            </operation>
           
            <operation error="log">
                <search position="after"><![CDATA['weight'                  => $product_option_value['weight'],]]></search>
                <add><![CDATA['sku_option'           => $product_option_value['sku_option'],
    ]]></add>
            </operation>
           
            <operation error="log">
                <search position="before"><![CDATA[public function getProductRewards($product_id) {]]></search>
                <add><![CDATA[
            public function getProductOpt1Option($product_id) {
                $query = $this->db->query("SELECT product_id, sku_option FROM " . DB_PREFIX . "product_option_value WHERE product_id = '" . (int)$product_id . "'");
           
                return $query->rows;
            }
    
                ]]></add>
            </operation>
        </file>
       
        <file name="admin/view/template/catalog/product_form.tpl">
            <operation error="log">
                <search position="after" index="1"><![CDATA[<td class="left"><?php echo $entry_option_value; ?></td>]]></search>
                <add><![CDATA[<td class="left"><?php echo $entry_sku_option_value; ?></td>
    ]]></add>
            </operation>
           
            <operation error="log">
                <search position="after"><![CDATA[<input type="hidden" name="product_option[<?php echo $option_row; ?>][product_option_value][<?php echo $option_value_row; ?>][product_option_value_id]" value="<?php echo $product_option_value['product_option_value_id']; ?>" /></td>]]></search>
                <add><![CDATA[
                <td class="right"><input type="date" name="product_option[<?php echo $option_row; ?>][product_option_value][<?php echo $option_value_row; ?>][opt4_option]" value="<?php echo $product_option_value['sku_option']; ?>" size="5" /></td>
                ]]></add>
            </operation>
           
            <operation error="log">
                <search position="after"><![CDATA[html += '    </select><input type="hidden" name="product_option[' + option_row + '][product_option_value][' + option_value_row + '][product_option_value_id]" value="" /></td>';]]></search>
                <add><![CDATA[
                html += '    <td class="right"><input type="date" name="product_option[' + option_row + '][product_option_value][' + option_value_row + '][sku_option]" value="" size="3" /></td>';]]></add>
            </operation>
        </file>
       
       
       
    </modification>
    
     
  10. unfume

    unfume Редиска

    Регистр.:
    20 янв 2014
    Сообщения:
    519
    Симпатии:
    208
    соот-но sku_option на название своей таблицы меняй