2013-11-08 1 views
0

У меня в настоящее время установлен Magento 1.7 CE. Я хочу использовать модели продуктов Magento, за исключением того, что хочу получить цену за продукт из внешнего API (наши цены существуют за пределами Magento).В Magento можно ли заполнять модели продуктов внешним API, а не с помощью Magento DB?

Я знаю, что я мог бы использовать API Magento для импорта всех цен из нашей существующей базы данных, но наши цены меняются очень часто, и тогда нам нужно будет поддерживать две базы данных.

В принципе, мне интересно, есть ли что-то в Magento, я могу перезаписать для вызова нашего API вместо DB?

Я знаю, как перезаписать ядро ​​Magento (создание собственных модулей и настройка вашего config.xml с соответствующим тегом перезаписи). Я могу заставить это работать, перезаписав метод Product-> getPrice при вызове нашего API, но тогда API вызывается каждый раз, когда вызывается Product-> getPrice. Я бы предпочел добавить вызов к нашему API во время создания объекта (когда он вызывает базу данных и помещает данные в объект), но я недостаточно знаком с magento, чтобы узнать, где это происходит, или если это даже возможно.

+0

Единственный ответ, который мы можем дать вам прямо сейчас: «да». если вам нужна дополнительная помощь, вам нужно попробовать самостоятельно и вернуться сюда, если у вас есть особые проблемы. – OSdave

+0

Я отредактировал свой вопрос, чтобы сделать его более понятным, что я уже пробовал, и что именно я хотел бы сделать. –

ответ

0

используя ниже кода, который вы можете получить цену продукта кладя файл PHP в Magento корне

<?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(); 
} 
?> 
+0

Спасибо за попытку, но я не спрашиваю, как получить цену продукта, я спрашиваю, как получить цену продукта от нашего стороннего API вместо базы данных. –

1

Вероятно, вы можете настроить пользовательский модуль, который будет включать в себя наблюдатель с методом сказать updateCatalogPrices(). Этот метод может быть запущен с помощью запланированных хрон в модуле:

Грубая логика может быть:

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

Крон планируется, будет зависеть от: Как часто цены обновляется. Количество продуктов в вашей базе данных.

Но для каталога продуктов 40000+ вышеуказанный подход может занять до 1 дня или более для завершения. Вместо использования модели продукта прямые запросы sql можно использовать для уменьшения времени обновления. Я наткнулся на один такой фрагмент кода, который кажется многообещающим, вот ссылка http://www.blog.magepsycho.com/updating-product-prices-in-magento-in-easier-faster-way/

+0

Да, спасибо, это хорошая идея. Моя единственная забота заключается в том, что у нас есть 40 000 продуктов, поэтому мы не могли бы часто запускать cron, и меня беспокоят устаревшие данные. Это дает мне возможность работать, хотя, спасибо! –

+0

Не знаете, как и точно, когда запускать вызов API для обновления цены продукта, когда загружаются данные объекта или вызывается getPrice(). Мой подход может быть планом B, поэтому я отредактировал его, чтобы сделать его более полным. – div

 Смежные вопросы

  • Нет связанных вопросов^_^