[Помогите] Вывод количества товара в карточке, рядом с каждой опцией.

Тема в разделе "OpenCart", создана пользователем NinoZombie, 4 май 2014.

  1. NinoZombie

    NinoZombie

    Регистрация:
    27 окт 2013
    Сообщения:
    223
    Симпатии:
    61
    Здравствуйте!
    Прошу помощи у людей, разбирающихся лучше меня в PHP и структуре опенкарта...
    Условия:
    Стоит модуль OpenStock, для того чтобы можно было задавать количество товара на складе для каждой его вариации (наприм. Есть серьги "Розы" в красном цвете, а есть в черном. Красные на складе есть, а черные только под заказ.)
    Работает так - выбираешь одну из опций товара, модуль смотрит количество на складе и выдает окошко "В наличии" или "Нет в наличии".
    Задача:
    Рядом с названием опции нужно выводить количество товара в этой опции (или делать заблокированными те опции, в которых товара нет).
    Пример того, как все должно выглядеть. По факту количество товара в определенной опции выводится только после выбора опции (на скриншоте - поле с зеленой галочкой).
    [​IMG]
    Решение:
    ??????????????
    Пробовал вставлять такой код в /theme/ТЕМА/product/product.tpl

    Код:
    //После вывода лейбла опции
    <?php echo $var_info['stock']; ?>
    И в контроллере /controller/product.php ближе к шапке.
    Код:
    $this->load->model('openstock/openstock');
            $this->load->model('catalog/product');
           
            $var_info       = $this->model_openstock_openstock->getRelation($this->request->post['var'], $this->request->post['product_id']);
    взял я этот код из controller/openstock.php . Переменная выводит ту самую цифру в блоке с зеленой галочкой со скриншота.
    но ничего не выводится :(
    Чувствую, что так удаленно ничего и не предложите, что надобно будет воочию посмотреть - пожалуйста, дам доступы в личку. Главное чтоб хоть намекнули куда рыть.
    Заранее большое спасибо.
     
  2. Bnopen

    Bnopen Команда форума

    Регистрация:
    3 мар 2013
    Сообщения:
    1.264
    Симпатии:
    534
    NinoZombie, есть модуль для вывода остатка для каждой опции. Хотя не знаю как оно будет работать с опенстоком. Может код в ксмльке вам поможет:

    Но точно, что надо добавлять quantity для опции и в контроллер.
     
  3. ingenerks

    ingenerks

    Регистрация:
    25 окт 2012
    Сообщения:
    250
    Симпатии:
    73
  4. NinoZombie

    NinoZombie

    Регистрация:
    27 окт 2013
    Сообщения:
    223
    Симпатии:
    61
    Спасибо за отклик.
    Решил проблему скачиванием модуля, который посоветовал Bnopen и переносом данных из опенстоковских таблиц в стандартную таблицу опций.
    Долго мучался с тем, что опенсток задает зависимость опции в одном столбце, так, что значения ячеек примерно такие "423:556".
    Кому интересно - вот запрос, которым количество товаров, заполненное для опенстока копирую для стандартных опций:

    Код:
    UPDATE `oc_product_option_value` t JOIN `oc_product_option_relation` s ON t.`product_id`=s.`product_id` AND t.product_option_value_id = s.var
    SET t.quantity=s.stock, t.subtract=1
    WHERE s.stock!=0
    stock не должен равняться нулю из-за того, что для зависимых опций опенстока создается много дублей по полю var.
    Каким-то образом я к этому пришел короче, а как объяснить толково - не знаю :smile:

    Теперь встал другой вопрос - как автоматизировать выполнение этого скрипта ? Чтобы он, к примеру, раз в день выполнялся сам.
     
  5. Bnopen

    Bnopen Команда форума

    Регистрация:
    3 мар 2013
    Сообщения:
    1.264
    Симпатии:
    534
    Добавить в задание cron на хостинге. Вот типа такого:
    00 00 * * * echo 'UPDATE "'`oc_product_option_value` t JOIN `oc_product_option_relation` s ON t.`product_id`=s.`product_id` AND t.product_option_value_id = s.var
    SET t.quantity=s.stock, t.subtract=1
    WHERE s.stock!=0' | mysql -uusername -ppassword tablename

    Только нужно смотреть синтаксис с кавычками.
    Если что, вот здесь похожее обсуждается:
     
  6. NinoZombie

    NinoZombie

    Регистрация:
    27 окт 2013
    Сообщения:
    223
    Симпатии:
    61
    Ругается на число символов в задании :(
    А как это можно в файл запихнуть?