Примеры реализации однотипных задач на разных проектах
  • Дата создания
    25 октября 2018
  • Топиков
    16
  • Ограничение на постинг
    0.000

Защита от СПАМа AjaxForm

Данное решение было написано спонтанно, так как заказчику требовалось срочно решить проблему со СПАМом, а рекапчу и вовсе хотелось убрать. Посмотрев, что уже было сделано, понял, что скрытое поле, которое должен был заполнить Бот и на этом попасться уже использовали, а рекапчу хотят убрать, применил такое решение:
В форму добавляется скрытое поле. При загрузке страницы, происходит ajax запрос на сервер и получается уникальный код. Ajax запрос отсечет ботов, которые не открывают страницу в браузере, а соответственно и не выполняют javascript код. Генерируемый сервером код, также помещаем в переменную сессии и при валидации формы сверяем заполненный код и код из сессии.
Читать дальше

Модификатор Fenom для форматирование цены в формате minishop2

Для вывода цены в денежном формате (отделением тысяч) использую модификатор, который берет настройку формата из системной настройки minishop2


берет настройку отсюда


Название сниппета price_format
Содержимое:
<?php
$price = str_replace(',','.',$input);
$options = json_decode($modx->getOption('ms2_price_format'));
if (is_array($options)) {
    return number_format($price, $options[0], $options[1], $options[2]);
} else {
    return $price;
}

Использую вот так:
{$doc.price_tv | price_format}

Модификатор Fenom для номера телефона

Постоянно в проектах требуется вывести ссылку на телефон для быстрого набора номер. А номер телефона хранится в какой-нибудь переменной и с лишними символами — скобки, тире, пробелы. Чтобы их вырезать и не захламлять код, я использую модификатор fenom — tel.
Т.е. чтобы получить вот такой html код

<a href="tel:8800260000">8(800)260-00-00</a>
я делаю так

<a href="tel:{$_modx->config.phone | tel}">{$_modx->config.phone}</a>
где в переменной $_modx->config.phone содержится номер «8(800)260-00-00».
tel — это сниппет, со следующим кодом

<?php
$input = preg_replace('#[\(\)\s-]#siU', '', $input);
return $input;

Сокращаем обращение к переменной Femon

Я сайты собираю сейчас только с применением Fenom. Это жутко удобно, красиво, легко читаемо и легко писать всевозжожные фильтры-обработчики переменных.
Но что мне сразу не понравилось, так это достаточно длинное обращение к переменной ресурса.
Например, чтобы вывести pagetitle, нужно добавить
{$_modx->resource.pagetitle}
Я на своих сайтах делаю такую штуку. Добавляю в начале основного шаблона
{set $doc = $_modx->resource}
И дальше получение заголовка выглядит так
{$doc.pagetitle}

В шаблоне это выглядит так:


Как использовать Cache для хранения данных

Чтобы использовать родной функционал MODx REVO для работы с кешем, достаточно знать некоторые простые функции. При этом будет задействован родной функционал очистки кеша из админке.
Применял такой подход при реализации кастомной доставки для minishop2
Читать дальше