Изменить URL в iCMS 2

#1 11 октября 2014 в 18:16
Есть несколько вопросов, прошу подсказать, если кто знает:
Необходимо изменить url следующим образом

Сейчас, если для страницы в настройках стоит ручной ввод имени url — то указываеся лишь Url страницы, т.е. получается так:
  1. http://сайт.ру/pages/страница.html
То, что мы вручную ввели — это "страница"

1. Как сделать так, чтобы можно было задавать весь "хвост" вместе с .html (или без него)
2. Избавиться от "pages" в url чтоб было: сайт.ру/страница.html или сайт.ру/страница
2. Все станицы в url которых встречается "_" — не открываются (404)

Объясню зачем: перевожу сайт на icms и чтобы все страницы сохранить, исправить нужно только это.
#2 11 октября 2014 в 20:28

Избавиться от "pages" в url чтоб было: сайт.ру/страница.html или сайт.ру/страница

kreator
Так полагаю, полностью избавиться не получится. Но на всякий случай, посмотрите как можно изменить урл компонентов. То есть /pages/ можно заменить на /то_что_нужно/. Работает, потестировал, но доступны оба варианта, что не есть хорошо. То есть по двум разным урл доступна одна и та же страница.
Возможно, если покопаться, можно исправить ситуацию, но нужно копаться в коде и не уверен, что получится без кровопролития hoho

Как сделать так, чтобы можно было задавать весь "хвост" вместе с .html (или без него)

kreator
То же самое. Статические страницы, под системным именем pages — это предустановленные и неудаляемый тип контента. Та часть ури, что в вашем примере вы назвали страница хранится в БД в таблице cms_con_pages в поле по имени slug. А теперь задайте в поиске по папкам cms это имя slug. Это, чтобы понять в скольких местах придется править. Правда результаты поиска будут для всех типов контента, но всё же… Сразу потеряется желание что-то править smile
#3 11 октября 2014 в 20:29
мнение не экспертное, с системой пока мало знаком )
#4 12 октября 2014 в 18:12
Сделать "Страницы в корне сайта" можно хаком от Val.
Решение для "хвостов" мне пока не известно.
#5 12 октября 2014 в 18:55
А с подчеркиванием как? Страницы в которых есть "_" открываются 404
#6 12 октября 2014 в 20:27
С подчёркиванием можно попробовать так.

Скрипт разбора адреса страницы \system\controllers\content\routes.php, строка 91:
  1. 'pattern' => '/^([a-z0-9\-_]+)\/([a-zA-Z0-9\-\/]+).html$/i',
заменить на
  1. 'pattern' => '/^([a-z0-9\-_]+)\/([a-zA-Z0-9\-_\/]+).html$/i',
Кроме того, в файле языковых функций \system\languages\ru\functions.php (и такой же для английского языка, если нужно), строка 47:
  1. $slug = preg_replace ('/[^a-zA-Zа-яА-Я0-9\-\/]/u', '-', $string);
заменить на
  1. $slug = preg_replace ('/[^a-zA-Zа-яА-Я0-9\-_\/]/u', '-', $string);
В оригинальном коде пропущен знак подчёркивания. Возможно это не ошибка, а сделано разработчиками по какой-то причине, поэтому проверьте отрытие служебных ссылок (не страниц контента), содержащих подчёркивание в названии и ".html" в конце. Я таких сходу найти не смог, а обычные ссылки, естественно, открываются нормально. Отпишитесь когда проверите, пожалуйста.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.