Jump to content

Problema con multi-tienda y carrito


Recommended Posts

Buenos días,

Dispongo de una multi-tienda que me da problemas con la maquetación del carro, a ver si me explico.

Originalmente, tenía una tienda con un tema que se había hecho a medida.

Unos meses más tarde cree una multi-tienda, añadiendo 3 tiendas más (un total de 4) y estas 3 tiendas usan el tema WareHouse.

Me encuentro que en 3 estas últimas tiendas, cuando añado un producto al carrito y me recarga por ajax las cantidades, la maquetación del carrito se me muestra como en la tienda original (que no tiene nada que ver con las 3 tiendas de WareHouse).

Me estoy volviendo un poco loco, ya que no comprendo por qué si estoy en una tienda que usa el tema a medida, por qué me carga su fichero .tpl

Esto lo he comprobado insertando un console.log y viendo lo que carga cada vez.

¿Alguna idea de por dónde podría tirar para conseguir que el TPL de mis tiendas que usan el tema WareHouse, usen ese TPL y no el TPL de la primera tienda, que es a medida?

¡Un saludo y gracias!

Link to comment
Share on other sites

Hola!

Un pequeño problema lo he resuelto, que era que se "sobreescribirera" el TPL del carrito y saliera el de un tema que no correspondía.

En la multi-tienda, si seleccionaba todas las tiendas e iba al módulo del carrito tenía habilitado el check de "all shops", he desmarcado esto.

Luego he ido tienda por tienda, entrando al backoffice por cada dominio, habilitando de nuevo el carrito, pero solo para cada tienda y ya no me modifica la apariencia del carrito.

Ahora me pasa que tengo los dos modales superpuestos, miraré a ver de donde carga cada uno.

Si encuentro la solución la pongo y que quede documentado por si a alguien le pudiera pasar

  • Like 1
Link to comment
Share on other sites

Al final borrando la caché se ha solucionado el tema de los modales.

Resumen de lo hecho, nunca configurar el carrito con la opción de "all shops" habilitado, en tal caso, con "all shops" dejarlo deshabilitado y luego entrar al backoffice de cada dominio y activarlo tienda a tienda.

Link to comment
Share on other sites

2 hours ago, idnovate.com said:

El código que te carga dinámicamente al añadir un producto al carrito suele venir de un JS o de un TPL. Identifica primero dónde está ese código y postea la ruta, para ver si es posible sobreescribirlo en el theme.

Hola,

A pesar de los cambios, vuelve a fallar.

Si veo las peticiones desde una multi-tienda que me pinta mal el carrito, la petición que me devuelve el "html" es la siguiente:https://eldominiodeunamultitienda.es/module/ps_shoppingcart/ajax

No entiendo por qué me trae el html de un tema que no corresponde... ¿Alguna idea?

Edito: Viendo la función initContent dentro de /httpdocs/modules/ps_shoppingcart/controllers/front es como si la instancia de la tienda no la detectara correctament...

Edited by javiervallejo (see edit history)
Link to comment
Share on other sites

On 6/3/2022 at 10:24 PM, idnovate.com said:

¿Puedes subir una captura?

Ahí va una captura para tratar de explicar lo que me sucede.

He revisado los ficheros y no hay ninguna modificación hecha en el PrestaShop y módulo de carrito.

La tienda está en desarrollo y cerrada.

problema-ajax-multistore.jpg

Link to comment
Share on other sites

La función ajax llama a:

$modal = $this->module->renderModal(
    $this->context->cart,
    (int) Tools::getValue('id_product'),
    (int) Tools::getValue('id_product_attribute'),
    (int) Tools::getValue('id_customization')
);

Y:

return $this->fetch('module:ps_shoppingcart/modal.tpl');

En la función fetch de Module hay:

if ($compile_id === null) {
    $compile_id = $this->getDefaultCompileId();
}

$template = $this->context->smarty->createTemplate(
    $templatePath,
    $cache_id,
    $compile_id,
    $this->smarty
);

La primera devuelve:

public function getDefaultCompileId()
{
    return Context::getContext()->shop->theme->getName();
}

Printa esa variable.

Y añade también algunas trazas en la 2ª a ver si descubrimos qué plantilla va a buscar.

  • Like 1
Link to comment
Share on other sites

On 6/8/2022 at 9:53 AM, idnovate.com said:

La función ajax llama a:

$modal = $this->module->renderModal(
    $this->context->cart,
    (int) Tools::getValue('id_product'),
    (int) Tools::getValue('id_product_attribute'),
    (int) Tools::getValue('id_customization')
);

Y:

return $this->fetch('module:ps_shoppingcart/modal.tpl');

En la función fetch de Module hay:

if ($compile_id === null) {
    $compile_id = $this->getDefaultCompileId();
}

$template = $this->context->smarty->createTemplate(
    $templatePath,
    $cache_id,
    $compile_id,
    $this->smarty
);

La primera devuelve:

public function getDefaultCompileId()
{
    return Context::getContext()->shop->theme->getName();
}

Printa esa variable.

Y añade también algunas trazas en la 2ª a ver si descubrimos qué plantilla va a buscar.

Hola,

No localizo la función getDefaultCompileId en la versión 1.7.5.2 de PS.

A modo temporal y de momento, para que me pinte bien el TPL pregunto el dominio y en función del mismo pinto un tpl u otro.

¡¡Muchas gracias por las respuestas!!

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...