Андрей Рябченко

Андрей Рябченко

Был в сети 29 сентября 2021, 18:21
Заказы не принимаю
чтобы учетная программа эти заказы видела и по необходимости вытаскивала себе. другой вариант заставить ее лезть в базу модх и брать инфу оттуда, но мне на данном этапе видится такой файловый обмен простым и надежным
нет. плагин так и называется «плагин» смотри в дереве «элементов» в админке есть плагины. создаешь новый, пишешь код, потом галочкой отмечаешь событие на которое запускается этот плагин. в данном случае: OnBeforeCommentSave
Огромная вам благодарность.
не знал, что плагин выполняется при публикации из админки… получается я сам стирал эти поля.
добавил проверку, теперь работает.
<?php
if ($modx->event->name == 'OnBeforeCommentSave') {
    if(!empty($_POST['comment-plus']) OR !empty($_POST['comment-minus'])){
        $properties = array(
            'comment-plus' => $modx->stripTags($_POST['comment-plus']),
            'comment-minus' => $modx->stripTags($_POST['comment-minus'])
        );
        $modx->event->params['TicketComment']->set('properties', $properties);
    };
}
&prepareSnippet убрал и делаю через плагин на событие msOnGetProductPrice.

пример с умножением цены работает, но установка плейсхолдера в плагине не срабатывает. наверное мне нужно добавить дополнительное поле поле к товару price_hrn
и потом делать в плагине: $values['price_hrn'] = $price * $kurs_usd;
так?

и сразу же спрошу дальше: какие события отвечают за изменения количества товара в корзине и стоимость order_cost?

просто в идеале хочется получить работу магазина в $ и рядышком цену по курсу в грн. как «справочную».
сделал через &prepareSnippet
таким сниппетом:
<?php
$kurs_usd = $modx->getOption('kurs_usd');

$price = str_replace(" ","",$row['price']);
$price_hrn = number_format($price*$kurs_usd, 2, '.', ' ');
$modx->setPlaceholder('price_hrn', $price_hrn);

$total_cost = str_replace(" ","",$row['total_cost']);
$total_cost_hrn = number_format($total_cost*$kurs_usd, 2, '.', ' ');
$modx->setPlaceholder('total_cost_hrn', $total_cost_hrn);

$order_cost = str_replace(" ","",$row['order_cost']);
$order_cost_hrn = number_format($order_cost*$kurs_usd, 2, '.', ' ');
$modx->setPlaceholder('order_cost_hrn', $order_cost_hrn);
это работает корректно везде кроме msCart(при изменении количества) msOrder(при изменении методов оплаты и доставки). у меня от этого цены total_cost и order_cost изменяются, а total_cost_hrn и order_cost_hrn не изменяются (только после F5).

подскажете как заставить?