Последние темы


Как прописать базовую цену без TV

  • Возникла проблема с базовой ценой.
    Подключение функционала магазина на рабочий проект - каталог товаров в количестве 26 000 штук.

    При создании TV необходимо редактировать все товары и прописывать цену. Это долгий процесс, все товары цифровые и имеют одинаковую цену. Ищу простое решение.

    Первая попытка прописать значение по умолчанию для TV price не обвенчалось успехом. Цена отображается на всех товарах, но при добавлении в корзину отображается 0. Не могу понять по какой причине.

    Второй вариант SQL запрос с обновлением TV price для всех товаров, но может есть более простое решение, к примеру прописать фиксированное значение цены в месте вывода TV price?

    У всех товаров будет 2 дополнительных цены, которые планирую добавить через

    <input type="hidden" name="shk-id" value="[[*id]]__price2" />
    

    Но видимо пока нет основной цены, при выборе дополнительной также передается 0.

    Застрял на этом этапе, как прописать фиксированную цену для всех товаров?

  • Как понимаю решения указанной мною проблемы нет?
    Можно тогда уточнить, при каких условиях в корзину передается цена=0?

    shk-item прописано в классе, насколько я помню это является основной проблемой, когда при нажатии кнопки В КОРЗИНУ добавляется товар с нулевым значением цены.

    Может быть есть еще какие-то ситуации? Не первый магазин на shopkeeper, но функционал довольно расширенный и "уперся" в косяк с ценой... Мысли закончились, а проект надо запустить.

  • Да, значения по умолчанию для TV не поддерживаются.

    Самый простой вариант это написать плагин на событие "OnSHKgetProductPrice" примерно такой:

    $myPrice = 100;//Ваша цена для всех товаров
    $modx->event->output( $myPrice );
    

    В плагин передаются переменные $id, $price. При желании можно усовершенствовать.

  • Я решил проблему с долгим протыкиванием каждого товара и проставление каждому цены вот таким плагином

    <?php
    $page1 = $modx->getObject('modResource', $id);
    $tv = $page1->getTVValue('gprice');
    $ids = $modx->getChildIds($id,1, array('context'=>'web'));
    
    foreach($ids as $id){
    
        $page = $modx->getObject('modResource', $id);
        $page->setTVValue('price', $tv);
    
    }
    

    gprice - название TV у родителя
    price - название TV с ценой у каждого товара

    Ставить надо на событие OnDocFormSave, у родителя в ТV поставите цену и у всех дочерних она тоже поменяться при сохранении

  • Благодарю за советы. Но к сожалению ситуация не изменилась. В корзину товары "улетают" с нулевой ценой.

 

Последние комментарии

  • @Andchir Чета не додумался. Спасибо огромное, завелось.

    Читать далее
  • Потому что в этой функции нет объекта $modx. Можно попробовать добавить такую строчку вверху функции (внутри):

    global $modx;

    Читать далее
  • Добрый день.
    Задача: Есть таблица где записываются id данных из других созданных таблиц.
    Нужно в функции filter_export и filter_import объединить данные из разных таблиц.

    Как я пробывал решить свою задачку:

    function filter_export($value_arr,$doc_id=0) { //var_dump($output_arr); //exit; $output_arr = $value_arr; if(isset($output_arr['execution'])) { $ids = $output_arr['execution']; $result = $modx->query("SELECT * FROM LKp3KJ_my_execution WHERE id = $ids"); $row = $result->fetch(PDO::FETCH_ASSOC); $output_arr['execution'] = $row[title]; } /* if(isset($output_arr['price'])) $output_arr[1] = floatval($output_arr[1]) - 200; */ return $output_arr; }

    В ответ получаю 500 ошибку на странице импорт/экспорт.

    Читать далее
  • Спасибо за содействие! Приношу извинения за неудобства.

    Читать далее