Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 097 комментариев

Prihod
Prihod
@Николай Савин HI.
MODX Revolution 3.1.2-pl
PHP Version 8.2.17
При установки пакета ошибка

Ошибка установки Error в /core/components/minishop3/vendor/autoload.php:25: Class "ComposerAutoloaderInit3b1640e53f347079e7798e5634042fb0" not found
Невозможно установить пакет с подписью: minishop3-1.0.0-alpha.2
Артур Шевченко
Артур Шевченко
при Авторизации или Регистрации
думаю проблема в том, что при авторизации и регистрации меняется идентификатор сессии, рекомендую переключиться на сессии SendIt доступные с версии 2.7.0. В этом случае идентификатор пользователя не будет меняться.
Дима Касаткин
Дима Касаткин
@FastDevLab спасибо за плагин, полезный, и opensouce — класс! Также поздравляю с дебютом — первым (кажется) твоим публичным компонентом!

Позволь подкинуть пару полезностей:

Если захочешь поддерживать более 1 компонента, возможно тебя заинтересует мой вспомогательный инструмент modx-build-environment-gui для сборки сайта.

Также могу порекомендовать переложить все файлы из папки ./_build в папку ./_build/staticfilesplus/ которую, по какому-то недоразумению, упустили в… то ли modExtra, толи в мануале по сборке пакетов… Так сможешь билдить несколько компонентов на одном установленном движке MODX!

P.S. Приятно видеть столько просмотров заметки здесь. К нам SEO-шники подъехали? ;-)
Дима Касаткин
Дима Касаткин
Вижу у вас и StaticElementsLife установлен, не конфликтуют они?
А ваша кнопка включить-отключить кэширование, переключает настройку ++cache_resouce или ещё что-то? Поделитесь как сделали её?
Николай Савин
Николай Савин
Привет Григорий.

Осадочек обоснованный — решение рабочее, но есть несколько моментов, которые стоит обдумать:

Что смущает в текущем фиксе

1. Изменение логики метода.
Оригинальный код при отсутствии сессии возвращал []. Теперь он создаёт сессию. Это может сломать логику в других местах SendIt, которые рассчитывают на пустой ответ как сигнал «сессии нет, нужно что-то сделать».

2. setcookie() без проверки заголовков
Если заголовки уже отправлены — будет ещё один warning.

Минимальный и безопасный фикс
Если цель — просто убрать warning без изменения логики:
$sessionId = $sessionId ?: ($_COOKIE['siSession'] ?? null);

if (!$sessionId || !$session = $modx->getObject('siSession', ['session_id' => $sessionId, 'class_name' => $className])) {
    return [];
}
Это сохраняет оригинальное поведение: нет куки → нет сессии → пустой массив. Создание сессии должно происходить там, где это предусмотрено архитектурой компонента.

Что бы я сделал

Посмотрел бы, где в SendIt сессия создаётся штатно. Скорее всего есть отдельный метод типа createSession() или это происходит при первой отправке формы. Вот там и должна быть логика создания + установки куки.

Твой фикс работает, но ты фактически добавил fallback-создание сессии в метод, который был рассчитан только на чтение. Если форма авторизации/регистрации работает корректно — можно оставить, но я бы откатился к минимальному варианту и понаблюдал.
Павел Романов
Павел Романов
[[*alias]] или [[*id]] выводит соответствующие поля текущего ресурса.
Если посетитель находится на главной — они от нее и выводятся.

Блоки в лендинге. должны выводиться аналогично меню.

[[pdoResources?
  &tpl=`section_tpl`
  &limit=`0`
]]

А в чанке section_tpl уже указывайте [[+id]], [[+alias]], [[+pagetitle]] и т. д. — они будут забираться от выводимых ресурсов
Сергей Самусев
Сергей Самусев
В Сбере поменяли работу с логином и паролем интернет-эквайринга. Теперь они без суфикса -api. И настраиваются в ЛК СберБизнес. (Логин ПШ и ПАроль ПШ).
Сейчас выдаётся ошибка доступа и вместо страницы оплаты идёт переадресация на страницу ошибки оплаты.
Будет ли обновление компонента?