Jump to content

Compartir Cesta en Multitienda con dos dominios diferentes, no me funciona


Recommended Posts

Buenas! :)

 

He configurado en un grupo nuevo de multitienda para que pueda conmpartir clientes, pedidos, etc. y dentro de este grupo he añadido 2 tiendas con sus respectivas URL y las dos como principales.

 

Pongamos de ejemplo, www.dominio1.com y www.dominio2.com

 

El hecho es que por más que lo intento no hay manera que el carrito sea el mismo para uno y para otro. Es decir que si añadio dos productos en www.dominio1.com, y luego voy a www.dominio2.com, el carrito para www.dominio2.com está vacío.

 

Por lo visto me están funcionando independientemente uno del otro. Aunque en las opciones de compartir pedidos en la configuración del grupo de tiendas dice:

 

Una vez que se esta opción es activada (lo cual sólo es posible si los clientes y las cantidades disponibles se comparten entre las tiendas), el carrito del cliente será compartido entre todas las tiendas de este grupo. De esta manera, cualquier compra iniciada en una de las tiendas de este grupo podrá ser completada en otra tienda del mismo grupo. Advertencia: usted no podrá desactivar esta opción una vez que se genere una orden en al menos una tienda de este grupo.

 

Por lo que no entiendo por que no me funciona.

 

Primero tenía la versión 1.5.1 y lo último fue probar a la versión más actual que es la 1.5.6. Y sigue sin funcionar.

 

Los dos dominios si que funcionan independientemente uno del otro correctamente, tengo Cpanel y añadí el segundo dominio como Parked Domain y me ha funcionado. Sólo falta que la cesta se comparta entre los dos dominios.

 

¿Me podéis ayudar a solventarlo por favor?

 

Muchísimas gracias por adelantado  :)

 

Link to comment
Share on other sites

Gracias por tu respuesta, me he mirado de arriba abajo e intentado de nuevo con los pasos de estas instrucciones pero sigue sin funcionar.

 

A ver imagino que los datos del carrito se guardan por cookies, pero las cookies se guardan por dominios, y al ser dos dominios diferentes que quiero que compartan la misma cesta, es por eso que debe fallar, sin embargo Prestashop debe hacer algo para solucionar este problema, ya que dicen que se pueden compartir las cestas, por eso no entiendo porqué. Si alguien puede ayudarme a sacar luz a este problema le estaré enormemente agradecido, sigo intentándolo y si alguna de vuestras opiniones o soluciones me ayuda a dar por cerrado el tema pues genial :)

 

Muchas gracias

 

Edito: Gracias a este hilo http://www.prestashop.com/forums/topic/200209-multi-shop-different-domains-config he sacado en claro que es problema de las cookies las cuales son unas para cada dominio, por lo que hay que hacer que uno de los dominios grabe en las cookies del dominio principal. 

 

La pregunta és, ¿Alguien sabe cómo utilizar las cookies del dominio principal en la segunda tienda con dominio diferente?

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

  • 1 year later...
  • 6 months later...

Buenas! :)

 

He configurado en un grupo nuevo de multitienda para que pueda conmpartir clientes, pedidos, etc. y dentro de este grupo he añadido 2 tiendas con sus respectivas URL y las dos como principales.

 

Pongamos de ejemplo, www.dominio1.com y www.dominio2.com

 

El hecho es que por más que lo intento no hay manera que el carrito sea el mismo para uno y para otro. Es decir que si añadio dos productos en www.dominio1.com, y luego voy a www.dominio2.com, el carrito para www.dominio2.com está vacío.

 

Por lo visto me están funcionando independientemente uno del otro. Aunque en las opciones de compartir pedidos en la configuración del grupo de tiendas dice:

 

Una vez que se esta opción es activada (lo cual sólo es posible si los clientes y las cantidades disponibles se comparten entre las tiendas), el carrito del cliente será compartido entre todas las tiendas de este grupo. De esta manera, cualquier compra iniciada en una de las tiendas de este grupo podrá ser completada en otra tienda del mismo grupo. Advertencia: usted no podrá desactivar esta opción una vez que se genere una orden en al menos una tienda de este grupo.

 

Por lo que no entiendo por que no me funciona.

 

Primero tenía la versión 1.5.1 y lo último fue probar a la versión más actual que es la 1.5.6. Y sigue sin funcionar.

 

Los dos dominios si que funcionan independientemente uno del otro correctamente, tengo Cpanel y añadí el segundo dominio como Parked Domain y me ha funcionado. Sólo falta que la cesta se comparta entre los dos dominios.

 

¿Me podéis ayudar a solventarlo por favor?

 

Muchísimas gracias por adelantado  :)

hola anhel,

como hiciste para configurar los dos dominios?

yo quiero configurar dos dominios diferentes en multitienda, pero no puedo...y no encuentro la información por ningún lado...

por ejemplo:  www.vacas.com y www.caballos.com  - son dos dominios diferentes pero en el mismo hosting

he visto en google que habria que aparcar uno para que el otro funcione. el problema con aparcar un dominio que este en principio funcionando ya, y que tiene sus propios emails por ejemplo, se perderian al aparcar el dominio, ya que hay que borrar todo para aparcarlo...

