Как прописать базовую цену без 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 поставите цену и у всех дочерних она тоже поменяться при сохранении



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



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

Похоже, подключение к Форум | MODX Shopkeeper было разорвано, подождите, пока мы пытаемся восстановить соединение.