如何隐藏Magento可配置选项中的图像项?

时间:2016-12-27 13:45:16

标签: magento magento-1.9

我想要隐藏没有任何关联图像的可配置选项。我试图重写可配置的产品块,但它不起作用。有人对此有任何想法吗?

2 个答案:

答案 0 :(得分:0)

我认为一个好的解决方案是将所有没有任何图片的简单产品设置为缺货,并将配置/foo/bar/my-ci-app设置为否。

如果您有产品导入逻辑,则可以将该代码集成到该逻辑中。

答案 1 :(得分:0)

我得到了解决方案。 我注意到,可配置的产品选项来自位于$this->getJsonConfig();块的功能Mage_Catalog_Block_Product_View_Type_Configurable。我所做的是,我在我的模块中重写了这个块,并通过将下面的代码放入其中来改变函数。

public function getJsonConfig()
    {
        $attributes = array();
        $options    = array();
        $store      = $this->getCurrentStore();
        $taxHelper  = Mage::helper('tax');
        $currentProduct = $this->getProduct();

        $preconfiguredFlag = $currentProduct->hasPreconfiguredValues();
        if ($preconfiguredFlag) {
            $preconfiguredValues = $currentProduct->getPreconfiguredValues();
            $defaultValues       = array();
        }

        foreach ($this->getAllowProducts() as $product) {
            if($product->getImage() && $product->getImage() != 'no_selection'){
                $productId  = $product->getId();
                foreach ($this->getAllowAttributes() as $attribute) {
                    $productAttribute   = $attribute->getProductAttribute();
                    $productAttributeId = $productAttribute->getId();
                    $attributeValue     = $product->getData($productAttribute->getAttributeCode());
                    if (!isset($options[$productAttributeId])) {
                        $options[$productAttributeId] = array();
                    }

                    if (!isset($options[$productAttributeId][$attributeValue])) {
                        $options[$productAttributeId][$attributeValue] = array();
                    }
                    $options[$productAttributeId][$attributeValue][] = $productId;
                }
            }
        }

我刚刚在允许的产品foreach循环中添加了if($product->getImage() && $product->getImage() != 'no_selection'){。这只会将图像项过滤为可配置选项json对象数组。