Estás leyendo la publicación: Cómo agregar un atributo de producto filtrable en “Productos en categoría” en Magento 2
espacio de nombres Proveedor\Módulo\Bloque\Adminhtml\Categoría\Tab;
use Magento\Catálogo\Modelo\Producto\Atributo\Fuente\Estado;
use Magento\Catálogo\Modelo\Producto\Visibilidad;
use Magento\Framework\App\ObjectManager;
use Magento\Eav\Model\Config;
El producto de clase se extiende \Magento\Catalog\Block\Adminhtml\Category\Tab\Product
{
visibilidad protegida;
función pública __construct(\Magento\Backend\Block\Template\Context $context,
\Magento\Backend\Helper\Data $backendHelper,
\Magento\Catálogo\Modelo\ProductFactory $productFactory,
\Magento\Framework\Registro $coreRegistro,
matriz $datos = [],
Visibilidad $visibilidad = nulo,
Estado $estado = nulo,
Configuración $eavConfig)
{
$esto->eavConfig = $eavConfig;
$this->visibility = $visibility ?: ObjectManager::getInstance()->get(Visibility::class);
parent::__construct($context, $backendHelper, $productFactory, $coreRegistry, $data, $visibility, $status);
}
/**
* Establecer objeto de colección
*
* @param \Magento\Framework\Data\Collection $colección
* @retorno nulo
*/
función pública setCollection($colección)
{
$colección->addAttributeToSelect(‘is_giftable_product’);
padre::setCollection($colección);
}
/**
* @return $esto
*/
función protegida _prepareColumns()
{
$atributo = $this->eavConfig->getAttribute(‘catalog_product’, ‘is_giftable_product’);
si ($atributo) {
$vals = $atributo->getSource()->getAllOptions();
$arr = [];
foreach ($valores como $opción) {
si ($ opción[‘label’]) {
$arr[$option[‘value’]]= $opción[‘label’];
}
}
padre::_prepareColumns();
$this->addColumnAfter(‘is_giftable_product’, array(
‘header’ => __(‘Producto para regalar’),
‘index’ => ‘is_giftable_product’,
‘tipo’ => ‘opciones’,
‘opciones’ => $arr,
), ‘sku’);
$this->sortColumnsByOrder();
devolver $esto;
}
}
}