El campo debe estar ya presente en la base de datos
Objetivo
Queremos añadir el campo "Mi campo" que se almacena en la tabla ps_mi_tabla (esta tabla no existe por defecto en PrestaShop).
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? mi_campo (debe coincidir exactamente con el nombre del campo en la tabla de la base de datos)
SC crea el campo, ahora debe rellenar la cuadrícula:
Nombre del campo: Mi campo
Tabla: Otra tabla
Tipo: Selección múltiple (debe corresponder a su tipo de campo, aquí un campo con valores predefinidos)
En este ejemplo, imaginamos que la tabla ps_ma contiene los campos :
table_id, product_id, mi_campo
En el panel de propiedades avanzadas de la derecha :
- seleccione el menú lista de opciones (sólo si el tipo de campo es "opción múltiple", de lo contrario déjelo en blanco) y rellene :
return array(0=>_l('Aucune'), 1=>_l('Valeur 1'), 2=>_l('Valeur 2'));
- seleccione el menú SQL Select y rellene:
return ' ,mt.mon_champ';
- seleccione el menú SQL Left Join y rellene:
return " LEFT JOIN "._DB_PREFIX_."ma_table mt ON (mt.id_product= p.id_product)";
- seleccione el menú PHP enAfterUpdateSQL y rellene:
if (isset($_POST["mon_champ"])) {
$sql = "SELECT * FROM " . _DB_PREFIX_ . "ma_table WHERE id_product=" . (int)$id_product;
$res = Db::getInstance()->ExecuteS($sql);
$mon_champ = (int)Tools::getValue('mon_champ', 0);
if (count($res)) {
if ($mon_champ) {
$sql = "UPDATE " . _DB_PREFIX_ . "ma_table SET mon_champ=" . (int)$mon_champ . " WHERE id_product=" . (int)$id_product;
Db::getInstance()->Execute($sql);
} else {
$sql = "DELETE FROM " . _DB_PREFIX_ . "ma_table WHERE id_product=" . (int)$id_product;
Db::getInstance()->Execute($sql);
}
} else {
$sql = "INSERT INTO " . _DB_PREFIX_ . "ma_table (id_product,mon_champ) VALUES (" . (int)$id_product . "," . pSQL($mon_champ) . ")";
Db::getInstance()->Execute($sql);
}
}
Este código debe adaptarse a sus necesidades.
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.