Бесплатная CMS для вашего сайта Разумная альтернатива WordPress

Шорткоды (shortcode)

Это короткие коды, похожие на bb-код и обрабатываются в тексте записи (или произвольном тексте).

Рассмотрим простой пример создания шорткода для вывода SPAN с произвольным css-классом. Шорткод будет вида:

[class t-red]text page[/class]
или
[class=t-red]text page[/class]

что в итоге преобразуется в

<span class="t-red">text page</span>

Отдельный файл шорткода

Удобней всего вынести код шорткода отдельно, например в custom/shortcode/sh.php и подключать в custom/my-template.php

if ($fn = mso_fe('custom/shortcode/sh.php')) require_once $fn;
...

Регистрация шорткода

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

mso_shortcode_add('class', 'my_sh');

где class — и есть шорткод, а my_sh — функция обработчик.

Функция шорткода

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

function my_sh($attr) {
	return  '<span class="' . $attr[1] . '">' . $attr[2] . '</span>';
}
При создании шорткода желательно не использовать аналогичные варианты существующих BB-кодов.

Шорткод с множеством параметров

Шорткод может содержать множество параметров, например:

[lbox mini.jpg title="Титул" class="класс"]full.jpg[/lbox]

В этом случае функция должна самостоятельно выполнить парсинг атрибутов. Для этого можно воспользоваться вспомогательной функцией mso_shortcode_parse()

function my_lbox($attr)
{
	$all = mso_shortcode_parse($attr, array('class'=>'', 'title'=>''));
	pr($all);
	/*
	Array
	(
		[class] => класс
		[title] => Титул
		[content] => full.jpg
		[0] => mini.jpg
	)
	*/	
	...
}

Выполнение шорткода в произвольном тексте

Для того, чтобы обработать текст с использованием шорткода, используется функция mso_shortcode('шорткод', 'имя функции шорткода', 'текст').