Маска для input под номер телефона

Я использую вот эту github.com/RobinHerbots/Inputmask
Для подключения понадобиться 1 файл
<script src="assets/template/vendor/jquery.inputmask.bundle.js"></script>
Инициализацию выполняю так:
$(function() {
    $('[data-mask]').each(function() {
        input = $(this);
        mask = input.attr('data-mask');
        input.inputmask({"mask": mask});
    });
});
В разметке у нужного инпута добавляю аттрибут data-mask и прописываю нужный формат. Например так:
<input type="text" data-mask="+7 (999) 999-99-99" class="result-form__input" placeholder="Телефон">

Плавный переход к элементу

В последнее время стал делать переход через аттрибут тегов. Таким образом не привязываюсь к классу или айдишнику, который могут поменять.
В разметке выглядит таким образом
<div class="header__menu">
    <ul>
        <li><a href="#" data-goto=".about">О компании</a></li>
        <li><a href="#" data-goto=".structure">Наш сервис</a></li>
        <li><a href="#" data-goto=".benefit">Ваши выгоды</a></li>
        <li><a href="#" data-goto=".location">Контакты</a></li>
    </ul>
</div>
Понятно, что можно обращаться через селектор по своему усмотрению, например, к id элемента вот так:
<a href="#" data-goto="#footer">Контакты</a>
Обработчик этого события у меня имеет вот такой вид:
$(function() {
    $('body').on('click', '[data-goto]', function(e) {
        e.preventDefault();
        var selector = $(this).attr('data-goto');
        $('html, body').animate({ scrollTop: $(selector).offset().top}, 1200);
    });
});

Выводим дату на Modx с русским названием месяца

Чтобы не настраивать локаль, да и иногда требуется вывести в том или ином формате, то я
Название: rus_months
Содержимое:
<?php
$months = array(
    'Jan' => 'января',
    'Feb' => 'февраля',
    'Mar' => 'марта',
    'Apr' => 'апреля',
    'May' => 'мая',
    'Jun' => 'июня',
    'Jul' => 'июля',
    'Aug' => 'августа',
    'Sep' => 'сентября',
    'Oct' => 'октября',
    'Nov' => 'ноября',
    'Dec' => 'декабря',
);

return str_replace(array_keys($months), array_values($months), $input);

Если используется Fenom, товыводить даты можно так:
{$doc.publishedon | date : "d M Y" | rus_months}
обязательно должен быть символ «М», так как именно он заменяется на название русского месяца.

Если без Fenom:
[[*publishedon:date=`d M Y`:rus_months]]

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

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

Формируем ссылки поделиться в соцсетях на Modx

Чтобы реализовать функционал «Поделиться в соцсетях» накидал вот такой модификатор:
Имя: share
Содержимое:
<?php
if (empty($input)) {
    return;
}

$host = 'https://share.yandex.net/go.xml?';
$query = array(
    'service' => $input,
    'url' => $modx->makeUrl($modx->resource->get('id'),'','','full'),
    'title' => $modx->resource->get('pagetitle'),
);

return $host . http_build_query($query);

Использую так:

<div class="gallery-share">
    <div class="gallery-share__info">
        Поделиться в соц. сетях:
    </div>
    <a href="{'odnoklassniki' | share}"><img src="/assets/template/images/ok.png" alt=""></a>
    <a href="{'twitter' | share}"><img src="/assets/template/images/twitter.png" alt=""></a>
    <a href="{'facebook' | share}"><img src="/assets/template/images/facebook.png" alt=""></a>
    <a href="{'gplus' | share}"><img src="/assets/template/images/google.png" alt=""></a>
    <a href="{'vkontakte' | share}"><img src="/assets/template/images/vk.png" alt=""></a>
</div>

На фронте получается так:

Модификатор 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}

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