Magento 2 - Как отобразить статический блок на основе выпадающего списка созданного атрибута?


Я достиг этой функциональности в Magento 1 выполните следующие действия:

  1. Создал атрибут "таблица размеров" с параметрами "футболки" и "платья".
  2. Присвоено соответствующее значение атрибута для каждого продукта.
  3. Создано 2 блока с идентификаторами "футболки" и "платья".
  4. В шаблон продукта я добавил следующий код:

<?php $sizeguide = $_product->getAttributeText('sizetable'); if ($sizeguide): ?> <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId($sizeguide)->toHtml() ?> <?php endif; ?>

Однако этот процесс не работает в Magento 2.

Author: Luis Garcia, 2016-06-24

2 answers

Ваш вызов блока неверен, в Magento 2 он должен называться

$this->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId($sizeguide)->toHtml()

Я выполнил все ваши шаги и добавил следующий код в файл шаблона, и все работало нормально.

/* $_product = $block->getProduct(); */
$sizeguide = $_product->getAttributeText('sizetable');
if ($sizeguide):
    echo $this->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId($sizeguide)->toHtml();
endif;
 3
Author: Ekta Puri, 2016-07-28 01:01:05

Вы также можете сделать вот так.

$_product = $block->getProduct(); 
$attribute = $_product->getResource()->getAttribute('sizetable');
if ($attribute)
{
    $sizetable = $attribute ->getFrontend()->getValue($_product);
    echo $this->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId($sizeguide)->toHtml();
}
 0
Author: Ravi Thanki, 2016-08-01 06:02:51