Блог фрилансера - сайты под ключ

ЧПУ Cotonti

Просмотров: 241Комментарии: 0
Полезное

чпу на cotonti Когда я запускал сайт на Cotonti, то в первую очередь обратил внимание на то что в структуре URL отсутствуют расширения HTML для страниц. Хотя есть отдельный плагин для ЧПУ ссылок, расширение HTML для отдельных страниц он не добавляет. Я сторонник ссылок такого вида /categoria/stranicha.html, а не такого /categoria/stranicha Поэтому первым делом стал разбираться как добавить расширение .html к страницам. Поиск в сети не дал никаких результатов, просмотр найденых мной сайтов на этой CMF показал что ссылки такого вида на всех сайтах работающих на Cotonti.

Прошерстил пару самых крупных форумов посвящённых разработке этого движка я понял что никто этим вопросом не занимался, видимо всех устраивает такой вид чпу. В принципе, для поисковых систем нет особой разницы, будет адрес страницы такой stranicha.html или такой stranicha. Хотя во многих других движках этому вопросу уделяют внимание, при включении чпу можно выбирать добавлять к страницам расширение или нет. Я решил что расширение всё же нужно, так как по виду ссылки сразу видно - ведёт она в какой нибудь раздел или категорию, или на конкретную страницу с информацией.

Самый простой способ добавить расширение, это в поле алиас при добавлении страницы добавлять это расширение вручную. Например впечатываешь в поле stranicha.html и URL страницы становится таким как я хочу. Но во первых можно случайно забыть это сделать, во вторых для обычных посетителей поле алиас при добавлении публикаций скрыто, алиас формируется автоматически из заголовка статьи. Каждый раз при модерировании статей впечатывать пять знаков то же не вариант. Значит нужно сделать всё в автоматическом режиме. Расширение должно добавляться и при ручном вводе и при автоматическом формировании алиаса.

Логично было предположить что необходимую функцию можно добавить в плагине который формирует чпу ссылки, тем более что для чпу ссылок можно создавать свой файл с правилами чпу, но оказалось что для этого нужно очень хорошо разбираться в логике работы плагина с учётом правил редиректа в .htaccess так как после десятка или более попыток переделать логику формирования чпу ссылок я понял что мне пока это не по зубам. А на форумах Cotonti я нашёл лишь рекомендации по изучению полной информации о движке и не одного конкретного примера.

Тогда я решил пойти самым коротким путём, добавлять расширение при добавлении статей там куда приходит POST запрос с данными переданными из формы отправки. При добавлении статей данные передаются в файл модуля Market market.add.php а если поле алиас не заполнено, то формирование алиаса из заголовка статьи предаётся в плагин autoalias2 в файл autoalias2.functions.php. В market.add.php я нашёл строки которые формируют полную ссылку на статью перед записью всех данных в базу данных.

$urlparams = empty($ritem['item_alias']) ?
array('c' => $ritem['item_cat'], 'id' => $id) :
array('c' => $ritem['item_cat'], 'al' => $ritem['item_alias']);
$r_url = cot_url('market', $urlparams, '', true);
Переменная
$ritem['item_alias'] 
содержит данные из поля алиас, всё что нужно сделать - добавить к этим данным в конце, расширение html. Выше этих строк я добавил
$ritem['item_alias'] .= '.html';
Если Вы хорошо разбираетесь в синтаксисе php то поймёте что таким образом я добавил к любым данным которые находятся в этой переменной дополнительный код - .html Это то же самое что вручную в поле алиас добавлять эти пять символов. Проверил - всё работает! При ручном добавлении алиаса такого вида - stranicha URL формируется и записывается в базу как stranicha.html

Теперь то же самое нужно было сделать при автоматическом формировании алиаса из заголовка страницы. В файле autoalias2.functions.php я нашёл строки в которых формируется окончательный вариант алиаса после очистки заголовка от тегов и формирования алиаса из кирилических символов в латинские

$title = preg_replace('#[^\p{L}0-9\-_ ]#u', '', $title);
$title = str_replace(' ', $cfg['plugin']['autoalias2']['sep'], $title);
Сразу после этих строк я добавил
$title .= '.html';
Проверил, работает! Теперь при добавлении статей ссылки на страницы формируются так как я и хотел с расширением .html

Возможно кто то из спецов скажет что такое решение было как говориться через ж... Но это работает и полностью меня устраивает!

P.S. - Небольшое дополнение к вышеуказанному методу - оказалось что в таком варианте при добавлении статей авторами возникает ошибка, вместо stranicha.html после добавления статьи переадресовывает на страницу просто .html Соответственно что такой страницы нет и человек попадает на страницу ошибки. Временно закоментировал код в market.add.php что бы работало при добавлении статей авторами. А я пока просто буду набивать дополнительно .html к алиасу или вообще ничего в поле алиас не вводить, тогда он формируется автоматически с добавлением суффикса .html

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question


Комментарий будет опубликован после проверки

     

  

(обязательно)