Добавить ID опции на страницу заказа

Тема в разделе "Модули и дополнения", создана пользователем Jess23, 21 авг 2015.

  1. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Доброго времени.



    Столкнулся с проблемой, мне нужно добавить ID опции к принадлежащему ей заказу... Отредактировав файлы которые отвечают за данные строки, толку никакого не дало, получаю сплошные ошибки, каким образом это можно реализовать не могу сообразить... Возможно моя формулировка вопроса непонятна, добавляю на всякий скрины, с выделительным id и местом куда нужно запихнуть значение...

    ID который мне нужен...
    96f4fabf6d07afe35fd86e73c1941771.jpg

    Добавить сюда...
    e4123021712f1c5719838f493d33610d.jpg

    Спасибо. Извините если не в ту ветку, на форуме недавно.
     
  2. Vlad

    Vlad Эксперт

    Сообщения:
    4.146
    Симпатии:
    1.003
    в файле

    после
    Код:
    if ($option['type'] != 'file') {
                    $option_data[] = array(
    вставить
    Код:
    'order_id'  => $option['order_id'],
    и в шаблоне вывести..
     
  3. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Похоже понял, по такому принципу я и делал, только много различных ошибок получал vqmod, не объясните пожалуйста каким образом он взаимосвязан с этим. После того как восстановил OC из коробки, при этом не установления дополнительные плагины, ошибок нету, но и не могу разобраться зачем выводить это значения внутри шаблона если мне нужно только в админ-панели? Да и что-то не удается мне получить id.
     
  4. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Все, я понял принцип, спасибо большое за помощь. Только вот мне нужен не order_id а option_value_id. Сейчас стараюсь подправить все, но проблема осталась, получаю ошибку undefined index: option_value_id.... Возможно не в то место я дописываю данную строчку.
     
  5. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Файлы которые редактирую: \upload\admin\view\template\sale\order_info.tpl (Для вывода поля внутри заказа админ панели )

    и \upload\admin\controller\sale\order.php...

    Добавляю строку: 'option_value_id' => $option['option_value_id'], и вывожу её <?php echo $option['option_value_id']; ?>...

    Но получаю: undefined index: option_value_id.
     
  6. Vlad

    Vlad Эксперт

    Сообщения:
    4.146
    Симпатии:
    1.003
    а вы в цикле выводите, в
    PHP:
    <?php foreach ($products as $product) { ?>
     
  7. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Ну да
     
  8. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Делаю таким вот образом:
    PHP:
    foreach ($options as $option) {
                        if (
    $option['type'] != 'file') {
                            
    $option_data[] = array(
                                
    'option_value_id'  => $option['option_value_id'],
                                
    'name'  => $option['name'],
                                
    'value' => $option['value'],
                                
    'type'  => $option['type']
                            );
    И вывожу:

    HTML:
    <?php foreach ($products as $product) { ?>
                    <tr>
                      <td class="text-left"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a>
                        <?php foreach ($product['option'] as $option) { ?>
                        <br />
                        <?php if ($option['type'] != 'file') { ?>
                        &nbsp;<small> - <?php echo $option['name']; ?>: <?php echo $option['value']; ?></small>
                        <?php } else { ?>
                        &nbsp;<small> - <?php echo $option['name']; ?>: <a href="<?php echo $option['href']; ?>"><?php echo $option['value']; ?></a></small>
                        <?php } ?>
                        <?php } ?></td>
                      <td class="text-left"><?php echo $product['model']; ?></td>
                      <td class="text-right"><?php echo $product['quantity']; ?></td>
                      <td class="text-right"><?php echo $product['price']; ?></td>
                      <td class="text-right"><?php echo $product['total']; ?></td>
                      <td class="text-left"><?php echo $option['option_value_id']; ?></td>
                    </tr>
                    <?php } ?>
     
  9. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Возможно проблема в самом запросе к таблице БД, там нет нужного поля, из-за этого я получаю данную ошибку. Хотя написав запрос к БД с полем которое мне нужно, я получаю опять ошибку. Подскажите что не так делаю?... Уже второй день не могу сообразить...
    Помогите составить правильный запрос или же может не в запросе дело...

    Нужна мне таблица option_value с полем option_value_id все это описать в order.php и вывести option_value_id в заказе то есть в файле order_info.tpl.

    Спасибо!
     
  10. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    вам нужен видимо product_option_value_id
    или может что то другое.. выбирай на выбор ))
    Код:
          'order_option_id' => string '1' (length=1)
          'order_id' => string '8' (length=1)
          'order_product_id' => string '8' (length=1)
          'product_option_id' => string '226' (length=3)
          'product_option_value_id' => string '15' (length=2)
          'name' => string 'Select' (length=6)
          'value' => string 'Red' (length=3)
          'type' => string 'select' (length=6)
    выводить в шаблоне в строчке после
    PHP:
    <?php if ($option['type'] != 'file') { ?>
    Проверено, все выводит.
     
  11. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Спасибо за ответ, но дело в том что product_option_value_id это не совсем то поле которое мне нужно, на самом деле мне нужно поле option_value_id из таблицы option_value. При выводе этого поля я и получаю ошибки. Где сделать вывод я уже разобрался. А вот как отобразить нужное поле, это на данный момент проблемка.

    product_option_value -
    там нету мне нужного значения.
     
    Последнее редактирование: 23 авг 2015
  12. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    а из таблицы _product_option_value столбец option_value_id не пойдет ??

    Если пойдет, то просто изменить запрос в файле \admin\model\sale\order.php

    этот
    PHP:
        public function getOrderOptions($order_id$order_product_id) {
            
    $query $this->db->query("SELECT * FROM " DB_PREFIX "order_option WHERE order_id = '" . (int)$order_id "' AND order_product_id = '" . (int)$order_product_id "'");
    на
    PHP:
    public function getOrderOptions($order_id$order_product_id) {
            
    $query $this->db->query("SELECT * FROM " DB_PREFIX "order_option oo LEFT JOIN " DB_PREFIX "product_option_value pov ON (pov.product_option_value_id = oo.product_option_value_id) WHERE order_id = '" . (int)$order_id "' AND order_product_id = '" . (int)$order_product_id "'");
    там возьмете option_value_id
     
    Vlad и Jess23 нравится это.
  13. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Идеально, именно то что нужно, я не мог найти запрос который составляет эти таблицы... Благодаря Вам, теперь все работает.

    Таким образом, теперь я могу назначить свой уникальный код для опции, то есть при импорте я могу контролировать наличие товара на складе, так как опция это другой грубо-говоря товар, это в своем роде SKU для опции. Если я правильно разобрался с БД.

    Спасибо ещё раз!