изменение цены плагином

Добрый день! нужно с помощью плагина по определенным условиям менять цену выводимую во фронтенде. не нашел на какой хук повесить данную функцию. в идеале нужно сделать так, если условие сработало, то товар отображается и продается по другой цене.

2 ответа

  • 2
    Евгений Леман 9 июня 2018 16:57 #

    frontend_products

    • +1
      _ms _ms 9 июня 2018 17:24 #

      спасибо. получилось. только товар в корзину кладется все равно по исходной (не измененной цене). для изменения цены в том числе и корзине нужно еще на какой-то хук обработчик вешать? если да, подскажите на какой.

      • +1
        EnsoStudio EnsoStudio 9 июня 2018 21:00 #

        одним хуком проблему не решить. проще реализовать изменение цен скидками

        • +1
          _ms _ms 9 июня 2018 21:29 #

          то что проблему хуком не решить я уже понял. и вариант со скидками я не представляю как применить. задача на самом деле следущая: есть несколько складов и цена зависит от того, с какого склада идет заказ. на каждом складе цена каждого товара индивидуальная.

          • +1
            EnsoStudio EnsoStudio 9 июня 2018 23:59 #

            Тогда в шапке должен быть селектор для выбора склада или как Вы это планируете реализовать?

            И явно потребуется хук frontend_checkout_stock_rules

            • +1
              _ms _ms 10 июня 2018 05:49 #

              да. именно так и планируется, в шапке будет селектор.

      • +3
        Евгений Леман Евгений Леман 9 июня 2018 22:23 #

        Разве? Вроде ж все плагины оптовых цен только на этом хуке и сидят. Беглым просмотром вижу, что товары в корзине формируются через метод getByCode модели shopCartItemsModel. В котором есть:

        $event_params = array(
        	'products' => &$products,
        	'skus'     => &$skus,
        );
        wa('shop')->event('frontend_products', $event_params);
        
        • +1
          EnsoStudio EnsoStudio 9 июня 2018 23:55 #

          Это же цена в корзине, а не каталоге.

          • +1
            _ms _ms 10 июня 2018 05:56 #

            вопрос сейчас в том и стоит, почему в корзине цена не меняется и как это победить.

        • +1
          _ms _ms 10 июня 2018 05:54 #

          да. код есть. вопрос в том почему хук не срабатывает. сейчас плагин висит на хуке frontend_products, который меняет цену. в каталоге все ОК. он срабатывает, в списках, карточках товаров цена меняется. НО при добавлении в корзину (да и в самой корзине) хук не срабатывает, и цена идет та, которая записана в базе.

  • 1
    _ms 10 июня 2018 14:11 #

    все. разобрался. все получилось. всем спасибо за помощь

    • +1
      Евгений Леман Евгений Леман 10 июня 2018 20:58 #

      Написал бы в чем была сложность. Для потомков.

      • +1
        _ms _ms 11 июня 2018 05:39 #

        на самом деле все проще оказалось. я обрабатывал приходящий $params['producs']. и этого достаточно, если разговор идет о товарах витрины. Но в нутри кода корзины после wa('shop')->event('frontend_products', $event_params); идет $item['price'] = $sku['price']; соответственно он затирает все мои изменения. в обработчике поставил еще обработку $params['skus'] и все встало на свои места.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите