Magento - SOAP API,批量更新产品可见性

时间:2013-11-05 10:00:29

标签: php magento soap

我想不使用进口出口,我们有大量的产品(5,000)

基本上,我已经做了一些繁重的配置模板,以非常批发的方式为我们的客户显示目录,如果你想看看它在这里(www.musclefinessewholesale.com)但是,你将无法看到任何格式,除非您已登录,并且您无法注册,因为它只是交易。因此,基本上每个产品都有一个Grouped产品,然后将味道设置为与该产品相关的简单产品。

我知道这不是有时候做事的最佳方式,但它可以说是合适的。问题是当您点击主要类别(品牌)时,每个简单的产品都会显示,但我们只想显示分组的产品。

任何人都可以解释使用API​​如何在Magento中找到所有简单产品,然后将可见性单独更改为隐藏。这样他们只会作为主人的一部分出现。

请参阅附件,了解如何理解格式: This is how we have it looking

然而,当用户搜索某个产品时会发生这种情况(这些是我们需要隐藏在MASS上的简单产品) enter image description here

我想如何编写API循环来浏览系统中的每个简单产品,并将可见性设置为单独不可见?

1 个答案:

答案 0 :(得分:0)

试试这个,我知道这不是使用SOAP-API,而是直接挂在Magento上。

require_once($_SERVER['DOCUMENT_ROOT'] . '/app/Mage.php');
umask(0);

// Retrieve store-codes
$storelist = Mage::app()->getStores();
$storelang = array();
foreach ($storelist as $id => $s) {
    $storelang[$id] = substr(Mage::getStoreConfig('general/locale/code', $id), 0, 2);
}
...
$storeId = Mage::app()->getStore()->getId();
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$pModel = Mage::getModel('catalog/product');
$products = $pModel->getCollection();
foreach ($products as $product) {
    if ($product->isConfigurable()) {
        $childProducts = Mage::getModel('catalog/product_type_configurable')
                ->getUsedProducts(null, $product);
        foreach ($childProducts as $child) {
            foreach ($storelang as $lang_key => $lang_value) {
                $child->setStoreId(Mage::app()->getStore($lang_value)->getId());

                // 1 = not visible individually
                // 2 = catalog
                // 3 = search
                // 4 = catalog + search

                $child->setVisibility(1);
                try {
                    $child->save();
                } catch (Exception $e) {
                    echo $e->getMessage();
                }
            }
        }
    }

如果您有任何问题,请随时与我们联系。 我希望这有帮助。 一切顺利。