Campos relacionados a las características
Acceda a la parte PRO de la herramienta para añadir campos personalizados:

Para acceder a la sección PRO, haga clic en el icono + de la columna de la derecha titulada «Campos disponibles».
Añadir una columna que muestre una característica predefinida del producto (sólo lectura)
Asegúrese de elegir la cuadrícula en la que desea añadir su campo - en este ejemplo, será la Catálogo - Rejilla de productos.

Añadir el campo
Haga clic en el icono de añadir para crear la línea para el nuevo campo e introduzca su ID «myfeature» en este ejemplo.

La fila para el campo se crea en la lista. Debería ver dos columnas como estas:
Añadir las consultas
En el panel de propiedades avanzadas de la derecha:
- seleccione el menú SQL Select y rellene:
RETURN ', (SELECT fvl.value FROM `' . _DB_PREFIX_ . 'feature_product` fp
LEFT JOIN `' . _DB_PREFIX_ . 'feature_value_lang` fvl
ON fp.id_feature_value = fvl.id_feature_value
WHERE fp.id_feature = 3
AND fp.id_product = p.id_product
AND fvl.id_lang = pl.id_lang) as myfeature ';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).
Aquí tomamos el id_lang=2 que corresponde al idioma francés de nuestra tienda. Esto puede variar en función de la configuración de su tienda.
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.
Añadir una columna que muestre una característica predefinida del producto (editable)
Asegúrese de elegir la cuadrícula en la que desea añadir su campo - en este ejemplo, será la Catálogo - Rejilla de productos.

Añadir el campo
Haga clic en el icono de añadir para crear la línea para el nuevo campo e introduzca su ID «myfeature» en este ejemplo.

La fila para el campo se crea en la lista. Debería ver dos columnas como estas:
Añadir las consultas
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 = [0=> '-'];
if($res) {
foreach ($res as $row) {
$tmp[$row['id_feature_value']] = $row['value'];
}
}
return $tmp;- seleccione el menú PHP enAfterUpdateSQL y rellene:
if (isset($_POST['myfeature']))
{
$feature_value = (int) Tools::getValue('myfeature', 0);
$sql = 'SELECT * FROM '._DB_PREFIX_.'feature_product WHERE id_product='.(int) $idproduct.' AND id_feature=3';
if (Db::getInstance()->executeS($sql))
{
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.
Añadir una columna que muestre una característica personalizada del producto (editable)
Asegúrese de elegir la cuadrícula en la que desea añadir su campo - en este ejemplo, será la Catálogo - Rejilla de productos.

Añadir el campo
Haga clic en el icono de añadir para crear la línea para el nuevo campo e introduzca su ID «myfeature» en este ejemplo.

La fila para el campo se crea en la lista. Debería ver dos columnas como estas:
Añadir las consultas
En el panel de propiedades avanzadas de la derecha:
- seleccione el menú SQL Select e introduzca :
return ' , (SELECT fvl_cus.value
FROM `' . _DB_PREFIX_ . 'feature_product` fp1_cus
INNER JOIN `' . _DB_PREFIX_ . 'feature_value_lang` fvl_cus ON (fp1_cus.id_feature_value = fvl_cus.id_feature_value)
WHERE fp1_cus.id_feature = "36"
AND fp1_cus.id_product = p.id_product
AND fvl_cus.id_lang = pl.id_lang
LIMIT 1) as myfeature';- seleccione el menú PHP onAfterUpdateSQL y rellene:
if (isset($_POST['myfeature']))
{
$feature_value = Tools::getValue('myfeature');
$sql = 'SELECT * FROM '._DB_PREFIX_.'feature_product WHERE id_product='.(int) $idproduct.' AND id_feature=36';
$res = Db::getInstance()->executeS($sql);
if ($res)
{
if ($feature_value)
{
$sql = 'UPDATE '._DB_PREFIX_."feature_value_lang SET value='".pSQL($feature_value)."' WHERE id_feature_value=".(int) $res[0]['id_feature_value'];
Db::getInstance()->execute($sql);
}
else
{
$sql = 'SELECT custom FROM '._DB_PREFIX_.'feature_value WHERE id_feature_value='.(int) $res[0]['id_feature_value'].' AND id_feature=36';
$isCustom = Db::getInstance()->getValue($sql);
$sql = 'DELETE FROM '._DB_PREFIX_."feature_product WHERE id_product='".(int) $idproduct."' AND id_feature='36'";
if (Db::getInstance()->execute($sql) && $isCustom)
{
$sql = 'DELETE FROM '._DB_PREFIX_.'feature_value WHERE id_feature_value='.(int) $res[0]['id_feature_value'];
if (Db::getInstance()->execute($sql))
{
$sql = 'DELETE FROM '._DB_PREFIX_.'feature_value_lang WHERE id_feature_value='.(int) $res[0]['id_feature_value'];
Db::getInstance()->execute($sql);
}
}
}
}
elseif ($feature_value)
{
$sql = 'INSERT INTO '._DB_PREFIX_.'feature_value (id_feature,custom) VALUES (36,1)';
if (Db::getInstance()->execute($sql))
{
$id_value = Db::getInstance()->Insert_ID();
$sql = 'INSERT INTO '._DB_PREFIX_.'feature_value_lang (id_feature_value,id_lang,value) VALUES ('.(int) $id_value.','.(int) $id_lang.',"'.pSQL($feature_value).'")';
if (Db::getInstance()->execute($sql))
{
$sql = 'INSERT INTO '._DB_PREFIX_.'feature_product (id_feature,id_product,id_feature_value) VALUES (36,'.(int) $idproduct.','.(int) $id_value.')';
Db::getInstance()->execute($sql);
}
}
}
}Aquí tomamos la característica ID 36. 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.