Так как на сайте могут работать как человекопонятные ссылки, так и параметрические, возникает вопрос: "В каком виде вставлять ссылки в окне редактирования?"
Если вы вставите ЧПУ-ссылку и через некоторое время смените алиас данной целевой страницы или ее предка, ссылка перестанет работать.
Если применять в тексте параметрические ссылки, то при включенном режиме ЧПУ будет происходить перенаправление на человекопонятную ссылку. Этот вариант лучше, но он также не идеален с точки зрения SEO.
Для решения этой проблемы для текстовых полей было введено автоматическое преобразование URL в нужный формат.
$fields['reconvert-url'] = [1, 2];
Если поле varchar или text находится в перечне параметра reconvert-url, то при вставке внутренней ссылки в любом виде (в параметрическом или человекопонятном, в абсолютном или относительно корня сайта) она будет сохранена в параметрическом виде относительно корня сайта.
В полях типа text URL должен встречаться только в качестве значения атрибута href. В поле типа varchar должен быть записан только сам URL.
Теперь, при каждом выводе шаблона будет происходить преобразование URL в ЧПУ при условии, что в настройках сайта включен этот режим (режим ЧПУ включается в разделе: Сайт > Настройки сайта)
Пример:
<?php
$types[1]='text';
$types[2]='varchar(255)';
$fields['reconvert-url'] = [1,2];
?>
<?=$dat[1]?> <a href="<?=$dat[2]?>">Подробнее</a> // Применять здесь Router::convert() уже не нужно
Рекомендуется всегда применять параметр reconvert-url для полей типа varchar при хранении URL.
Что касается полей типа text, то если в них хранить большой объем текста, то будет происходить некоторая задержка, так как каждый раз при выводе шаблона этот текст будет сканироваться на предмет наличия ссылок. Большие текстовые поля лучше не включать в массив $fields['reconvert-url'], а использовать описанные ниже способы.
Параметр $fields['reconvert-url'] имеет приоритет над описанными ниже параметрами $fields['convert-url'] и $fields['dont-convert-url'].
При сохранении данных в окне редактирования, внутренние URL (атрибуты a[href] и img[src]), попадающиеся в полях типа tinytext, text, mediumtext, longtext, будут автоматически преобразованы в относительные. Кроме этого, если режим ЧПУ включен, ссылки будут сохраняться в человекопонятном виде, а если режим ЧПУ отключен, ссылки будут сохраняться в параметрическом виде.
URL можно вставлять в любом виде: параметрическом или человекопонятном, абсолютном или относительно главной страницы — в любом случае при сохранении он будет преобразован в заданный формат.
Например, следующий код
<a href="http://bloxcms.net/?page=3"><img src="http://bloxcms.net/xfiles/more.png" /></a>
после сохранения, окажется таким:
<a href="o-kompanii/"><img src="xfiles/more.png" /></a>
Если необходимо отменить эти преобразования, то нужно перечислить соответствующие поля в массиве dont-convert-url:
.tdd
$fields['dont-convert-url'] = [3];
При этом преобразование будет отменено только в отношении атрибутов a[href], атрибуты img[src] будут преобразованы в относительный вид в любом случае.
В полях типа varchar URL преобразовываться автоматически не будут — нужно явно указать поля, которые должны подвергаться преобразованиям. Для этого служит параметр дескриптора convert-url:
.tdd
$fields['convert-url'] = [1, 2]; # В массиве перечислены поля шаблона, к которым будет применяться преобразование.
Параметр convert-url может применяться только к полям типов varchar. Причем, поле, упомянутое в параметре convert-url, должно быть использовано целиком только для URL, а не для html-кода, как в случае с полями типа text.
Для обычных случаев рекомендуем следовать следующим правилам:
Планируется этот процесс автоматизировать