Из-за чего возникает ошибка Could not load config
16 августа 2023, 13:24
Иногда разработчики сталкиваются с ошибкой Could not load config, которая отображается в окне alert на странице. Эту ошибку выводит JavaScript пакета pdoTools при использовании pdoPage (везде, где есть пагинация).
Этот компонент работает через Ajax, и для того, чтобы на каждый Ajax-запрос система могла ответить, она должна знать набор параметров сниппета (tpl, parents и прочее). Но так как запрос приходит в виде Ajax, то сам шаблон страницы уже не парсится. Как узнать параметры? Эти параметры сниппет сохраняет в $_SESSION, а уже JavaScript, который ловит аякс-запрос, оттуда эти параметры «вытаскивает».
Вот could not load config означает, что action.php не нашёл параметры в сессии. Такое бывает, если сессия очищается, если меняется юзер, ну или что-то еще.
Так чт, если сделать в админке «Завершить все сеансы», то юзеры, у которых открыта страница фильтров или списка статей/товаров, будут видеть эту ошибку, пока не перезагрузят страницу.
В обычной ситуации такое может происходить после завершения импорта, например. В этом случае возможно скрипт импорта как-то на сессию пользователя влияет. Например, он может насильно авторизовывать админа, чтобы создать товары или что-то такое.
Читать дальше
Этот компонент работает через Ajax, и для того, чтобы на каждый Ajax-запрос система могла ответить, она должна знать набор параметров сниппета (tpl, parents и прочее). Но так как запрос приходит в виде Ajax, то сам шаблон страницы уже не парсится. Как узнать параметры? Эти параметры сниппет сохраняет в $_SESSION, а уже JavaScript, который ловит аякс-запрос, оттуда эти параметры «вытаскивает».
Вот could not load config означает, что action.php не нашёл параметры в сессии. Такое бывает, если сессия очищается, если меняется юзер, ну или что-то еще.
Так чт, если сделать в админке «Завершить все сеансы», то юзеры, у которых открыта страница фильтров или списка статей/товаров, будут видеть эту ошибку, пока не перезагрузят страницу.
В обычной ситуации такое может происходить после завершения импорта, например. В этом случае возможно скрипт импорта как-то на сессию пользователя влияет. Например, он может насильно авторизовывать админа, чтобы создать товары или что-то такое.
Читать дальше
Создание API для авторизации пользователей в приложениях
28 февраля 2023, 15:25
Иногда при создании приложений для Android и iPhone, а так же для использования в каких-то сторонних сервисах, может потребоваться сделать на сайте простенькое API для разграничения доступа.
Обычно схема этого API такая:
Читать дальше
Обычно схема этого API такая:
- Пользователь вводит в приложении логин и пароль
- Приложение делает запрос к сайту, передавая эти данные
- Сайт проверяет, действительно ли есть пользователь с таким логином и правильно ли указан пароль
- Если всё ок — сайт выдаёт в ответ токен
- Приложение сохраняет этот токен у себя (на телефоне пользователя)
- И при любых обращениях к сайту использует этот токен
- Сайт получает токен и выдаёт контент, который доступен именно для этого пользователя
Читать дальше
Простой AJAX-фильтр для MODX с помощью pdoPage
06 декабря 2018, 13:02
Да, ещё один способ реализации Ajax-фильтра на сайте =)
Начнём с простого вывода на странице обычного списка ресурсов. Обязательно добейтесь, чтобы нормально работала AJAX-пагинация, потому что своих механизмов работы с AJAX мы писать не будем, а будем использовать методы AJAX, которые есть в pdoPage.
Читать дальше
Начнём с простого вывода на странице обычного списка ресурсов. Обязательно добейтесь, чтобы нормально работала AJAX-пагинация, потому что своих механизмов работы с AJAX мы писать не будем, а будем использовать методы AJAX, которые есть в pdoPage.
<div id="pdopage"> <div class="rows row"> {'!pdoPage' | snippet : [ 'ajaxMode' => 'default', 'parents' => 0, 'limit' => 3, 'includeTVs' => 'height,weight,speed_type,price', 'tvPrefix' => '', 'tpl' => '@INLINE <div class="col-sm-6 col-md-4"> <div class="thumbnail"> <div class="caption"> <h4>{$pagetitle}</h4> <p>Вес: {$weight}</p> <p>Высота: {$height}</p> <p>Тип: {$speed_type}</p> </div> </div> </div>', ]} </div> {'page.nav' | placeholder} </div>
Читать дальше
Давайте-ка потестируем PR в репозитории MODX
13 августа 2018, 15:52
Ну что, поможем с пулл-реквестами для MODX 3?
Создаём у себя на хостинге новый пустой сайт и пустую базу данных. Версию PHP поставьте 7.1. После этого подключаемся к серверу по SSH (с помощью Putty, например). На хостинге Beget есть SSH прямо в личном кабинете:
Заходим в корень новой пустой папки и скачиваем MODX с гитхаба:
Читать дальше
Создаём у себя на хостинге новый пустой сайт и пустую базу данных. Версию PHP поставьте 7.1. После этого подключаемся к серверу по SSH (с помощью Putty, например). На хостинге Beget есть SSH прямо в личном кабинете:
Заходим в корень новой пустой папки и скачиваем MODX с гитхаба:
cd modx-test.dev/public_html/ rm -rf * git clone https://github.com/modxcms/revolution .
Читать дальше
Сжатие картинок с помощью сервиса OptiPic
11 декабря 2017, 15:46
OptiPic.io — это сервис оптимизации изображений для сайтов. Дополнение OptiPic реализует интеграцию сайта MODX с этим сервисом. Чтобы оптимизировать картинки, например, при выводе через pdoResources, добавьте сниппет optipic в список фильтров ввода вывода:
Читать дальше
<h4>[[+pagetitle]]</h4> <img src="[[+tv.image:phpthumbon=`w=350&h=180&zc=1`:optipic]]" alt="[[+longtitle]]">
Читать дальше
Защита от спама формы на AjaxForm
08 августа 2017, 10:59
У FormIt есть стандартный функционал защиты от спама — проверка любого поля на пустоту. Если робот-спамер заполнит такое поле, то письмо не будет отправлено.
Единственный минус этого способа в том, что ответ от сервера приходит с ошибкой валидации — по ответу сразу видно, что письмо не отправлено и нужно робота перенастроить.
В итоге такой способ задерживает меньше спама, чем мог бы.
Читать дальше
Единственный минус этого способа в том, что ответ от сервера приходит с ошибкой валидации — по ответу сразу видно, что письмо не отправлено и нужно робота перенастроить.
В итоге такой способ задерживает меньше спама, чем мог бы.
Читать дальше
Работа с полями ресурса после сохранения (пример создания плагина)
05 августа 2017, 10:17
В MODX существует система плагинов и событий. Одно из интересных событий — OnDocFormSave. Это событие на сохранение ресурса.
Простыми словами — если мы создадим плагин, у которого отметим на вкладке «Системные события» галочку OnDocFormSave, то код этого плагина будет запущен после сохранения любого ресурса.
В коде плагина мы легко можем определить, какой ресурс был сохранён — только что созданный или уже существовавший ранее. Это нужно, если мы захотим обрабатывать только поля новых ресурсов, но ничего не менять, если в ресурс просто вносятся какие-то изменения. Для этой цели MODX передаёт нам параметр $mode:
Читать дальше
Простыми словами — если мы создадим плагин, у которого отметим на вкладке «Системные события» галочку OnDocFormSave, то код этого плагина будет запущен после сохранения любого ресурса.
В коде плагина мы легко можем определить, какой ресурс был сохранён — только что созданный или уже существовавший ранее. Это нужно, если мы захотим обрабатывать только поля новых ресурсов, но ничего не менять, если в ресурс просто вносятся какие-то изменения. Для этой цели MODX передаёт нам параметр $mode:
<?php if ($mode == 'new') { // Здесь пишем наш код }
Читать дальше
Простой список избранного для MODX
06 июля 2017, 15:58
Ещё один пример использования customExtra — на этот раз для реализации избранного для зарегистрированных пользователей на сайте.
Сниппет написан на скорую руку, по идее нужно оформление выносить в чанки, добавлять возможность менять параметры сниппета. Кроме того, сниппет не предназначен для вызова в списке статей — только на странице конкретной статьи.
Читать дальше
Сниппет написан на скорую руку, по идее нужно оформление выносить в чанки, добавлять возможность менять параметры сниппета. Кроме того, сниппет не предназначен для вызова в списке статей — только на странице конкретной статьи.
<?php // Избранное доступно только для авторизованных пользователей if (!$modx->user->id) return; // Иконка и подсказка по умолчанию $icon = 'fa fa-star-o'; $title = 'Добавить в избранное'; // Флаг наличия статьи в избранном $in_fav = false; // ...
Читать дальше
MODX и Isotope - фильтрация блоков на странице
28 июня 2017, 09:42
Isotope — это jQuery плагин, который позволяет фильтровать группу блоков, сортировать блоки и располагать их, например, плиткой.
Для того, чтобы фильтрация заработала, у блоков нужно проставить соответствующие классы. Если мы хотим сделать фильтрацию, например, проектов в портфолио, то сами проекты могут быть отдельными ресурсами, а вот категории могут быть тегами.
Для тегов есть очень удобное дополнение от Павла Гвоздя — tvSuperSelect. Будем использовать его для распределения проектов по категориям.
Читать дальше
Для того, чтобы фильтрация заработала, у блоков нужно проставить соответствующие классы. Если мы хотим сделать фильтрацию, например, проектов в портфолио, то сами проекты могут быть отдельными ресурсами, а вот категории могут быть тегами.
Для тегов есть очень удобное дополнение от Павла Гвоздя — tvSuperSelect. Будем использовать его для распределения проектов по категориям.
Читать дальше
Генерируем картинку для статьи из её заголовка
09 июня 2017, 17:34
Чтобы раздел статей не был сборищем одинаковых превьюшек, можно использовать такой сниппет. Он берёт фоновую картинку, поверх неё пишет заголовок статьи и сохраняет получившийся файл. Превьюшки могут выглядеть как-то так:
Читать дальше
Читать дальше