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

george_vin

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

Вот теперь мучаюсь как научить корзину запихнуть в эту ячейку данные из (optsku) которая находиться в `oc_product_option_value`
Как то так :)
 

george_vin

Постоялец
Регистрация
23 Дек 2012
Сообщения
90
Реакции
15
На код 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>

Спасибо за код... Попробую оптимизировать под себя..
 

unfume

Редиска
Регистрация
20 Янв 2014
Сообщения
501
Реакции
208
ну значит все правильно. теперь переделывай все order.* и добавляй туда артикул
 

george_vin

Постоялец
Регистрация
23 Дек 2012
Сообщения
90
Реакции
15
ну значит все правильно. теперь переделывай все order.* и добавляй туда артикул
Вроди бы, где нашел, в order в моделе, там добавил, но результата - 0...
Может в simplecheckout.php что то подправить, ведь заказ формирует вроди как этот файл...
Спасибо.
 

unfume

Редиска
Регистрация
20 Янв 2014
Сообщения
501
Реакции
208
cat\contr\check\simplecheckout_cart.php
скорее всего тоже придется указать про артикул
$option_data[] = array(
'name' => $option['name'],
'value' => (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value)
);


а нет, оно же как value идет, тут ничего не надо по идее
 

george_vin

Постоялец
Регистрация
23 Дек 2012
Сообщения
90
Реакции
15
cat\contr\check\simplecheckout.php
ищи $option_data = array();
После долгих, долгих поисков проблема решилась так -
Какой то "гадский модуль" во время очередных экспериментов создал мне в /system/modification/catalog/model/checkout/ файл order.php -
точную копию стандартной модели order.php
Так что, сколько я не вносил изменений в стандартный order.php, ничего не менялось.
После удаления /system/modification/catalog/model/checkout/order.php - Все стало замечательно работать, в логах ошибок нет...
Осталось только скомпелировать все мои изменения в ocmod или в vqmod - пока не определил что из них лучще...

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

Особая благодарность неравнодушному unfume.
 
Сверху