2016-12-27 2 views

ответ

0

Я думаю, что хорошим решением является установка всех простых продуктов, у которых нет каких-либо фотографий, отсутствующих на складе, и установите конфигурацию system->catalog->inventory->stock options->Display Out of Stock Products на нет.

Если у вас есть логика импорта продукта, вы можете интегрировать этот код в это.

+0

Извините за поздний повтор. Я уже удалил объекты без изображения из списка продуктов. Теперь мне нужно удалить параметры из настраиваемого. предположим, что если одна конфигурируемая имеет 2 дочерних элемента с размером S и M. S имеет изображение, а M - нет. В этом случае я хочу показать только S. В настоящее время оба показываются, и когда я нажимаю M, в нем отображается владелец места без изображения. К сожалению, вышеуказанное решение, о котором вы упомянули, не будет работать здесь. –

+0

@JicksonJohnsonKoottala решение по-прежнему актуально. если простой продукт отсутствует на складе, он не будет отображаться на настраиваемых параметрах с указанными вами настройками. – shemaya

+0

@ shemaya извините, но это не очень хорошее решение. потому что, если я это сделаю, мне нужно задать другой вопрос, как, как сделать простой продукт на складе на основе его статуса изображения. ? и это нужно делать в режиме реального времени на подробной странице. Я уже нашел ответ сам и разместил выше. Если вы помещаете продукт в нерабочее время, это не будет отображаться на настраиваемых параметрах, это правильно. но это не очень хорошая идея, чтобы избавиться от запасов, чтобы скрыть это от этой области. Надеюсь, у вас есть идея. –

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; 
       } 
      } 
     } 

Я просто добавил if($product->getImage() && $product->getImage() != 'no_selection'){ в цикле разрешенных продуктов Еогеасп. Это позволит фильтровать только элементы изображения для конфигурируемых параметров json object array.