Доработка Amiro CMS
Цена договорная
•
наличный расчёт, безналичный расчёт, электронные деньги
Требуется переработать механизм ЧПУ для каталога товаров.
Сейчас можно сократить ссылку товара до:
адрес_сайта/последняя_категория(родитель)_в_которо й_лежит_товар/название_товара
а нужно:
адрес_сайта/название_товара
Это необходимо, чтобы при перекидывании товара по структуре каталога его ссылка в поисковиках не менялась.
Есть подсказка от ТП как это сделать:
На старте системы выбираете из 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
Сейчас можно сократить ссылку товара до:
адрес_сайта/последняя_категория(родитель)_в_которо й_лежит_товар/название_товара
а нужно:
адрес_сайта/название_товара
Это необходимо, чтобы при перекидывании товара по структуре каталога его ссылка в поисковиках не менялась.
Есть подсказка от ТП как это сделать:
На старте системы выбираете из 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
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.