Всего 125 948 комментариев

deleted
27 мая 2022, 01:55
0
javascript.info/dispatch-events#bubbling-example
Если честно, про bubbles сам не особо понимаю, просто опытным путём выяснил, что так работает)
Дмитрий
27 мая 2022, 00:15
0
Скажите, пожалуйста, есть ли источник, где можно про это почитать (в частности про bubbles)?
Дмитрий
27 мая 2022, 00:02
0
Заработало, спасибо большое!
Дмитрий
27 мая 2022, 00:01
0
Кнопка в форме отвечает за отправку заказа, а суть в том, чтобы цена менялась динамически при нажатии на + или — (тег span .input-group-text)
deleted
26 мая 2022, 23:57
+1
Попробуйте так: el.dispatchEvent(new Event('change', {'bubbles': true})))
Можно попробовать событие вешать на форму, а не на инпут
Станислав
26 мая 2022, 23:51
0
Клик на кнопку
<button style="display:none;" type="submit" name="ms2_action" value="cart/change"></button>
делаете и все
Дмитрий
26 мая 2022, 23:35
0
Станислав, спасибо, но суть задачи именно переписать на ванильный JS, без использования jQuery, я бы попробовал переписать Ваш код, но у Вас тоже есть эта функция trigger, аналог которой я все не могу найти
Станислав
26 мая 2022, 23:25
0
Вот пример рабочего кода, меняется классы и все будет работать!
<form method="post" class="ms2_form form-inline" role="form">
                                    <input type="hidden" name="key" value="{$product.key}"/>
                                    <div class="cart-product-quantity">
                                        <div class="quantity">
                                            <span class="minus countButton" data-ms2-count="minus"></span>
                                            <input type="text" class="qty count" value="{$product.count}" name="count" max="100">
                                            <span class="plus countButton" data-ms2-count="plus"></span>
                                        </div>
                                    </div>
                                    <button style="display:none;" type="submit" name="ms2_action" value="cart/change"></button>
                                </form>
<th class="total_cost">
                        <span class="ms2_total_cost">{$total.cost}</span>
                        {'ms2_frontend_currency' | lexicon}
                    </th>
<script>
    $('body').on('click', '.quantity .control', function (e) {
        var type = $(this).parent(),
            input = $(this).siblings('input.count'),
            count = input.val();
    
        if ($(this).hasClass('plus')) {
            count++;
        } else if ($(this).hasClass('minus') && count > 1) {
            count--;
        }
        input.val(count);
        input.change();
    });
    $(document)
    .on('click touchend', ".countButton", function (e) {
        e.preventDefault();
        var $container = $(this).closest('.ms2_form'),
        $count = $container.find('[name="count"]'),
        num = $count.val();
        if (isNaN(num) === false) {
            num = parseInt(num, 10);
            switch ($(this).data('ms2-count')) {
                case 'plus':
                    num = num + 1;
                    $count.val(num);
                    break;
                case 'minus':
                    if (num <= 1) return;
                    num = num - 1;
                    $count.val(num);
                    break;
            }
        } else {
            return false;
        }
        $count.trigger('change');
    })
    .on('change keypress keyup', '.ms2_form [name="count"]', function() {
        if ($(this).val().match(/\D/)) {
            this.value = $(this).val().replace(/\D/g,'');
        }
        if (parseInt($(this).val(), 10) < 1) {
            this.value = 1;
        }
    });
</script>
Alexey
26 мая 2022, 22:40
0
В общем, как говорилось: «Дело было не в бобине»… закинул полученный в логе SQL-запрос прямо в PMA, результат тот же. Для проверки закинул этот SQL-запрос на другой сервер другой учетки, с другим сервером MYSQL, там всё корректно отработало. Вот сижу и думаю, что не так с reg.ru? Версии обоих mysql-серверов одинаковые.
steve.kon
26 мая 2022, 18:10
0
Сработало! Спасибо большое!!!
Артур Шевченко
26 мая 2022, 17:59
+1
А в системных настройках по этому ключу upload_files пробовал добавлять?
Alexey
26 мая 2022, 17:33
0
Наткнулся на странность. Вызываю сниппет:

{'msProducts' | snippet : [
    'parents' => 0,
    'limit' => 10,
    'resources' => $_modx->resource.other_goods,
    'sortby' => '',
    'includeThumbs' => 'medium',
    'showLog' => 0,
    'tpl' => 'other_goods_tpl'
]}

где $_modx->resource.other_goods — список id товаров через запятую. Если у товара фоток в галерее более одной, то выводятся дубли товара (по количеству фоток) — skrinshoter.ru/s/260522/DkEW9p6p?a.

Посмотрел логи — skrinshoter.ru/s/260522/EyIzRmHX?a — группирует по превью галерее. Помогло, когда закомментил строку 67 в сниппете msProducts — skrinshoter.ru/s/260522/VQZzCu16. В старой версии minishop2 у сниппета эта строка тоже есть, поэтому явно дело не в этом…
Futuris
26 мая 2022, 12:54
0
Спасибо! Разобрался с вашей помощью, все теперь отслеживается!
Олег
26 мая 2022, 12:02
0
и в pdoCrumbs всегда выводится только одна категория
Alexey
26 мая 2022, 11:58
+1
В js-файл. Это обычный js-код, который срабатывает на событие «msoneclick_after_sendorder», которое инициируется компонентом msOneClick в случае успешной отправки формы. Главное, чтобы этот кусок кода был добавлен после подключения jquery.
Олег
26 мая 2022, 11:29
0
Еще один вопрос:
В меню всегда активной категорией отображается та, в которой файлы находятся физически.
т.е. если товар отображается в нескольких категориях и я захожу в него через разные категории, то в меню активным выделяется всегда один и тот же раздел.

Может тут есть что-то готовое?
Futuris
26 мая 2022, 10:41
0
Спасибо! А куда нужно добавить это событие (msoneclick_after_sendorder)?
Anton
26 мая 2022, 00:03
1
+2
Привет.
Вот решение:
github.com/modx-pro/pdoTools/issues/329#issuecomment-1126893229

/core/src/Revolution/Sources/modMediaSource.php ~1400
<?php 
/**
    * Parse any tags in the properties
    *
    * @param array $properties
    *
    * @return array
*/
public function parseProperties(array $properties)
{
    if (empty($properties)) {
        $properties = $this->getProperties();
    }       
    // $this->xpdo->getParser();
    // if ($this->xpdo->parser) {
    //     foreach ($properties as &$property) {
    //         $this->xpdo->parser->processElementTags('', $property['value'], true, true);
    //     }
    // }

    return $properties;
}```