商品レビューページ(http://mydomain.com/review/product/list/id/139/category/79/)にアクセスした顧客を実際の商品ページにリダイレクトする方法はありますか?
3 に答える
seoフレンドリーなURLが有効になっていると仮定すると、レビュー/製品を拡張してlistActionメソッドを書き換えるカスタムモジュールを作成できます。
/app/etc/modules/MageIgniter_ReviewRedirect.xml内
<?xml version="1.0"?>
<config>
<modules>
<MageIgniter_ReviewRedirect>
<active>true</active>
<codePool>local</codePool>
<version>0.1.0</version>
</MageIgniter_ReviewRedirect>
</modules>
</config>
/app/code/local/MageIgniter/ReviewRedirect/controller/ReviewController.php内
include_once 'Mage/Review/controllers/ProductController.php';
class MageIgniter_ReviewRedirect_ReviewController extends Mage_Review_ProductController
{
public function listAction(){
if ($product = $this->_initProduct()) {
$this->_redirect($product->getUrl());
}
}
/app/code/local/MageIgniter/ReviewRedirect/etc/config.xml内
<?xml version="1.0"?>
<config>
<modules>
<MageIgniter_ReviewRedirect>
<version>0.1.0</version>
</MageIgniter_ReviewRedirect>
</modules>
<frontend>
<routers>
<reviewredirect>
<use>standard</use>
<args>
<modules>
<MageIgniter_ReviewRedirect before="Mage_Review">MageIgniter_ReviewRedirect<MageIgniter_ReviewRedirect>
</modules>
<frontName>review</frontName>
</args>
</reviewredirect>
</routers>
</frontend>
<global>
<helpers>
<reviewredirect>
<class>MageIgniter_ReviewRedirect_Helper</class>
</reviewredirect>
</helpers>
</global>
</config>
/app/code/local/MageIgniter/ReviewRedirect/Helper/Data.php内
<?php
class MageIgniter_ReviewRedirect_Helper_Data extends Mage_Core_Helper_Abstract
{
}
ProductControllerのメソッドlistActionにリダイレクトを配置できます。(app / code / core / mage / Review / controllers / ProductController.php)
編集:ベストプラクティスは、このコントローラーを上書きする独自のモジュールを作成することです。
モジュール構成のみを必要とする古いMagentoには、それ以外の点では機能しない機能があります。
<config>
<global>
<rewrite>
<yourmodulename>
<from><![CDATA[#^/review/product/list#]]></from>
<to><![CDATA[/catalog/product/view]]></to>
</yourmodulename>
</rewrite>
</global>
</config>
その下ではpreg_replace
、要求されたパスで使用しているだけなので、PCREパターンを問題なく理解できるはずです。少し想像力を働かせればapp/etc/local/xml
、このためだけにモジュール全体を作成したくない場合は、上記をマージすることもできます。