Jump to content

No ejecuta un Override de Classes de un Módulo en Prestashop 1.7


Recommended Posts

Buenos días.

Instalé el módulo de AliExpress de Línea Gráfica y necesito hacer un override de la class AlliExpressAttribute para que se tenga en cuenta en futuras actualizaciones.

Lo he realizado de mil formas y Prestashop no ejecuta mi Override.

He creado el archivo AlliExpressAttribute.php en:

/modules/aliexpress_official/override/classes/AlliExpressAttribute.php
/override/modules/aliexpress_official/classes/AlliExpressAttribute.php
/override/classes/AlliExpressAttribute.php (esta ya por desesperación)

El archivo contiene la función public static function getGroups($id_category) en la que simplemente comento la parte en la que le especifica a la sentencia SQL el id_category_default, dado que vamos a subir productos en la categoría OFERTAS pero esa no es la categoría por defecto de los productos a subir.

<?php

class AliexpressAttributeOverride extends AliexpressAttribute
{
    public static function getGroups($id_category)
    {
        $id_lang = Context::getContext()->language->id;
        $id_shop = AliexpressConf::getShopId();
        $sql = 'SELECT DISTINCT fl.`id_feature`, fl.`name` FROM `' . _DB_PREFIX_ . 'feature_lang` fl
            JOIN `' . _DB_PREFIX_ . 'feature` f
                ON f.`id_feature` = fl.`id_feature`
            JOIN `' . _DB_PREFIX_ . 'feature_value` fv
                ON fv.`id_feature` = f.`id_feature`
            JOIN `' . _DB_PREFIX_ . 'feature_product` fp
                ON fp.`id_feature` = f.`id_feature`
            JOIN `' . _DB_PREFIX_ . 'product_shop` ps
                ON ps.`id_product` = fp.`id_product`
            WHERE fl.`id_lang` = ' . (int) $id_lang . ' AND ps.`id_shop` = ' . (int) $id_shop;
        /*if ((int) $id_category > 0) {
            $sql .= ' AND ps.`id_category_default` = ' . (int) $id_category;
        }*/

        if ($rows = Db::getInstance()->executeS($sql)) {
            foreach ($rows as $k => $row) {
                if ($values = FeatureValue::getFeatureValuesWithLang($id_lang, $row['id_feature'])) {
                    $rows[$k]['values'] = $values;
                } else {
                    $rows[$k]['values'] = array();
                }
            }
            return $rows;
        }
        return array();
    }
}

 

He borrado mil veces la caché, tanto en Rendimiento > Borrar caché, como por SSH eliminando la carpeta /var/cache/ y todo sigue igual. Adjunto configuración de la tienda. Tengo la reconfiguración de las plantillas cuando se actualizan, Cache: No y Modo depuración: Sí.

¿Hay algo que se me escapa?

Versión de Prestashop: 1.7.6.4

Gracias de antemano. Un saludo.

Captura de pantalla 2022-05-04 110857.png

Link to comment
Share on other sites

Hola.

Vaya, creía que sí que se podía hacer también en classes y controllers. Pues es un follón esto. Voy a probar suerte con lo que indicas, en un servidor de pruebas. Si funciona, vuelvo para indicaros la versión de Prestashop en la que funciona todavía.

Gracias por el aporte. Un saludo.

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...