Я хочу скрыть настраиваемые параметры, у которых нет связанного изображения. Я попытался переписать настраиваемый блок продукта, но он не работает. кто-нибудь знает об этом?Как скрыть элементы изображения от настраиваемых параметров Magento?
ответ
Я думаю, что хорошим решением является установка всех простых продуктов, у которых нет каких-либо фотографий, отсутствующих на складе, и установите конфигурацию system->catalog->inventory->stock options->Display Out of Stock Products
на нет.
Если у вас есть логика импорта продукта, вы можете интегрировать этот код в это.
У меня есть решение. Что я заметил, настраиваемые параметры продукта поступают из функции $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.
Извините за поздний повтор. Я уже удалил объекты без изображения из списка продуктов. Теперь мне нужно удалить параметры из настраиваемого. предположим, что если одна конфигурируемая имеет 2 дочерних элемента с размером S и M. S имеет изображение, а M - нет. В этом случае я хочу показать только S. В настоящее время оба показываются, и когда я нажимаю M, в нем отображается владелец места без изображения. К сожалению, вышеуказанное решение, о котором вы упомянули, не будет работать здесь. –
@JicksonJohnsonKoottala решение по-прежнему актуально. если простой продукт отсутствует на складе, он не будет отображаться на настраиваемых параметрах с указанными вами настройками. – shemaya
@ shemaya извините, но это не очень хорошее решение. потому что, если я это сделаю, мне нужно задать другой вопрос, как, как сделать простой продукт на складе на основе его статуса изображения. ? и это нужно делать в режиме реального времени на подробной странице. Я уже нашел ответ сам и разместил выше. Если вы помещаете продукт в нерабочее время, это не будет отображаться на настраиваемых параметрах, это правильно. но это не очень хорошая идея, чтобы избавиться от запасов, чтобы скрыть это от этой области. Надеюсь, у вас есть идея. –