Задать вопрос
Ответы пользователя по тегу MODX
  • Как реализовать функцию выбота размера товара в MiniShop2?

    pro100taa
    @pro100taa
    Реализовать по-разному можно. В зависимости от того что хотите в итоге получить.

    Если вам надо, чтобы цена выводилась на экране в зависимости от выбора размера, то можно через ТВ поля + js код для калькулятора.

    Если надо, чтобы это все в корзину подтягивалось - тогда через опции Минишоп2.
    Ответ написан
  • Как сделать отложенную загрузку сниппета?

    pro100taa
    @pro100taa Автор вопроса
    С помощью FB решил так проблему. Может быть кому-то пригодиться.

    document.addEventListener('submit', function (e) {
        // Проверяем, что событие произошло на форме с id="mod"
        if (e.target && e.target.id === 'mod') {
            e.preventDefault(); // Предотвращаем отправку формы
    
            // Функция для получения значения куки
            const getCookie = (name) => {
                const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
                return match ? match[2] : 'nocookie';
            };
    
            // Функция для преобразования `_ym_d` в формат "дд.мм.гггг"
            const formatYmDate = (cookieValue) => {
                const timestamp = parseInt(cookieValue, 10); // Преобразуем в число
                if (!isNaN(timestamp) && timestamp > 0) {
                    // Конвертируем в формат "дд.мм.гггг"
                    const date = new Date(timestamp * 1000); // Умножаем на 1000, так как timestamp в секундах
                    return date.toLocaleDateString('ru-RU', {
                        day: '2-digit',
                        month: '2-digit',
                        year: 'numeric'
                    });
                }
                return 'nocookie';
            };
    
            // Устанавливаем значения скрытых полей
            e.target.querySelector('#getRoistatCookie').value = getCookie('roistat_visit');
            e.target.querySelector('#getyaClientID').value = getCookie('_ym_uid');
            e.target.querySelector('#getsession_id').value = getCookie('PHPSESSID');
            e.target.querySelector('#getclient_id').value = getCookie('_ga');
            e.target.querySelector('#get_ym_d').value = formatYmDate(getCookie('_ym_d')); // Преобразуем `_ym_d`
            e.target.querySelector('#get_ym_isad').value = getCookie('yandex_login');
    
            // Отправляем форму через Fetch API
            const formData = new FormData(e.target);
            fetch(e.target.action, {
                method: 'POST',
                body: formData,
            })
                .then(response => response.text())
                .then(data => {
                    console.log('Ответ сервера:', data);
                    alert('Спасибо, ваша заявка отправлена!');
                })
                .catch(error => console.error('Ошибка:', error));
        }
    });
    Ответ написан
    Комментировать