繁体   English   中英

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

[英]Magento - SOAP API, Mass Update Product Visibility

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

基本上,我已经对模板做了一些繁重的配置,以便以非常批发的方式为我们的客户显示目录,如果您想在这里查看它(www.musclefinessewholesale.com),那么您将看不到任何除非您已登录,否则将无法注册,因为这仅是交易。 因此,基本上每个产品都有一个分组产品,然后将风味设置为与此产品相关的简单产品。

我知道这有时不是最好的方法,但可以说这符合要求。 问题是,当您单击主要类别(品牌)时会显示每个简单的产品,但我们只想显示分组的产品。

任何人都可以使用API​​解释如何在Magento中找到所有简单产品,然后将可见性分别更改为隐藏。 这样,它们只会显示为母版的一部分。

请参阅附件以了解格式: 这就是我们的样子

但是,当用户搜索某个产品时,就会发生这种情况(这些是我们需要隐藏在MASS上的简单产品) 在此处输入图片说明

是否有想法如何编写API循环以遍历系统中的每个简单产品并将可见性设置为“不可见”?

试试这个,我知道这不是在使用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();
                }
            }
        }
    }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM