Magento - 更新价格脚本 - 多个商店

时间:2012-11-07 13:17:32

标签: php magento

我正在尝试将一些(但不是全部)价格从一个商店更新到另一个商店。例如,一排衬衫应该是第二家商店的价格的1.2倍

我想仅根据实体标签更新一些项目组,但我正在努力从magento中提取所有数据(请在下面的代码中确定我能得到什么)。我缺少的是价格和实体标签。我知道他们住在哪些表但不确定正确的magento语法来访问它们,例如Mage :: getModel('catalog / product'),我正在尝试使用Magento友好代码实现这一点,而不是查询

使用企业1.11,在此阶段不考虑购买插件,任何建议都非常感谢

$mageFilename = 'app/Mage.php';
require_once $mageFilename;
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); #important
$product_id = '8782';
$collection = Mage::getModel('catalog/product')
         ->load($product_id);
        echo "Collection: " . $collection->getName();
        echo "<br>";
        echo "Attribute Set: " . $collection->getAttributeSetId() . " SKU: " . $collection->getSku();
        echo "<br>"; 
        echo "Entity ID: " . $collection->getEntity_id() . " Product Type (Attribute Label): " . $collection->getProducttype();

1 个答案:

答案 0 :(得分:3)

请澄清:

在您展示的示例中,$ collection对象实际上不是“集合”。 它是一个“目录/产品”对象的实例。

要修改一个目录/产品对象的价格,您可能会考虑这样做:

$product = Mage::getModel('catalog/product')->load($product_id);
$product->setPrice($product->getPrice() * 1.2)
        ->save();

如果你想在一堆产品上做这件事,你可能想要使用一系列产品 '目录/产品'对象,并应用一些属性过滤器(归结为添加 WHERE子句最终生成的SQL)。 (magento集合查询的Here's one summary 语法。)

我不确定“实体标签”是什么意思。这是您附加到产品的自定义属性吗?

一般示例,将此价格变化应用于具有特定SKU的所有产品:

$product_collection = Mage::getModel('catalog/product')->getCollection()
                                                       ->addAttributeToFilter('sku', array('like' => 'FOO01-%'));

foreach($product_collection as $product) {

    $new_price = calcNewPrice($product->getPrice());
    $product->setPrice($new_price)
            ->save(); 

}     

在哪里,如果您要跨越商店进行价格计算,“calcNewPrice”可能看起来像这样:

function calcNewPrice($product) {
    $other_store_product = Mage::getModel('catalog/product')->setStoreId($other_store_id)
                                                            ->load($product->getId());
    if ($other_store_product) {
        return $other_store_product->getPrice() * 1.2;
    }
    // else ???
}

希望这有帮助。