Вы можете использовать метод local.xml, чтобы заменить содержимое страницы / sales / guest / form / page чем-то другим. Например, вы можете поместить эту ручку туда ...
<sales_guest_form>
<reference name="content">
<!-- Remove the main content of the page, which is the form -->
<remove name="guest.form" />
<!-- Optionally you can add in your own block or set of blocks. Not sure I would though -->
<block type="yourmodlulealias/some_class" template="whatever/template.phtml" />
</reference>
</sales_guest_form>
Это просто удалит всю гостевую форму и заменит ее блоком по вашему выбору. Черт возьми, тебе даже не нужно добавлять в свой блок.
Другая идея заключается в создании наблюдателя, который прослушивает событие controller_action_predispatch_sales_guest_form и просто перенаправляет его всякий раз, когда он срабатывает. Это событие вызывается до того, как произойдет основная обработка этой страницы. Так что в файле config.xml, вероятно, будет что-то похожее на это ...
<controller_action_predispatch_sales_guest_form>
<observers>
<seo_redirect>
<type>singleton</type>
<class>yourmodulealias/observer</class>
<method>redirectRequest</method>
</seo_redirect>
</observers>
</controller_action_predispatch_sales_guest_form>
и тогда ваш класс наблюдателя будет выглядеть примерно так ...
class Yourcompany_Yourmodulename_Model_Observer {
public function redirectRequest($observer){
header("Location: " . Mage::getUrl() . 'someplace-else');
}
}
Если вам не нравится идея перенаправления, вы можете сойти с ума и выйти:)
Edit:
Если вы абсолютно уверены, что эта страница не существует, то, возможно, вы можете просто вернуть статус 404. Когда веб-сервер получает запрос на документ, который не существует на сервере, он обычно возвращает 404. Другими словами, 404 означает, что документ не существует. Для этого вы могли бы использовать идею наблюдателя сверху и просто заменить перенаправление выше на:
class Yourcompany_Yourmodulename_Model_Observer {
public function redirectRequest($observer){
Mage::app()->getResponse()->setHeader('HTTP/1.1','404 Not Found');
Mage::app()->getResponse()->setHeader('Status','404 File not found');
exit;
}
}
Когда вы нажимаете на страницу в вашем браузере, она будет полностью пустой, и в заголовке http будет указано, что это 404, не найден. Другой аналогичный подход - сделать так, чтобы отображалась страница 404 по умолчанию в Magento. Я не делал этого раньше, но я предполагаю, что вам сначала нужно переопределить контроллер (app / code / core / Mage / Sales / controllers / GuestController) (посмотрите, как переопределить контроллеры, если вы не знакомы, это отличается от переопределения моделей и блоков). Вы просто переопределите функцию formAction () в этом классе. Вероятно, это будет примерно так:
public function formAction()
{
$this->getResponse()->setHeader('HTTP/1.1','404 Not Found');
$this->getResponse()->setHeader('Status','404 File not found');
$this->loadLayout();
$this->renderLayout();
}
Наряду с этим изменением вы захотите обновить дескриптор макета в файле local.xml, чтобы он выглядел как дескриптор (который находится в файле макета cms.xml). Так это будет выглядеть примерно так:
<sales_guest_form>
<remove name="right"/>
<remove name="left"/>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
<reference name="content">
<block type="core/template" name="default_no_route" template="cms/default/no-route.phtml"/>
</reference>
</sales_guest_form>
Опять же, я не проверял этот последний подход, но он должен работать просто отлично. Нажав http://yousite.com/sales/guest/form, вы попадете на ту же страницу Magento 404, как если бы вы перешли на другой несуществующий URL, такой как http://yoursite.com/some-non-existent-url.