Предлагаю опробовать и потестить "плагин" для изменения урлов и прописи заголовков для контента в двойке.
После установки и выполнения всех действий вы увидите следующий функционал при редактировании и добавлении контента:

1) Выполнить запрос к БД:
2) Залить содержимое архива в корень сайта.
3) Файл /system/controllers/content/actions/item_add.php:
Заменить:
На:
Заменить:
На:
4) Файл /system/controllers/content/actions/item_edit.php:
Заменить:
На:
Заменить:
На:
Заменить:
На:
5) Файл /templates/default/controllers/content/item_view.tpl.php:
Заменить:
На:
6) Файл /system/libs/html.helper.php:
Заменить:
На:
7) Всё!
Все действия безболезненны для движка, поэтому, если понадобится убрать данную доработку, то надо будет удалить папку /system/controllers/loka_relinks и всё.
Поскольку в двойке много чего глобального, то, для того, чтобы не перебивать другие переменные, методы, папки контроллеров наконец, я решил использовать префиксы. Надеюсь никто не против того, что я "застолблю" за собой loka_ и l_
Отписывайтесь о результатах тестирования.

Что умеет
Позволяет задать материалу совершенно любой урл, а также назначить свои мета и заголовок страницы. Помимо этого, может добавить редирект на этот новый урл и меняет его во всех списках материалов.После установки и выполнения всех действий вы увидите следующий функционал при редактировании и добавлении контента:

Установка
*Замены такие объёмные, чтобы вам не искать, куда и после чего надо что вставить.1) Выполнить запрос к БД:
-- -- Структура таблицы `cms_loka_relinks_urls` -- CREATE TABLE IF NOT EXISTS `cms_loka_relinks_urls` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `l_req_uri` VARCHAR(255) NOT NULL, `l_type` VARCHAR(15) NOT NULL, `l_target` VARCHAR(255) NOT NULL, `l_source` VARCHAR(100) NOT NULL, `l_data` text NOT NULL, `l_template` VARCHAR(50) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `l_req_uri_2` (`l_req_uri`), KEY `l_source` (`l_source`), KEY `l_req_uri` (`l_req_uri`,`l_type`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
3) Файл /system/controllers/content/actions/item_add.php:
Заменить:
87 $form = cmsEventsManager::hook("content_{$ctype['name']}_form", $form); // Форма отправлена? $is_submitted = $this->request->has('submit'); $item['ctype_name'] = $ctype['name'];
$item['ctype_name'] = $ctype['name']; $form = $hook['form']; $form = cmsEventsManager::hook("content_{$ctype['name']}_form", $form); // Форма отправлена? $is_submitted = $this->request->has('submit'); // $item['ctype_name'] = $ctype['name'];
157 cmsEventsManager::hook("content_after_add", $item);
$item['ctype_name'] = $ctype['name']; cmsEventsManager::hook("content_after_add", $item);
Заменить:
66 $form = cmsEventsManager::hook("content_{$ctype['name']}_form", $form); // Форма отправлена? $is_submitted = $this->request->has('submit'); $item['ctype_name'] = $ctype['name'];
$item['ctype_name'] = $ctype['name']; $form = $hook['form']; $form = cmsEventsManager::hook("content_{$ctype['name']}_form", $form); // Форма отправлена? $is_submitted = $this->request->has('submit'); // $item['ctype_name'] = $ctype['name'];
94 if (!$errors){
if (!$errors){ // unset($item['ctype_name']);
114 $item = cmsEventsManager::hook("content_{$ctype['name']}_before_update", $item);
$item = cmsEventsManager::hook("content_{$ctype['name']}_before_update", $item);
Заменить:
3 $this->setPageTitle($item['title']);
Заменить:
return $href;
return cmsEventsManager::hook('href_to_rel', $href);
Все действия безболезненны для движка, поэтому, если понадобится убрать данную доработку, то надо будет удалить папку /system/controllers/loka_relinks и всё.
Поскольку в двойке много чего глобального, то, для того, чтобы не перебивать другие переменные, методы, папки контроллеров наконец, я решил использовать префиксы. Надеюсь никто не против того, что я "застолблю" за собой loka_ и l_

Отписывайтесь о результатах тестирования.

А Вы на заказ плагины пишите?
Пункт 4, не
если УРЛ случайно будет введен который уже существует, то при сохранении белая страница.
Я, например, делал(в другом движке) при добавлении проверку на дубли и если УРЛ в БД уже есть, то просто добавляем к УРЛ нумерацию(как стандартно, кстати, реализовано в icms).
А по поводу белой странице - то ошибку писать хотя бы, чтобы понятно было в чем косяк.
С белой страницей - это не ко мне) Позже я добавлю функционала и для категорий, там и сделаю проверки. Сейчас проблема не в том, как это проверить, а как корректно вернуться назад к редактированию)
Вопрос - при обновлениях Instant 2 данное усовершенствование не слетит?
Я полагаю что подобное нововведение (по крайней мере сама идея) имеет право войти в очередное обновление и стать стандартом.
Если у R2 в обновлении будут поправленные файлы, то они перезатрут данный плагин (что логично, как же иначе).
Но есть вопрос, а раширение ссыллок менять можно? На пример с .html на .php
Просто есть сайт, сделанный сугубо на PHP и расширение всех страниц соответственно в PHP, а хочу перенести сайт на двойку и чтобы ссылки все сохранить, потому как сайт не плохо проиндексирован и имеет хорошую посещаемость. Поэтому и такой интерес к вашему плагину.
Такой вопрос:
А если этот плагин будет управлять к примеру 1000 страницами, сильно ли возрастёт нагрузка из-за такого количества запросов???