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

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


Objetivo

Queremos añadir una columna que muestre los valores personalizados de una característica para los productos mostrados en la parrilla de productos.

Esto nos permitirá mostrar y editar el texto del valor personalizado para los productos.

 

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: Autor
Tabla: Another Table
Tipo: Editable
Actualizar las combinaciones: No

 

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 AND fvl_cus.id_lang='.(int)$id_lang.')
                WHERE fp1_cus.id_feature = "36" 
                AND fp1_cus.id_product = p.id_product LIMIT 1) as myfeature';

 

- seleccione el menú PHP onAfterUpdateSQL y rellene:

if (isset($_POST["myfeature"])) {
    $feature_value = Tools::getValue('myfeature', 0);
    $sql = "SELECT * FROM " . _DB_PREFIX_ . "feature_product WHERE id_product='" . (int)$idproduct . "' AND id_feature='36'";
    $res = Db::getInstance()->ExecuteS($sql);
    if (count($res)) {
        
							$sql = "SELECT custom FROM "._DB_PREFIX_."feature_value WHERE id_feature_value=".intval($res[0]['id_feature_value'])." AND id_feature=36";
							$fv=Db::getInstance()->getRow($sql);
							
        if ($feature_value) {
            $sql = "UPDATE " . _DB_PREFIX_ . "feature_value_lang SET value='" .pSQL($feature_value). "' WHERE id_feature_value=".intval($res[0]['id_feature_value'])."";
            Db::getInstance()->Execute($sql);
        } else {
            $sql = "DELETE FROM " . _DB_PREFIX_ . "feature_product WHERE id_product='" . (int)$idproduct . "' AND id_feature='36'";
            Db::getInstance()->Execute($sql);
            if ($fv['custom'])
            {
                 $sql = "DELETE FROM " . _DB_PREFIX_ . "feature_value WHERE id_feature_value='" . (int)$res[0]['id_feature_value'] . "'";
                 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);
            }
        }
    } else {
        if ($feature_value) {
								    $sql="INSERT INTO "._DB_PREFIX_."feature_value (id_feature,custom) VALUES (36,1)";
								    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 (".intval($id_value).",".intval($id_lang).",'".pSQL($feature_value)."')";
									   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.




Artículos relacionados