Очевидно же, расширить модуль корзины. Технология известна.
1 Админпанель страницы » Зарегистрированные модули, выключить старый модуль Cart.
2 Там же добавить новый модуль CartEx.
3 Закрыть теневые адреса в .htaccess новым модулем.
RewriteCond %{QUERY_STRING} ^(.*&)?module=Cart(&.*?)?$
RewriteRule ^index\.php$ index.php?%1module=CartEx%2 [L]
4 Создать папку и файл objects/cartex/CartEx.php. Регистр символов соблюдать.
5 Написать код расширения корзины. Туда же хук Артема, различие root_url и url исправлено.
<?php
require_once(dirname(__FILE__) . '/../.any-models/Security.php');
class SecurRusDomain extends SecurityANYModel {
public function redirectToPage ( $url ) {
$root = 'http://' . $this->cms->root_url;
$size = $this->cms->text->length($root);
$test = $this->cms->text->substr($url, 0, $size);
if ($test == $root) $url = 'http://' . $this->cms->root_url_orig . $this->cms->text->substr($url, $size);
parent::redirectToPage($url);
}
}
require_once(dirname(__FILE__) . '/../cart/Cart.php');
class ClientCartEx extends ClientCart {
public function save_order ( $params = null, & $item = null ) {
$this->security = new SecurRusDomain($this);
parent::save_order($params, $item);
}
}
?>
6 Добавить код Артема в хелпер.
<?php
class TemplateEmulator {
public function __construct ( & $cms ) {
$old = $cms->root_url;
$cms->root_url = $cms->idn->decodeIDN($old);
if ($old != $cms->root_url) $cms->root_url_orig = $old;
}
}
?>