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á :
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.