Cómo separar en varias tiendas un PrestaShop Multitienda

Hace unos días nos surgió la necesidad de deshacer un PrestaShop multitienda, es decir, hacer que cada una de las tiendas que tenía la instalación funcionase de manera independiente.

El contexto: Multitienda con varios dominios

Por ponernos en contexto, teníamos una instalación multitienda con un dominio (.com) para la tienda principal y otro dominio (.fr) para una segunda tienda. Estas dos tiendas realizaban pedidos internacionales, con distintos tipos de IVA, exenciones, transporte… lo cual hacia que la gestión en modo multitienda fuera complicada en muchos aspectos y que se produjeran muchos errores al gestionar cada tienda online. Por lo tanto se tomó la decisión de separar las tiendas y que cada una fuera un PrestaShop individual.

Antes de nada, hay que entender cómo hace PrestaShop para gestionar las distintas tiendas de una instalación multitienda. PrestaShop utiliza el campo id_shop en la base de datos. El valor de este campo en una instalación normal de PrestaShop normalmente será 1, haciendo referencia a la tienda principal en cada una de las tablas de la base de datos que corresponda. Cuando creamos una multitienda, y vamos añadiendo nuevas tiendas, PrestaShop asigna a cada una de ellas un valor incrementado en uno, para dar un identificador único a cada una de las nuevas tiendas. En nuestro caso dominio.com tenía el identificador 1 y dominio.fr era el 2.

Las tareas: Deshaciendo una multitienda en PrestaShop

Para realizar el cambio de Multitienda a «monotienda» en nuestro ecommerce, tuvimos que realizar las siguientes tareas:

  1. Crear un clon de la tienda actual en un nuevo hosting, bajo el dominio dominio.fr (Que era el dominio de la tienda secundaria).
  2. Eliminar la tienda secundaria en el ecommerce inicial. Es decir, en el PrestaShop donde estaban funcionando ambas tiendas, dejamos solamente la tienda principal (dominio.com).
  3. En el clon realizado para dominio.fr, asignar la tienda «secundaria» como principal. De esta manera quedaba como tienda principal la .fr y como secundaria la .com.
  4. Eliminar la tienda secundaria (.com) de este clon.
  5. Realizar ajustes en ambos sitios.

No vamos a describir a profundidad cada una de estas tareas, pero sí nos gustaría daros un pequeño truco para llevar a cabo la tarea número 3 de una manera rápida y ágil. A continuación os contamos cómo y os facilitamos un script PHP.

El truqui: Asignar otra tienda como tienda principal en un PrestaShop Multitienda

En la tarea 3 teníamos que asignar la tienda secundaria como tienda principal. Vamos a pensar, por ejemplo, que la tienda secundaria sea la 2 y que la principal sea la 1. Como ya sabemos cómo funciona PrestaShop, nos queda claro que la tarea a realizar es cambiar la ID de la tienda secundaria a 1 y de la principal a otro valor, por ejemplo, 3.

A nivel de base de datos consiste en realizar 3 operaciones en cada tabla que contenga el campo id_shop:

  • Modificar las entradas con id_shop 1 a un id_shop temporal que no sea 2, por ejemplo 3 -> Quitamos la asignación actual de la tienda principal.
  • Modificar las entradas con id_shop 2 a id_shop 1 -> con esto asignamos la tienda secundaria como principal.
  • Opcionalmente, podemos borrar la entradas que hagan referencia a id_shop 3.

Repasar cada tabla es un trabajo tedioso que además puede dar lugar a errores por omitir o no revisar tablas que contengan dicho campo, por todo ello, os pasamos este script que lo hará por nosotros:

1 – Obtenemos todas la tablas de la base de datos (Sustituye database por el nombre de tu base de datos):


2 – Revisamos cada tabla, si contiene el campo id_shop cambiamos los valores 1 por 3 y 2 por 1:


3 – A continuación os facilitamos todo el código:


Esperamos que este truco os pueda ser de utilidad y, recuerda, si necesitas ayuda con tu PrestaShop, pásate por nuestro apartado de soporte o contacta con nosotros, estamos encantados de echarte una mano.

Con esto y más ¡tu tienda online siempre preparada!

Te puede interesar

¿Necesitas ayuda más avanzada para solucionar tus problemas?

Contáctanos o echa un vistazo a nuestros servicios, entre los cuales podrás encontrar varios planes de mantenimiento de Prestahop.

Nuestros servicios

Impulsa la venta online y haz crecer tu negocio en poco tiempo.

6 Comentarios

  1. Buenos dias.
    Tengo una tienda mayorista y me gustaria tener una tienda adicional que maneje el mismo stock de productos unicamente aunque con precios distintos para poderla compartir con mis clientes mayoristas y que ellos muestren con precios diferentes. Quitar por supuesto la opcion de carrito de compras y con otro dominio. Con esta opcion es posible?
    Mi tienda es http://www.frambuesajoyas.com

    quedo muy atento.

    1. Buenos días.

      Una multitienda no te serviría, ya que el stock de cada tienda de gestiona de manera independiente.

  2. Y este script ¿donde se debe de poner y ejecutar?

    1. Buenas tardes Javier, en una ruta accesible desde tu tienda, por ejemplo en la raiz o en un a carpeta.

  3. Muchisimas gracias por el tutorial Javier, tenemos 3 tiendas de filatelia y numismática y nos han dado muchos problemas con Prestashop y finalmente vamos a separarlas, gracias por compartir esta información.

    1. Nos alegramos que nuestra entrada haya sido de utilidad ;)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *