Разработка сайтов

Код сниппета «year» следующий (см. синтаксис языка PHP):

<?php
echo date('Y');

Создание сниппета year

 

“?>” прописывать не нужно. Если пропишите, то парсер MODX всё равно её проигнорирует. В принципе, и объявление PHP скрипта в виде “<?php” можно не прописывать, код будет исполняться корректно и без этого. Но для наглядности я привык прописывать это указание на то, что перед нами скрипт на языке PHP.

Если вы используете парсер fenom и у вас включена настройка pdotools_fenom_php, то вы можете вывести текущий год так.

{'' | date : 'Y'}

Вызов сниппета

Вывод сниппетов аналогичен чанкам, для вызова не кэшируемого сниппета используем :

Copyright 2019 -  . Все права защищены.

В код выведется: Copyright 2019-2020 Название сайта. Все права защищены.

Где название сайта берется из системных настроек: site_name

Если нужен не кэшируемый вывод, то вызывается всегда по аналогии — с восклицательным знаком вначале [.

Вышеприведенный код на fenom.

Copyright 2019 - {'year' | snippet} {$_modx->config.site_name}. Все права защищены.
или
Copyright 2019 - {'' | date : 'Y'} {$_modx->config.site_name}. Все права защищены.

Параметры

Сниппеты могут иметь параметры — php-переменные, которые можно инициализировать во время вызова.
Например усложним код нашего сниппета, до

<?php
$year = date("Y");
if($year == $start) {
	return $year;
} else {
return ''.$start.' – '.$year.'';
}

Здесь мы добавили параметр start, следовательно, можем указать:

Copyright  . Все права защищены.

В код выведется то же самое, что и в предыдущем случае.

Указываются параметры в вызове сниппета после знака вопроса (?).

В случае с феном вызов будет следующим.

{'year' | snippet : [
    'start' => '2019'
]}

Если вы не знаете PHP особо не переживайте, его знание для создания среднестатистического сайта не требуется. Тем более есть куча готовых решений.

Подборка полезных мини сниппетов для разработчиков

Красивый вывод цифр (цен) с пробелами, используя php number_format

Вариант 1. (numformat)

<?php
if(strlen($input)==0) return '';
$input = floatval(str_replace(array(' ',','), array('','.'), $input));
return number_format($input,(floor($input) == $input ? 0 : 2),'.',' ');

Использование:

Было: 33354567
Стало: 33 354 567

Вариант 2. (nPrice)

<?php
if ($price == "")
$price_output =  $modx->resource->getTVValue('Price');
else
$price_output = $price;
return number_format($price_output, 0, '', ' ' );

Использование:

В месте, где у Вас выводится цифровое поле (цена), вставляем (пусть будет TV с именем price):

[[nPrice?price=``]]

Ну или если у вас магазин на minishop2 то, вместо вывода пишем:

[[nPrice?price=``]]

Удаляем последний символ в строке

last

<?php
return mb_substr($input, 0, -1);

Примечание: Полезно при формировании каких-либо последовательностей (например, ID ресурсов через запятую), у которой последний символ вызывает ошибку.

Использование:

Было: 33,35,45,67,
Стало: 33,35,45,67

Формирование корректной ссылки с атрибутом tel при выводе телефона на сайте

phone

<?php
$p1 = array(" ", "-", "(", ")");
$p2 = array("", "", "", "");
return str_replace($p1, $p2, $input);

Примечание: Удаляются скобки, дефисы и т. д.

Использование:

<a href="tel:"></a>

на fenom можно без создания сниппета вывести, так.

<a href="tel:{$_modx->config.phone  | preg_replace : '/[^0-9+]/' : ''}"> {$_modx->config.phone}</a>

Было: 8 (927) 778-45-45
Стало: 89277784545

Склоняем числовые определения

plural

<?php
if($n!=''){
$plural = $n%10==1&&$n%100!=11?$w1:($n%10>=2&&$n%10<=4&&($n%100<10||$n%100>=20)?$w2:$w3);
return $plural;
}

Примечание: Данное решение позволяет склонять числовые определения. То есть, не «1 штук», а «1 штука», «3 штуки» и т. д. 

Использование:

Убирает лишние символы в строке

title

<?php
$str = preg_replace ("#([^=])\"([^\"]+)\"#", "\\1«\\2»", $input);
return str_replace('&', '', $str);

Данный снииппет полезен тем, что зачастую заказчики в pagetitle вводят название ресурса типа О компании «Рога и копыта» и в код выводятся двойные кавычки, если такие кавычки вывести в meta или в img, например так:

<img src="" alt=""/>

выведется:

<img src="путь к изображению" alt="О компании "Рога и копыта""/>

Получаются двойные кавычки, что приводит к ошибкам.

Данный модификатор заменяет кавычки на «» и дополнительно убивает символ &.

Использование:

<img src="" alt="" />

Запись в сессию и вывода значения какой-либо переменной

getGet

<?php
$get = htmlentities(trim(strip_tags((string) $_GET[$var])), ENT_QUOTES, 'UTF-8', false);
session_start();
if ($get == '' ) {
return $_SESSION[$var];
}
else {
$_SESSION[$var] = $get;
return $_SESSION[$var];
}

Для чего он: Например нужно передать на страницу формы заказа название товара, на котором нажата ссылка «Купить».

Примечание: Можно в первой строке вместо $GET[$var] прописать $_REQUEST[$var] — тогда будет работать и с GET и с POST.

Использование:
Ссылка:

<a href="[[~id? &item=``]]">Заказать</a>

В форме:

<input type="hidden" name="item" value="" />

Поскольку всё пишется в сессию, значение подставляется и при перезагрузке страницы после, к примеру, не прошедшей валидацию, формы.

MODX сниппет

Разработка сайтов в Минске

Введите код с картинки:
Введите код

Заказать сайт