Cómo agregar una columna en la lista de renderizado en el controlador de producto para la nueva página de producto V2 en PrestaShop 8.1

Cómo agregar una columna en la lista de renderizado en el controlador de producto para la nueva página de producto V2 en PrestaShop 8.1

En este blog, aprenderemos cómo agregar columnas y filtros desde la cuadrícula de la página del producto BO.

Así que veamos juntos cómo hacerlo con PrestaShop.

A veces, necesitamos agregar columnas que provienen de una tabla de módulo personalizada.

Ahora vamos a agregar el ‘Tipo‘ columna a la página de lista de productos.

Lo obtendremos sólo cambiando el archivo principal del módulo.

¡Gracias a los ganchos disponibles, es muy fácil agregar columnas en una cuadrícula!

$this->registerHook(
    [
        'actionProductGridDefinitionModifier',
        'actionProductGridQueryBuilderModifier',
    ]
);

Después de registrarse, haremos el siguiente código en el archivo principal de nuestro módulo.

Utilice los espacios de nombres requeridos en la parte superior del archivo.

use PrestaShop\PrestaShop\Core\Grid\Column\Type\DataColumn;

Ahora defina la definición de ambos ganchos de registro.

public function hookActionProductGridDefinitionModifier($params)
    {
        // /** @var GridDefinitionInterface $definition */
        $definition = $params['definition'];
        $definition
            ->getColumns()
            ->addAfter(
                'price_tax_included',
                (new DataColumn('demo_type'))
                    ->setName($this->l('Type'))
                    ->setOptions(
                        [
                            'field' => 'demo_type',
                        ]
                    )
            );
    }

El código anterior se utiliza para agregar el encabezado a la cuadrícula.

public function hookActionProductGridQueryBuilderModifier($params)
    {
        /** @var QueryBuilder $searchQueryBuilder */
        $searchQueryBuilder = $params['search_query_builder'];

        /** @var CustomerFilters $searchCriteria */
        $searchCriteria = $params['search_criteria'];
        $demo = $this->l('Demo');
        $dot = '--';
        $searchQueryBuilder->addSelect(
            'IF(ad.`demo_type` IS NULL, \'' . pSQL($dot) . '\',IF(ad.`demo_type` != 2, \'' . pSQL($demo) . '\', \'' . pSQL($demo) . '\')) AS `demo_type`'
        );

        $searchQueryBuilder->leftJoin(
            'p',
            '`' . pSQL(_DB_PREFIX_) . 'wk_demo`',
            'ad',
            'ad.`id_product` = p.`id_product` AND ad.`id_shop` = pl.`id_shop`'
        );

        foreach ($searchCriteria->getFilters() as $filterName => $filterValue) {
            if ('demo_type' === $filterName) {
                $searchQueryBuilder->andWhere('ad.`demo_type` = :demo_type');
                $searchQueryBuilder->setParameter('demo_type', $filterValue);

                if (!$filterValue) {
                    $searchQueryBuilder->orWhere('ad.`demo_type` IS NULL');
                }
            }
        }
    }

El código anterior se utiliza para obtener los datos de la costumbre. semana_demo tabla y mostrar el Manifestación texto en la cuadrícula.

También hemos gestionado los filtros para mostrar datos ordenados por tipo.

Eso es todo sobre este blog. Espero que te ayude.

Si tiene algún problema o duda en el proceso anterior, no dude en contactarnos a través de la sección de comentarios.

Estariamos felices de ayudar.

Además, puede explorar nuestros servicios de desarrollo PrestaShop y una amplia gama de módulos PrestaShop de calidad.

Para cualquier duda contacta con nosotros en [email protected].


Source link

About David Lopez

Check Also

Actualización menor para Vivaldi iOS Browser 6.8

Actualización menor para Vivaldi iOS Browser 6.8

Esta actualización incluye correcciones de estabilidad para el proyecto Chromium, incluida una solución para un …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *