2011-11-30 15 views
3

Magentoのタグの書き換えルールを多く追加しました。たとえば、Magento Tag URL書き換えて生成

Request Path: tag/abc 
Target Path: tag/product/list/tagId/7/ 
Type: Custom 

リクエストとレスポンスはすべてうまくいっています。しかし、私はどのように正面のタグのURLを変更するのだろうか?書き換えルールは完全に実行されますが、書き換えられたURLは変更されません。

タグモジュールでgetTaggedProductsUrl()メソッドが見つかりましたが、他のモジュールと同様に、コア/ URLモデルでgetUrl()メソッドが呼び出されました。私は、ルートパラムに'_use_rewrite' => trueを追加しようとしました。しかし、それは正しいURLを生成しません。

私は本当にこれについて何が間違っているか知りたいです!

答えて

2

あなたがtag/tagモデルを書き換え、それが動作します以下でgetTaggedProductsUrl()をオーバーライドする場合:

public function getTaggedProductsUrl() 
{ 
    $fullTargetPath = Mage::getUrl('tag/product/list', array(
     'tagId' => $this->getTagId(), 
     '_nosid' => true 
    )); 
    $targetPath = substr($fullTargetPath, strlen(Mage::getBaseUrl())); 
    $rewriteUrl = Mage::getModel('core/url_rewrite')->loadByIdPath($targetPath); 
    if ($rewriteUrl->getId()) { 
     return $rewriteUrl->getRequestPath(); 
    } 
    return $fullTargetPath; 
} 

これは、「ID・パス」として基本URLなしでターゲットパスを使用していると仮定している "Target Path"プロパティ、たとえばtag/product/list/tagId/30/
この設定を複製したくない場合は、タグ・リソース・モデルを使用して、id_pathの代わりにtarget_path列に一致するSQLを手動で調整する必要があります。これは、リソース・モデルに事前定義されたメソッドがないためです。
まだ、Mage_Tag_Model_Resource_Tag::loadByRequestPath()メソッドを参照として使用できます。