Para crear un ticket de soporte, comience con una búsqueda

Rejilla de productos: Añadir una columna que muestre una característica predefinida del producto (editable)


Objetivo

Queremos añadir una columna que enumere los valores de una característica para los productos mostrados en la cuadrícula de productos y mostrar una lista de opciones cuando se haga clic en la celda para editarla.

Esto nos permitirá :

  • utilizar los filtros de las cuadrículas para afinar nuestra selección de productos
  • exportar rápidamente la parrilla de productos con este campo
  • modificar una característica de varios productos en masa
Configuración

Para añadir el campo a la lista de campos disponibles para sus rejillas de productos, haga clic en el botón desde la interfaz "Añadir campo", e introduzca la siguiente información:

¿Cuál es el ID del campo? myfeature

 

SC crea el campo, ahora debe rellenar la cuadrícula:

Nombre del campo: Entrega
Tabla: Otra tabla
Tipo : Opción múltiple
Actualizar las combinaciones : No

 

En el panel de propiedades avanzadas de la derecha:

- seleccione el menú SQL Select y rellene:

return ' , (SELECT fp.id_feature_value FROM `' . _DB_PREFIX_ . 'feature_product` fp
                WHERE fp.id_feature = "3"
                AND fp.id_product = p.id_product) as myfeature ';

 

- seleccione el menú lista de opciones y rellene:

$sql = "SELECT fvl.*
        FROM " . _DB_PREFIX_ . "feature_value_lang fvl
        INNER JOIN " . _DB_PREFIX_ . "feature_value fv ON (fv.id_feature_value=fvl.id_feature_value)
        WHERE fvl.id_lang=1
        AND fv.id_feature = 3";
$res = Db::getInstance()->ExecuteS($sql);
$tmp = array(0=>" ");
foreach ($res as $row)  {
    $tmp[$row["id_feature_value"]] = $row["value"];
}
return $tmp;

 

- seleccione el menú PHP enAfterUpdateSQL y rellene:

if ($feature_value = (int)Tools::getValue('myfeature', 0)) {
    $sql = "SELECT * FROM " . _DB_PREFIX_ . "feature_product WHERE id_product='" . (int)$idproduct . "' AND id_feature='3'";
    $res = Db::getInstance()->ExecuteS($sql);
    if (count($res)) {
        if ($feature_value) {
            $sql = "UPDATE " . _DB_PREFIX_ . "feature_product SET id_feature_value='" . (int)$feature_value . "' WHERE id_product='" . (int)$idproduct . "' AND id_feature='3'";
            Db::getInstance()->Execute($sql);
        } else {
            $sql = "DELETE FROM " . _DB_PREFIX_ . "feature_product WHERE id_product='" . (int)$idproduct . "' AND id_feature='3'";
            Db::getInstance()->Execute($sql);
        }
    } else {
        $sql = "INSERT INTO " . _DB_PREFIX_ . "feature_product (id_feature,id_product,id_feature_value) VALUES ('3','" . (int)$idproduct . "','" . (int)$feature_value . "')";
        Db::getInstance()->Execute($sql);
    }
}

 

Aquí tomamos la característica ID 3. Se puede cambiar la característica buscando el ID deseado en la ventana de características (menú Catálogo > Características SC).

Cierre la ventana de edición de los campos personalizados.

El nuevo campo está ahora en la lista de campos disponibles, y puede añadirlo a sus rejillas de productos.




Artículos relacionados