На старте системы выбираете из cms_es_items элемент по полученной ссылке, и делаете на него перенаправление.
$oQuery = DB_Query::getSnippet("select i.id, CONCAT(c.sublink, %s, i.sublink) as sublink from cms_es_items as i join cms_es_cats as c on c.id = i.id_category where i.sublink = %s limit 1")->q('/')->q( $uri ); // $uri - ссылка на конечный элемент, для /katalog/cat/subcat/item - item.
$aItem = $oDB->fetchRow($oQuery); // $aItem['sublink'] - ссылка на страницу товара относительно корня модуля, если выборка пуста, то $aItem = false.
Событие на старте системы - custom_on_system_start, простой пример -
define('AMI_FIRE_ON_SYSTEM_START', TRUE);
AMI_Event::addHandler('custom_on_system_start', 'customStartHandler', AMI_Event::MOD_ANY);
function customStartHandler($name, array $aEvent, $handlerModId, $srcModId){
if(!AMI::isResource('db')){ // инициализируем API, на ранних этапах работы системы оно еще не загружено.
AMI::addResourceMapping(array('db' => 'AMI_DB'));
}
$oDB = AMI::getSingleton('db', array('ami_db' => $aEvent['db']));
// ...
return $aEvent;
}
Код можно добавить в /_local/common_functions.php
Есть программисты, готовые внедрить это за вознаграждение?