0

現在、Magento 1.7 CE がインストールされています。外部 API から製品の価格を取得したい場合を除き、Magento 製品モデルを使用したい (当社の価格は Magento の外部に存在します)。

Magento API を使用して既存のデータベースからすべての価格をインポートできることはわかっていますが、価格は頻繁に変更されるため、2 つのデータベースを維持する必要があります。

基本的に、DB の代わりに API を呼び出すために上書きできるものが Magento にあるかどうか疑問に思っていますか?

Magento コアを上書きする方法を知っています (独自のモジュールを作成し、config.xml を適切な書き換えタグで設定します)。Product->getPrice メソッドを API への呼び出しで上書きすることでこれを機能させることができますが、そうすると、Product->getPrice が呼び出されるたびに API が呼び出されます。オブジェクトの作成時 (データベースを呼び出してデータをオブジェクトに入れるとき) に API への呼び出しを挿入したいのですが、magento に精通していないため、これがどこで発生するのか、またはこれが可能です。

4

2 に答える 2

1

おそらく、updateCatalogPrices() というメソッドを持つオブザーバーを含むカスタム モジュールをセットアップできます。このメソッドは、モジュールでスケジュールされた cron を介して実行できます。

大まかなロジックは次のとおりです。

$productCollection = Mage::getModel('catalog/product')->getCollection();
foreach $product in $productCollection
$priceFromAPI = ?//your logic to get the price using API
$product->setPrice($priceFromAPI)
        ->save();

Cron のスケジュールは次の条件に依存します: 価格が更新される頻度。データベース内の製品の数。

ただし、40000 以上の製品のカタログの場合、上記のアプローチは完了するまでに 1 日以上かかる場合があります。製品モデルを使用する代わりに、直接 SQL クエリを使用して更新時間を短縮できます。私は有望と思われるそのようなコードの1つに出くわしました.ここにリンクがあります http://www.blog.magepsycho.com/updating-product-prices-in-magento-in-easier-faster-way/

于 2013-11-10T09:48:29.013 に答える
0

以下のコードを使用すると、magento ルートに php ファイルを配置して製品価格を取得できます

<?php
require_once 'app/Mage.php';
umask(0);
Mage::app();
$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('*')->load();
foreach ($collection as $_product)
{
echo $_product->getPrice();
}
?>
于 2013-11-09T12:56:17.850 に答える