Construimos, explora, una nueva experiencia de soporte está en marcha…
¡Eche un vistazo a nuestra nueva base de conocimientos ahora!
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.