Константин Ильин

Константин Ильин

Был в сети 22 октября 2025, 18:41
Заказы принимаю
не для текущего ресурса. Хоть где выводи msGallery, будет выводить именно тот pagetitle ресурса(товара) к которому принадлежит файл.

Другое дело если, вам надо вывести pagetitle текущего ресурса, к которому файл не относится, то надо так:
{$_modx->resource.pagetitle | htmlent}
Ну и скорее всего вы обманываете всех, вы используете ms2Gallery, а не msGallery.

там уже другой код
{$file['resource_id'] | resource : 'pagetitle' | htmlent}
База верстки. На одно странице не должно быть 2 или более элемента с одинаковым id.
У вас получается #form-fields и #form-thanks 2е штуки т.к. две формы. Надо перейти на классы и работать с конкретной формой, а не глобально.

<form action="[[~[[*id]]]]" method="post" id="callbackform" class="ajax_form">
			<div class="form-fields">
				<input type="text" id="fr_name" name="name" value="[[+fi.name]]">
				<input type="text" id="fr_phone" name="phone" class="m-phones" value="[[+fi.phone]]" required="">
				<input type="submit" class="btn" data-default="Заказать звонок" value="Заказать звонок">
			</div>
			<div class="form-thanks" style="display: none;">
				<span class="title">Спасибо за ваше обращение!</span>
				<p>Мы свяжемся с Вами в ближайшее время.</p>
			</div>
		</form>

js вроде так, с jquery давно не работал
if (form.attr('id') == 'callbackform') {
    $(form).find(".form-fields").fadeOut();
    $(form).find(".form-thanks").fadeIn();
}
он нормально работает под 7кой

Логи ошибок смотрите, там обязательно что-то есть

обновление минишоп чревато с такой разницей в версиях, скажем так процесс обновления может аукнуться, насколько помню там есть значительные изменения, лучше разобраться со скриптом.
Тоже столкнулся с такой проблемой, не понимал откуда спам. Стоял AjaxForm, поменял на FetchIt один фиг через день началось.
Как вариант конечно создать дубликат action.php, назвать аля fsdfjsfjsoidfjsofsdofsd.php, заменить везде обращения action.php на новый файл. в оригинальном action.php return можно какую то ошибку все время возвращать для правдоподобности.

Но если прям всерьез взялись за атаку, то и этот файл быстро найдут, посмотрят куда отправляются запросы.
При правильной настройке ошибок типа «Повторная отправка формы через ** секунд» быть не должно
При правильной настройки SendIt или FlatFilters?

Это решается удаление пути к файлам стилей из системной настройки.
Я в целом так и подумал(т.к. имею опыт), да я мог бы и в плагине найти строчку или еще как то, т.к. умею, но обычным пользователям же нужно: вызвало и чтоб заработало :)
Чуть и я напишу
Попробовал установить, так скажем быстрый старт вроде норм, сам компонент запустился, но не фильтровал, оно понятно не было SendIt.

Пошел устанавливать SendIt, открываю страницу, а там начинается ад из сообщений «Повторная отправка формы через ** секунд»
disk.yandex.ru/i/89ZDlaiewiKMUA

Css от SendIt изменяет css сайта, первое, что бросилось в глаза размер .container увеличился
В журнале ошибки disk.yandex.ru/i/4sV0-QJWMNpByA

— сам вызов и настройка вроде хорошо-просто
— страница открывается быстро

К чему я это все, эта зависимость от SendIt удручает. На готовых сайтах могут проблемы от обязанности использовать SendIt. Наврно должен быть свой JS
После загрузки модального окна делаю так:
let a = document.querySelector(".modalTmp form").getAttribute('data-fetchit')
        FetchIt.create({
            action: a,
            assetsUrl: "/assets/components/fetchit/",
            actionUrl: "/assets/components/fetchit/action.php",
            inputInvalidClass: "is-invalid",
            customInvalidClass: "",
            clearFieldsOnSuccess: false,
            pageId: 1,
        });
пока такой костыль, но работает

а, еще чтобы FetchIt был подключен всегда и объявлена переменная FetchIt до запуска вышенаписанного кода, в футере например вызываю пустой FetchIt
{'!FetchIt' | snippet : ['form' => '@INLINE <div class="modalTmp"></div>']}
JS запрос к request.php(куда хотите его кладите в нем подключение index путь правьте), можете этот запрос повесить на клик кнопки
p = new URLSearchParams();
//тут передаем какие то параметры
p.set('action', 'runSnippet');
p.set('blabla', '1212');

fetch('/request.php', {
    method: 'POST',
    body: p
})
.then((response) => {
    return response.json();
})
.then(( r ) => {
    console.log( r);
   // тут получает ответ, делайте что угодно, например:
    document.querySelector('body').html(r.out);
});
PHP request.php
if(empty($_POST['action'])){
    return;
}

define('MODX_API_MODE', true);
require 'index.php';
$pdo = $modx->getService('pdoTools');
$resp = [
    'success' => 1
];
switch ($_POST['action']){
    case 'runSnippet':
        $resp['out'] = $modx->runSnippet('snippetBla', [ 'parents' => 1111] );
        echo json_encode($resp);return;
    break;
}
Приветствую!
создал ТВ, в нем определенный путь хранения (/img/upload/*resid*/). Через админку все ок, закинул — загрузилось.

А как через апи это делать? Смотрел в сторону runProcessor, посмотрел upload, но что-то не сообразил какие параметры передавать