Как добавить коэффициент умножения на цены miniShop2 и msOptionsPrice2

Нужно чтобы в минишоп попадали уже цены умноженные на этот коэффициент. Часть товаров с опциями msop2.
Еще на сайте есть текстовые цены на доп услуги, их тоже как-то менять надо на этот коэффициент.

Три месяца назад я написал эту песню, но с е$учим темпом инфляции я зае$ался тексты переделывать, так что пусть в этой песне всё остаётся как было
Бомж, Сектор Газа, 1991 год
Я уже устал 2 недели цены переделывать.
Подскажите, пожалуйста, как решить эту проблему.
Сначала надеялся, что всё быстро закончится, но похоже, что всё только начинается…

Самый простой способ, наверно, где-то в админке сделать коэффициент и чтобы все существующие цены на него умножались.
Как это сделать?
Фарит
08 марта 2022, 21:25
modx.pro
827
0

Комментарии: 8

Артур Шевченко
08 марта 2022, 21:29
+1
Самый простой способ, наверно, где-то в админке сделать коэффициент и чтобы все существующие цены на него умножались.
Да. И добавь к этому задание в планировщике и сниппет который будет цены менять.
    Фарит
    Фарит
    08 марта 2022, 21:46
    0
    Как это сделать?
      Артур Шевченко
      08 марта 2022, 23:02
      +3
      Вот мой код к которому обращается cron
      <?php
      $snippet = $argv[1] ?: $_GET['snippet'];
      $allowSnippets = array('modstoreParser', 'updatePrice', 'bussinessCenterParser'); // массив разрешённых сниппетов, нужно потому что скрипт доступен с фронта и принимает get-параметры.
      if(in_array($snippet, $allowSnippets)){
          require_once 'document/root/path/public_html/config.core.php'; // заменить на свой путь до корня сайта
          require_once MODX_CORE_PATH.'model/modx/modx.class.php';
          $modx = new modX();
          $modx->initialize('web');
          $modx->getService('error','error.modError', '', '');
          echo $modx->runSnippet($snippet);
      }
      Как создавать задачи для cron можно загуглить поискать в Яндексе.
      А как должен выглядеть сниппет, я могу только предполагать. Учитывая, что есть «текстовые цены», наверное нужно будет использовать регулярные выражения. Если в самом простом варианте, без регулярок и модификаций, только основная цена товара, то примерно так
      <?php
      $coefficient = $modx->getOption('coefficient'); // получаем системную настройку, которую предварительно создали
      if($coefficient){
          $products = $modx->getIterator('msProductData'); // получаем все товары  
          foreach($products as $product){
              $oldPrice =  $product->get('price');
              $product->set('price', $price*$coefficient);
              $product->save();
          }
      }
    Баха Волков
    09 марта 2022, 10:20
    +1
    @Фарит Не надо писать такие заголовки, заголовок вопроса должен отражать суть вопроса и до ката также
      Николай Савин
      09 марта 2022, 10:50
      +3
      Заголовок и суть вопроса были отформатированы высокоразвитым искусственным интеллектом.
        Андрей
        10 марта 2022, 02:06
        +1
        Для переоценки можно использовать например — msRevaluation и msPre, оба поддерживают msOptionsPrice2.
          Фарит
          Фарит
          15 марта 2022, 10:38
          0
          msPre условно msOptionsPrice2 поддерживает.
          Точно также как и в msOptionsPrice2 нужно заходить в каждую позицию и менять цены.
          В виде таблицы не показывает.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        8