Денис Усачев

Денис Усачев

С нами с 26 июля 2016; Место в рейтинге пользователей: #815
Денис Усачев
18 августа 2023, 13:46
0
Недавно Chrome начал показывать предупреждение:
[Deprecation] Listener added for a synchronous 'DOMNodeInserted' DOM Mutation Event. This event type is deprecated (https://w3c.github.io/uievents/#legacy-event-types) and work is underway to remove it from this browser. Usage of this event listener will cause performance issues today, and represents a risk of future incompatibility. Consider using MutationObserver instead.
Всему причина msfavorites assets/components/msfavorites/js/default.js

а имеено DOMNodeInserted

$(window).on('load', function () {
        $('body').msfavorites('loadFavorites', true);
        $($.fn.msfavorites.selectors.main).msfavorites();

        $('body').on('DOMNodeInserted', function (event) {
            var html;
            if (event.target && (html = event.target.innerHTML) && typeof html === 'string' && html.match(new RegExp($.fn.msfavorites.defaults))) {
                $(document).trigger($.fn.msfavorites.CONTENT_CHANGE, jQuery.merge([html], arguments));
            }
        });
    });
заменить на

$(window).on('load', function () {
    $('body').msfavorites('loadFavorites', true);
    $($.fn.msfavorites.selectors.main).msfavorites();
    var observer = new MutationObserver(function (mutationsList) {
        for (var i = 0; i < mutationsList.length; i++) {
            var mutation = mutationsList[i];
            var target = mutation.target;
            if (mutation.type === 'childList' && target && target.innerHTML) {
                var html = target.innerHTML;
                if (typeof html === 'string' && html.match(new RegExp($.fn.msfavorites.defaults))) {
                    $(document).trigger($.fn.msfavorites.CONTENT_CHANGE, jQuery.merge([html], arguments));
                }
            }
        }
    });
    observer.observe($('body')[0], { childList: true, subtree: true });
});
пробелема решена
Денис Усачев
30 июня 2023, 14:19
0
Как ограничить/ отключить скидку для применения в N-количестве до товара.
Скажем скидка действует только два раза для товара в количестве макс 2 шт. либо два заказа по 1 шт
Денис Усачев
17 апреля 2023, 17:19
0
Тестировал плагин, Понравился, но а как сделать запись для цены — если используем плагин msOptionsPrice2 таблица modx_msop_modification
Денис Усачев
31 марта 2023, 21:57
0
Помогите разобраться с ieMsOptionsPrice2. Питаюсь экспортировать исключительно опубликованные товары и модификации но в результате экпортирует все товари включая не опубликованные. Настройки 1 и 2 не помагают.
1. Опции — Документ Modx — Только опубликованные: Да
2. Опции — Общие: — where: {«published:=»:1}
Денис Усачев
22 марта 2023, 10:28
0
У меня работает так
<div class="cookie-message js-cookie-message">
    <div class="container">
        <div class="cookie-message-inner">
            <div class="cookie-message-text">
                We use cookies to enhance your experience. 
            </div>
            <button class="button js-cookie-message-confirm">OK</button>
        </div>
    </div>
</div>
<script>
const el = document.querySelector('.js-cookie-message');
    if (!localStorage.getItem('cookieAccept') || localStorage.getItem('cookieAccept') == 0) {
        el.style.display = 'block';
        el.querySelector('.js-cookie-message-confirm').addEventListener('click', (e) => {
            localStorage.setItem('cookieAccept', 1);
            el.style.display = 'none';
        }, true);
    } else {
        el.style.display = 'none';
          
    }
</script>
Денис Усачев
10 марта 2023, 13:16
0
сменить тип опции Диаметр электрода
MiniShop2 -> Settings -> Options
Combobox на Multiple combobox
Денис Усачев
09 марта 2023, 12:09
0
msFavorites.ids
<?php
/** @var array $scriptProperties */
/** @var msFavorites $msFavorites */
if (!$msFavorites = $modx->getService('msfavorites.msFavorites', '', MODX_CORE_PATH . 'components/msfavorites/model/')) {
    return 'Could not load msFavorites class!';
}
/** @var pdoFetch $pdoFetch */
if (!$modx->loadClass('pdofetch', MODX_CORE_PATH . 'components/pdotools/model/pdotools/', false, true)) {
    return false;
}

if (!empty($returnIds)) {
    $return = 'ids';
}
if ($return === 'ids') {
    $returnIds = 1;
}

if (!isset($list) OR $list == '') {
    $list = 'default';
}
if (!isset($type) OR $type == '') {
    $type = 'resource';
}

$list = is_array($list) ? $list : array_map('trim', explode(',', $list));
$rows = $modx->runSnippet('msFavorites.objects', array_merge($scriptProperties, ['return' => 'data', 'list' => $list, 'type' => $type, 'groupKey' => 'list']));
$pls = [
    'list'  => [],
    'total' => [],
];
foreach ($list as $l) {
    $keys = !empty($rows[$l]) ? array_column($rows[$l], 'key') : [];
    $pls['list'][$l] = !empty($keys) ? implode(',', $keys) : '-0';
    $pls['total'][$l] = count($keys);
}
$msFavorites->setPlaceholders($pls);

$log = '';
if ($modx->user->hasSessionContext('mgr') && !empty($showLog)) {
    $log .= '<pre class="msFavoritesLog">' . print_r($pdoFetch->getTime(), 1) . '</pre>';
}
$modx->setPlaceholder('msFavorites.log', $log);

$output = [];
switch ($return) {
    case 'data':
        $output = $pls;
        break;
    case 'json':
        $output = json_encode($pls, true);
        break;
    case 'ids':
    default:
        $output = reset($pls['list']);
        if (!empty($toPlaceholder)) {
            $modx->setPlaceholder($toPlaceholder, $output);
            $output = '';
        }
        break;
}

return $output;
Денис Усачев
09 марта 2023, 11:42
0
1. выдает ровно 10 id [32,46,55,64,73,84,95,105,114,120]

2. pdoPage &limit=`999` ставлю но без изминений,
так как в resources передаю id
&resources=`{'!msFavorites.ids' | snippet}`  
что равно 
&resources=`32,46,55,64,73,84,95,105,114,120`
Денис Усачев
28 февраля 2023, 15:41
0
Есть пример как должен выглядеть шаблон товара со скидкой для вывода в категориях с mFilter2?
Денис Усачев
20 февраля 2023, 17:02
0
может кому будет полезно: конструкция посредством Fenom

{set $baza_filter = $_modx->resource.baza_filter[0]}
{set $baza_color = $_modx->resource.color_filter[0]}
'optionFilters' => ' { "baza_filter":"'~ $baza_filter ~'" , "color_filter":"'~ $baza_color ~'"  } ' ,
Денис Усачев
14 февраля 2023, 11:26
0
цена со скидкой не записана в товар,
она прописана в массив товара плагином Discontrol

как би ?sort=ms|price:asc должен работать с полем [price] или нет?
Денис Усачев
08 февраля 2023, 13:00
0
Походу вам нужно настроить suggestions сниппета mFilter2
Параметры
Денис Усачев
07 февраля 2023, 11:06
0
Здравствуйте.
Подскажите, как заставить корректно работать сортировку по цене ?sort=ms|price:asc mFilter2 + Discontrol
Дело в том что mFilter сортирует без учета цен скидки Discontrol

Обновление версии mFilter -miniShop2 -Discontrol не помогло.
На тестовом сервере modx host та же ситуация. Подозреваю, что такой баг у всех кто использует mFilter2 + Discontrol
Денис Усачев
09 ноября 2021, 19:41
0
решение довольно простое
1. добавляем в чанк шаблон tpl.msEmail конструкцию из Получение и вывод pagetitle от другого ресурса с условием проверки локализации
{if $_modx->config.cultureKey == 'ru'}         
 {set $tTitle =  $product.name}
    {else}
{set $tTitle = 'pdoResources' | snippet : [
    'tpl' => '@INLINE {$pagetitle}',
    'class' => 'localizatorContent',
    'sortby' => 'id',
    'limit' => 1,
    'where' => [
        'key' => ('localizator_key' | option),
        'resource_id' =>  $product.id
    ],
]}
{/if}
и {$product.name} заменяем на наш {$tTitle}

проверяем наш шаблон письма через
{'!msGetOrder' | snippet : [
            'id' => 460, //номер заказа
            'tpl' => 'tpl.msEmail.new.user',
        ]}
Денис Усачев
26 января 2021, 19:33
0
автор решения
Создаем плагин вешаем на событие msOnGetProductFields

<?php
switch($modx->event->name) { 
    case 'msOnGetProductFields':
        $returned_values = & $modx->event->returnedValues;
        $values =  $modx->event->params['data'];
          
        $returned_values['price'] = $values['price'] * 2;
        $returned_values['old_price'] = $values['old_price'] * 3;
 
    	break;
}
Денис Усачев
19 октября 2019, 12:12
0
Вся проблема в версии php 7.2. сменил на 7.1 все заработало.
Денис Усачев
10 октября 2019, 16:15
0
Разобрался. в плагине msSMS строка 47 заменяем на
$mgrMsg = str_replace(array('{cost}', '{order_id}', '{order_num}', '{customer}', '{phone}'), array($order->cost, $order->id, $order->num, $customer, $order->Address->phone), $mgrMsg);
в шаблона смс для менеджера вызов через {phone}
Денис Усачев
10 октября 2019, 15:04
0
к сожалению доступ в тех поддержку исчерпан…