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