Николай

Николай

Был в сети 30 июля 2020, 16:14
Заказы не принимаю
Ну по логике — да, вроде должно. Но почему-то не идет.
Для чистоты эксперимента еще раз собрал на тестовом сайте, чтобы исключить влияние каких-то других событий, плагинов и дополнений.
В итоге на тестовом все заработало после устновки приоритета плагина на значение «1».
Значит, Ваше решение верное (За что Вам огромное спасибо!!!), надо просто поймать, что мешает работе.

А если кому-то тоже понадобится — вот рабочее решение:

<?php
if (!$modx->getOption('cityfields_active')) return false;

$cityFields = $modx->getService('cityfields','cityFields',$modx->getOption('cityfields.core_path',null,$modx->getOption('core_path').'components/cityfields/').'model/cityfields/',$scriptProperties);
if (!($cityFields instanceof cityFields)) return false;
switch($modx->event->name) {
    case 'msOnGetProductPrice':
        $field = $modx->getObject('cfField', array(
            'city_id' => $cityFields->currentCityId,
            'placeholder' => 'price-koeff'
        ));
        if ( $field ) {
            $modif = (float) $field->get('value');
            $values = & $modx->event->returnedValues;
            $values['price'] = ($price * $modif / 100) + $price;
        } 
        break;
};

 $modx->log(modX::LOG_LEVEL_ERROR, print_r($values['price'], 1));
Также и по аналогии с этим вполне рабочим примером (пробовал на тестовом сайте modhost), конструкция
$values['price'] = ($price * $modif / 100) + $price;
сама по себе работает, в журнале выводит, а на этом сайте не хочет.
Пока из мыслей только, что родной плагин cityfiled может отлавливать это же событие и не давать менять.
Действительно, цена лежит в $price. Теперь цену поймал, при смене города корректно выводит в журнал верные значения.
а это будет совсем наглостью спросить, как после этого всего заставить отображать на сайте модифицированную цену?
Что-то наподобие такого?
$product->set('price', $values['price']);
Благодарю за ответ!!! И за подсказку про отладку, для новичка очень полезная функция!

Да, событие включил — «msOnGetProductPrice». Это было первое, на чем споткнулся, но сообразил))
По второму вопросу — нет, не выводит. При этом, значение коэффициента для города поймал, вывел. Получается, неверно получаю базовую цену товара. Сейчас копаю в этой стороне.