Обе задачи можно решить с помощью реализации своего генератора ссылок. Система проверяет наличие функции customGenSublink, и, если такая имеется, вызывает ее, в качестве ссылки при этом будет использовано возвращаемое функцией значение.
Простой пример для /_local/admin_functions.php -
function customGenSublink(array $aParams) {
/* $aParams = array (
* 'name' - имя объекта, на который генерируется ссылка
* 'max_words' - максимальное количество слов (разделенных пробелом, дефисом, нижним подчеркиванием, слэшем, точкой)
* 'max_len' - максимальная длина ссылки
* 'date_field' - маска для добавления префикса с временем генерации ссылки
* 'module' - имя модуля
* 'id' - уникальный id объекта, на который генерируется ссылка
* );
*/
$module = $aParams['module'];
$id = (int)$aParams['id'];
if(!$id) {
$id = '';
}
$res = ($module != 'eshop_item' && $module != 'eshop_cat' && $module != 'eshop_data_exchange' ? null : $id);
/* $res - имя ссылки, либо null.
* В случае возврата функцией null, генерация ссылки будет выполнена стандартными средствами CMS.
*/
return $res;
}