3

1 つの Magento インストールで 3 つのオンライン ストアを実行しています。

彼らは 10,000 以上の SKU を共有しています (私は単純な製品として設定しました) が、フロントエンドに表示される製品は、各ストアのグループ化された製品 (SKU が関連付けられている) だけです。

そのため、私の URL 書き換えテーブルは非常に重く、Varien Profiler をチェックしているときに、完了までに 5 秒以上かかる「mage::dispatch::routers_match」に遭遇しました。テーブルが大きいからだと思います。だから私の質問に私をもたらします:

Magento に書き換えさせたくない URL を指定するにはどうすればよいですか。単純な製品の URL を書き換えないように指示できる方法はありますか? それだけで、テーブルを 1/3 に下げることになります。

PS: マジェント CE 1.7.0.2

編集:

私を正しい方向に向けてくれてありがとう、Tobias。app/code/core/Mage/Catalog/Model/Url.php に移動し、関数refreshProductRewritesを次のように編集しました。

foreach ($products as $product) {
        if($product->getTypeId() == "simple"){
            continue;
        }
        else {
        $this->_refreshProductRewrite($product, $this->_categories[$storeRootCategoryId]);
        foreach ($product->getCategoryIds() as $categoryId) {
            if ($categoryId != $storeRootCategoryId && isset($this->_categories[$categoryId])) {
                if (strpos($this->_categories[$categoryId]['path'], $storeRootCategoryPath . '/') !== 0) {
                    continue;
                }
                $this->_refreshProductRewrite($product, $this->_categories[$categoryId]);
            }
        }
    }
    }
4

2 に答える 2

6

に格納されている製品のコレクションは、 refreshProductRewritescore_url_rewriteで生成されます。Mage_Catalog_Model_Url

このクラスを書き直して、グループ化された製品のみを格納する独自の実装を実装できます。

于 2013-02-05T15:56:53.617 に答える
1

別の解決策は、空の URL キーを持つ製品を無視することです。

   protected function _refreshProductRewrite(Varien_Object $product, Varien_Object $category)
   {
   if ($category->getId() == $category->getPath()) {
   return $this;
   }
   if ($product->getUrlKey() != '') {

   $urlKey = $this->getProductModel()->formatUrlKey($product->getUrlKey());

シンプルな商品の URL キーは次の方法でクリアできます (属性 ID を確認します)。

DELETE FROM catalog_product_entity_varchar WHERE entity_id IN (SELECT entity_id FROM catalog_product_entityWHERE type_id='simple' AND attribute_id='97');

于 2013-05-30T14:03:43.900 に答える