Не зарегистрирован
Вход
Забыли пароль?
Регистрация
Подписаться
Сэкономьте время — перед вопросом на форуме узнайте, как найти ответ быстрее
По техническим проблемам необходимо обращаться в Консультационный центр

Поиск по форуму: 

Приглашаем в блог Amiro.CMS. Регулярные обзоры, опыт, решения, практикумы.

Форум  ->   Разработка плагинов, вопросы по API  ->  Требуется переработать механизм ЧПУ для каталога товаров

Раздел для разработчиков. Обсуждение создания плагинов, вопросы и пожелания по API Amiro.CMS

Добавлено: 18.12.14 13:25:29 #1



Регистрация: 06.01.14
Сообщений: 7


Обратиться по имени

Сейчас можно сократить ссылку товара до:
адрес_сайта/последняя_категория(родитель)_в_которой_лежит_товар/название_товара

а нужно:
адрес_сайта/название_товара

возможно сделать такое?

это необходимо, чтобы при перекидывании товара по структуре каталога его ссылка в поисковиках не менялась.



Добавлено: 19.12.14 13:46:31 #2



Регистрация: 06.01.14
Сообщений: 7


Обратиться по имени

Сделал запрос в Амиро. Прислали следующий код.

На старте системы выбираете из 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


Есть программисты, готовые внедрить это за вознаграждение?





Создать новую тему

Всего тем: 6587
Всего сообщений: 27636
Всего зарегистрированных пользователей: 47877
Последний зарегистрированный пользователь: user5302684462