para mi no tiene sentido de enviar emails de [email protected]  a un cliente que entro a caballos.com, no?  y que quizas espera un email de [email protected] jaja.. solo un ejemplo.

quiero configurar pues dos tiendas con los mismos productos y todo lo demas, pero en dos dominios diferentes y administrarlas en PS multitiendas, las dos al mismo tiempo y separadamente.

me puedes ayudar? alguna idea?

espero haberme explicado bien

gracias de antemano

jr

Link to comment
Share on other sites

  • 2 months later...
  • 1 month later...

Hola a todos, os explico mi solución que es sencilla y efectiva, a ver si os vale. Vamos a suponer que tenemos un prestashop con multitienda y cada una de ellas con un dominio (exampl1.com, example2.com,example3.com...),da igual el número de dominios/tiendas que tengais.

 

Paso 1) Codificamos las cookies del dominio actual (creamos una cadena) y se las pasamos al .tpl dónde tengamos los links de las diferentes tiendas. Para hacerlo, vamos al PHP que "genera" los datos para el .tpl (en mi caso es un simple módulo que genra un menu superior dónde estan los enlaces a las diferentes tiendas).

 

Así, en el PHP:

//config. Multicarrito

//codificamos la variable global $_COOKIE
$cookies_compartidas=htmlentities(base64_encode(serialize($_COOKIE)));

// Y la metemos en smarty para que el tpl la pueda leer
$this->smarty->assign('cookies_compartidas', $cookies_compartidas);
 

Seguidamente, vamos a editar el tpl que és el que muestra el menu. en Mi caso es una lista <UL><LI> con CSS para hacerlo bonito: La cuestión es que cuándo hagamos click sobre el enlace para ir a otra tienda/dominio, envíe esa cookie que hemos codificado al nuevo dominio al que queremos ir.

 

Modificamos el .tpl:

{* creamos un formulario "invisible" que enviará las cookies *}
<form action="foo" method="post" id="frmC000" STYLE='display:none;'>
<input type='hidden' id='shC000' name='shC000' value='{$cookies_compartidas}'>
</form>
<div class="menu_tiendas">
<ul>
{* links a las diferentes tiendas, la etiqueta Alt contiene la URL de la tienda, que lo ponemos como 'action' al formulario*}
<li>
  <A alt="http://www.dominio1.com" onClick="$('#frmC000').attr('action',$(this).attr('alt'));$('#frmC000').submit();">Tienda 1</A>
</li>
<li>
  <A alt="http://www.dominio2.com" onClick="$('#frmC000').attr('action',$(this).attr('alt'));$('#frmC000').submit();">Tienda 2</A>
</li>
<li>
  <A alt="http://www.dominio3.com" onClick="$('#frmC000').attr('action',$(this).attr('alt'));$('#frmC000').submit();">Tienda 3</A>
</li>
</ul>    

Ahora, con eso, cuándo hagámos click en cualquier enlace a nuestras tiendas, en vez de ir directamente al dominio, irá pero enviando la cookie.

 

Paso 2) leemos las cookies. Ahora, debemos leer esas cookies justo antes de actualizar nuestro carrito. Para ello, sobreescribiremos la función init del FrontController (recordad crear un nuevo FrontController.php en override/classes/controller para que con las actualizaciones continuen funcionando).

class FrontController extends FrontControllerCore
{
	public function init()
	{
            // la variable $_POST ya debería ser global, pero por algún motivo, si no la declaro, no funciona
            global $_POST;
            //  BY SAM, hemos recibido cookies??
            if(isset($_POST['shC000'])){
                //descodificamos las cookies
                $cookies_import=ToolsCore::unSerialize(base64_decode($_POST['shC000']),true);
                $cookie_lifetime = time() + 24 * 3600);
                foreach($cookies_import as $nombre=>$valor)
                {
                    //borramos la cooki anterior
                    setcookie($nombre,'',time()-3600*100,'/', $_SERVER['HTTP_HOST'],isset($_SERVER['HTTPS'])?true:false);
                    // establecemos la nueva cookie
                    setcookie($nombre,$valor,$cookie_lifetime,'/', $_SERVER['HTTP_HOST'],isset($_SERVER['HTTPS'])?true:false);
                    
                    // si descomentamos, generará una linea en en log de errores para ver si se establecen
                    //error_log("Cookie establecida en ".$_SERVER['HTTP_HOST'].": ".$nombre."=".$valor,0);
                }
            } 
            // lamamos al init de la clase FrontController original 
            parent::init();
	}

Et voilà, magia hecha, rápido y funcional.

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

  • 4 months later...
  • 2 months later...
  • 2 months later...
  • 4 months later...

Hola, uso la última versión de PS (1.7.0) y sigue sin funcionar el compartir login y carrito en una multitienda con 2 dominios diferentes. Necesito que el cliente pueda comprar artículos de cualquiera de las 2 tiendas en un mismo pedido, tal como dice PS que se puede hacer con la multitienda habilitando estas opciones. Según la info en este foro es un problema con las cookies, ¿cómo puedo solucionarlo?. He probado muchas opciones y ninguna funciona, solo me queda por probar la de igneis, pero no llego a comrpenderlo del todo.

¿Alguna solución que funcione seguro?

Link to comment
Share on other sites

  • 3 years later...

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