Николай

Николай

С нами с 27 июня 2020; Место в рейтинге пользователей: #3458
Николай
04 июля 2020, 15:38
0
Огромное спасибо!!! в очередной раз мен выручаете!!!
а для тех, кто тоже столкнется с такой задачей — вот решение
&where=`["Data.price  BETWEEN 1500 and 2990"]`
Николай
03 июля 2020, 18:49
0
К сожалению, так тоже выводит все товары, без учета условия по цене.
Николай
03 июля 2020, 18:48
0
Спасибо, сейчас буду разбираться. Вроде бы сам тое искал, но на эти страницы не натыкался
Николай
03 июля 2020, 09:04
0
Подскажите, удалось решить задачу?
Николай
03 июля 2020, 08:34
0
Подскажите, проблему как-то получилось решить? Сейчас такая же задача стоит и тоже завис((
Николай
27 июня 2020, 18:56
0
Ну по логике — да, вроде должно. Но почему-то не идет.
Для чистоты эксперимента еще раз собрал на тестовом сайте, чтобы исключить влияние каких-то других событий, плагинов и дополнений.
В итоге на тестовом все заработало после устновки приоритета плагина на значение «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));
Николай
27 июня 2020, 14:41
0
Также и по аналогии с этим вполне рабочим примером (пробовал на тестовом сайте modhost), конструкция
$values['price'] = ($price * $modif / 100) + $price;
сама по себе работает, в журнале выводит, а на этом сайте не хочет.
Пока из мыслей только, что родной плагин cityfiled может отлавливать это же событие и не давать менять.
Николай
27 июня 2020, 14:29
0
Действительно, цена лежит в $price. Теперь цену поймал, при смене города корректно выводит в журнал верные значения.
а это будет совсем наглостью спросить, как после этого всего заставить отображать на сайте модифицированную цену?
Что-то наподобие такого?
$product->set('price', $values['price']);
Николай
27 июня 2020, 13:57
0
Благодарю за ответ!!! И за подсказку про отладку, для новичка очень полезная функция!

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