2016-09-26 6 views
0

この「attribute1/attribute2/product-url-key」のような製品URLを動的に作成する必要があります。私は、すべての製品のURLがenterprise_url_rewriteテーブルのrequest pathフィールドにあることを確認しました。magentoインデクサプロセスに変更

インデクサープロセスに変更を加えたいので、変更がその再実行時に残りますが、どこにあるのかわかりません。

答えて

1

おはよう!さんはこれを打破してみましょう:

が、私はこの「attribute1と/ attribute2の/製品-URL-キー」動的

はいのような製品のURLを作成する必要があります - あなたは、動的にMagentoのモデルを使用して書き換えるURLを作成できますあなたは既に特定されてきたデータベーステーブルを表す:

/** @var Enterprise_UrlRewrite_Model_Redirect $rewrite */ 
$rewrite = Mage::getSingleton('enterprise_urlrewrite/redirect'); 

// Create new record or load the existing one 
$rewrite->loadByRequestPath($requestUrl, $store->getId()); 

$rewrite 
    ->setStoreId($store->getId()) // define which store the rewrite should be 
    ->setOptions(null) // specify any rewrite/redirect/custom options 
    ->setRequestPath($requestUrl) // specify the request URL 
    ->setIdentifier($requestUrl) 
    ->setTargetPath($targetPath) // specify the redirect target 
    ->setEntityType(Mage_Core_Model_Url_Rewrite::TYPE_CUSTOM) 
    ->setDescription('Add a comment if you want to'); 

$rewrite->save(); 

これは$requestUrlによってリダイレクト/既存のURLの書き換えをロードしようと、それはあなたがあなたを飾ることができ見つからなかった場合は、空のモデルを返します。データを保存して保存します。

「オプション」は、それが一時的なリダイレクトか永続的なリダイレクト(302対301)かを定義します。

More information here Magento EEユーザーガイドを参照してください。

私はインデクサープロセスにも変更を加えたいので、変更はその再実行時に残りますが、どこにあるのかわかりません。

心配しないでください。 (現代の)Magentoデータベースは、レコードを索引付けする必要がある場合は常にテーブルのトリガーを持ち、それらのテーブルの作成、更新、削除を検出します。インデクサーは変更が必要であることを検出し、必要に応じて変更を行います。

URLの書き換えが消えている場合は、SQLを使用してインデックステーブルに直接追加しているため、インデックスが実行されるたびにテーブルが書き換えられます。これを避けるには、上記のモデルを使用し、すべてが正しい場所に保存され、適切に索引付けされます。

+0

あなたに感謝してくれます。Robbie、私はmagentoを初めて使っています。このコードはどこに書きますか? –

関連する問題