====== Размещение интернет-магазина по новому адресу ====== Интернет-магазин привязывается к определенному узлу структуры, это сделано для того, чтобы была возможность формировать ссылки на товары и группы вне этой структуры, например, в подборках на главной странице. Поэтому если создать еще одну структуру и указать интернет-магазин, привязанный к другой структуре, то при обращении к новой структуре будем получать ошибку 404. Иногда требуется именно такое поведение, чтобы протестировать выборку магазина на отдельном тестовом URL с измененными шаблонами, макетом и ТДС, при этом оставляя без изменения оригинальный магазин. Добиться такого поведения возможно с помощью нижеследующего кода, который необходимо разместить в ТДС перед вызовом метода parseUrl. // Подменяем путь магазина для парсинга URL $Shop_Controller_Show->pattern = rawurldecode(Core_Str::rtrimUri(Core_Page::instance()->structure->getPath())) . '({path}/)(user-{user}/)(page-{page}/)(tag/{tag}/)(producer-{producer}/)'; // Подменяем URL для групп и товаров function substituteUrls($oShopObject) { $oShopObject ->addForbiddenTag('url') ->addEntity( Core::factory('Core_Xml_Entity') ->name('url') ->value( Core_Page::instance()->structure->getPath() . $oShopObject->getPath() ) ); }; Core_Event::attach('shop_group.onBeforeRedeclaredGetXml', 'substituteUrls'); Core_Event::attach('shop_item.onBeforeRedeclaredGetXml', 'substituteUrls'); //Код актуален для HostCMS 6.7.7+, в предыдущих версиях отличается pattern, исходное его значение можно посмотреть в конструкторе контроллера, подмена URL для товаров и групп доступна с версии 6.6.3.//