Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Magento中,是否可以从外部API而不是Magento DB填充产品模型?_Php_Magento_Magento 1.7 - Fatal编程技术网

Php 在Magento中,是否可以从外部API而不是Magento DB填充产品模型?

Php 在Magento中,是否可以从外部API而不是Magento DB填充产品模型?,php,magento,magento-1.7,Php,Magento,Magento 1.7,我目前已安装Magento 1.7 CE。我想使用Magento产品模型,但我想从外部API获取产品的价格(我们的定价不在Magento范围内) 我知道我可以使用MagentoAPI从我们现有的数据库导入所有价格,但是我们的价格经常变化,然后我们需要维护两个数据库 基本上,我想知道Magento中是否有我可以覆盖的东西来调用我们的API而不是DB 我知道如何覆盖Magento核心(创建自己的模块,并使用适当的重写标记设置config.xml)。我可以通过调用API覆盖Product->getPr

我目前已安装Magento 1.7 CE。我想使用Magento产品模型,但我想从外部API获取产品的价格(我们的定价不在Magento范围内)

我知道我可以使用MagentoAPI从我们现有的数据库导入所有价格,但是我们的价格经常变化,然后我们需要维护两个数据库

基本上,我想知道Magento中是否有我可以覆盖的东西来调用我们的API而不是DB


我知道如何覆盖Magento核心(创建自己的模块,并使用适当的重写标记设置config.xml)。我可以通过调用API覆盖Product->getPrice方法来实现这一点,但是每次调用Product->getPrice时都会调用API。我宁愿在对象创建时(当它调用数据库并将数据放入对象时)向我们的API注入一个调用,但我对magento还不太熟悉,不知道这是在哪里发生的,或者这是否可能发生。

使用下面的代码,您可以在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();
}
?>

您可能可以设置一个自定义模块,该模块将包含一个具有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查询来减少更新时间,而不是使用产品模型。
我遇到了一段这样的代码,似乎很有希望,下面是链接

我们现在能给你的唯一答案是:“是的”。如果你想要更多的帮助,你需要自己尝试,如果你有具体问题,请回到这里。我编辑了我的问题,让它更清楚我已经尝试了什么,以及我到底想做什么。是的,谢谢你,这是一个好主意。我唯一担心的是我们有40000多个产品,所以我们不能经常运行cron,而且我担心过时的数据。不过,这给了我一些东西,谢谢!不确定在加载产品的对象数据或调用getPrice()时如何&确切地说何时触发API调用以更新产品的价格。我的方法可以是方案B,因此我对其进行了编辑,使其更加完整。感谢您的尝试,但我不是问如何获取产品价格,我是问如何从我们的第三方API而不是数据库获取产品价格。