Наверх

Советы и решения

Из-за чего возникает ошибка 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 не нашёл параметры в сессии. Такое бывает, если сессия очищается, если меняется юзер, ну или что-то еще.

Так чт, если сделать в админке «Завершить все сеансы», то юзеры, у которых открыта страница фильтров или списка статей/товаров, будут видеть эту ошибку, пока не перезагрузят страницу.

В обычной ситуации такое может происходить после завершения импорта, например. В этом случае возможно скрипт импорта как-то на сессию пользователя влияет. Например, он может насильно авторизовывать админа, чтобы создать товары или что-то такое.

Читать дальше

Создание API для авторизации пользователей в приложениях

28 февраля 2023, 15:25

Иногда при создании приложений для Android и iPhone, а так же для использования в каких-то сторонних сервисах, может потребоваться сделать на сайте простенькое API для разграничения доступа.

Обычно схема этого API такая:

  • Пользователь вводит в приложении логин и пароль
  • Приложение делает запрос к сайту, передавая эти данные
  • Сайт проверяет, действительно ли есть пользователь с таким логином и правильно ли указан пароль
  • Если всё ок — сайт выдаёт в ответ токен
  • Приложение сохраняет этот токен у себя (на телефоне пользователя)
  • И при любых обращениях к сайту использует этот токен
  • Сайт получает токен и выдаёт контент, который доступен именно для этого пользователя

Читать дальше

Простой AJAX-фильтр для MODX с помощью pdoPage

06 декабря 2018, 13:02

Да, ещё один способ реализации Ajax-фильтра на сайте =)

Начнём с простого вывода на странице обычного списка ресурсов. Обязательно добейтесь, чтобы нормально работала 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 с гитхаба:
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:
<?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 плагин, который позволяет фильтровать группу блоков, сортировать блоки и располагать их, например, плиткой.

Isotope

Для того, чтобы фильтрация заработала, у блоков нужно проставить соответствующие классы. Если мы хотим сделать фильтрацию, например, проектов в портфолио, то сами проекты могут быть отдельными ресурсами, а вот категории могут быть тегами.

Для тегов есть очень удобное дополнение от Павла Гвоздя — tvSuperSelect. Будем использовать его для распределения проектов по категориям.
Читать дальше

Генерируем картинку для статьи из её заголовка

09 июня 2017, 17:34

Чтобы раздел статей не был сборищем одинаковых превьюшек, можно использовать такой сниппет. Он берёт фоновую картинку, поверх неё пишет заголовок статьи и сохраняет получившийся файл. Превьюшки могут выглядеть как-то так:

Читать дальше

Авторизация

через сервис Loginza:


Шаблоны MODX

1 2 Дальше »

Объектная
модель
MODX