Наверх

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

Защита от спама формы на 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

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

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

Как избавиться от большого количества шаблонов в MODX

08 июня 2017, 18:52

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


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

Файловый менеджер для WEB — SPRUT.io

15 января 2016, 11:56

Многие знают, что я давно работаю с хостингом BEGET.RU и всем его советую. Сегодня я увидел, что на моём любимом хостинге проводится розыгрыш, главным условием которого было порекомендовать сервис хостинга, написав статью в блоге. Поэтому я решил рассказать о файловом менеджере, разработанном в компании Бегет.

Сначала небольшая справка. Компания ООО «Бегет» — это российский хостинг. Сервера находятся у нас. Раньше это был только Санкт-Петербург, сейчас, насколько я знаю, география расширена. MODX на хостинге работает отлично, а цены порадуют многих. Тем более, что первый месяц использования любого тарифа абсолютно бесплатный.
Читать дальше

Реализуем пагинацию без GET-параметров в URL

11 ноября 2015, 15:22

Иногда требуется, чтобы ссылки постраничной навигации выглядели как-то так:
http://site.ru/articles/2.html
http://site.ru/articles/3.html
http://site.ru/articles/4.html
MODX с такой задачей справляется довольно легко.

Необходимо только поправить ссылки в сниппете, например, pdoPage:
&tplPage=`@INLINE <li><a href="[[~[[*id]]]][[+pageNo]].html">[[+pageNo]]</a></li>`
&tplPageActive=`@INLINE <li class="active"><a href="[[~[[*id]]]][[+pageNo]].html">[[+pageNo]]</a></li>`
&tplPageFirst=`@INLINE <li class="control"><a href="[[~[[*id]]]][[+pageNo]].html">Первая</a></li>`
&tplPageLast=`@INLINE <li class="control"><a href="[[~[[*id]]]][[+pageNo]].html">Последняя</a></li>`
&tplPagePrev=`@INLINE <li class="control"><a href="[[~[[*id]]]][[+pageNo]].html">«</a></li>`
&tplPageNext=`@INLINE <li class="control"><a href="[[~[[*id]]]][[+pageNo]].html">»</a></li>`
И создать плагин, указав события OnPageNotFound и OnHandleRequest:
Читать дальше

Использование предустановленных шаблонов для TinyMCE

06 августа 2015, 11:20

Сегодня с помощью Артура Цыбы обнаружил в TinyMCE интересную фишку.

Оказывается, этот редактор позволяет заранее подготовить набор блоков, которые в дальнейшем смогут использовать пользователи (контент-менеджеры).

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

Разбор кода начинающего программиста сниппетов MODX

16 июня 2015, 13:50

Сегодня мне пришло письмо с просьбой посмотреть код сниппета «и своим комментарием подтолкнуть в нужную сторону».

Я решил ответить на это письмо статьёй, так как многим начинающим программистам будет интересно эти комментарии почитать.

Автор учится писать сниппеты для MODX и для примера поставил себе задачу написать относительно простой сниппет для вывода меню сайта.

Чтобы не раздувать статью буду давать ссылки на версии файла на Github. И вот с чего мы начнем: menucreator.php именно этот код автор попросил прокомментировать.
Читать дальше

Авторизация

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

Подписка или RSS

Буду присылать новые статьи — никакого спама



Шаблоны MODX

1 2 Дальше »

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