Tienda Privada para PrestaShop: guía completa
Instala y configura DataFirefly Tienda Privada: modos de acceso, página de inicio de sesión, login con Google, Facebook, Apple e Instagram, aprobación de cuentas y precios solo para miembros.
<p>DataFirefly Tienda Privada reserva toda tu tienda PrestaShop 8 y 9, o solo una parte, a los clientes que has aprobado. Esta guía cubre la instalación, los tres modos de acceso, el diseño de la página privada, el login social, la gestión de solicitudes y el modo de precios solo para miembros.</p>
<h2>Instalación</h2>
<p>En el back office, entra en Módulos > Gestor de módulos > Subir un módulo y suelta el archivo ZIP. Al instalarse, el módulo crea sus tablas, añade la pestaña Clientes > Solicitudes de acceso y registra la página privada (una URL del tipo /module/dfprivateshop/private, reescrita como /acceso-privado/ si las URL amigables están activas).</p>
<p>Abre después la configuración del módulo. Una banda en la parte superior recuerda el estado actual, tu dirección IP y la URI de redirección que debes declarar en los proveedores de login social, y señala los puntos bloqueantes: falta la extensión cURL, la carpeta img/dfprivateshop no tiene permisos de escritura, hay un módulo de caché de páginas instalado.</p>
<div class=»df-callout note»><p>El módulo se entrega desactivado. Nada cambia en tu tienda hasta que eliges un modo en la pestaña Acceso.</p></div>
<h2>Elegir un modo de acceso</h2>
<h3>Toda la tienda es privada</h3>
<p>Cada página exige una cuenta. Siguen accesibles: la página de acceso del módulo, la página de contacto si la autorizas, las páginas CMS que marcas como públicas, la página de restablecimiento de contraseña y los controladores de los módulos de pago. Es el modo de un mayorista, de un club o de una tienda en preparación.</p>
<h3>Solo las partes seleccionadas son privadas</h3>
<p>Designas categorías (sus subcategorías van incluidas), productos por ID, marcas, proveedores, páginas CMS, la página de inicio y patrones de URL con el carácter <code>*</code>. Los productos afectados también desaparecen de los listados, la búsqueda, el autocompletado, los filtros por facetas y los bloques de productos de otros módulos, para que no se cuele ningún nombre, imagen ni precio.</p>
<h3>Precios solo para miembros</h3>
<p>Interruptor independiente, utilizable con el modo desactivado o con las partes seleccionadas. El catálogo sigue público e indexable, pero los visitantes sin acceso no ven ni los precios, ni el botón de añadir al carrito, ni el filtro y el orden por precio. El módulo activa el modo catálogo nativo de PrestaShop solo para la petición en curso, sin escribir nada en la base de datos.</p>
<h2>Quién tiene acceso</h2>
<ul>
<li><strong>Los clientes conectados y activos.</strong> Si activas la restricción por grupo, solo entran las cuentas de los grupos elegidos; las demás ven el mensaje de acceso denegado.</li>
<li><strong>Los códigos de invitación.</strong> Un código por línea, con una validez en días. Quitar un código de la lista lo revoca de inmediato, también para quienes ya lo habían introducido.</li>
<li><strong>Las direcciones IP en lista blanca.</strong> Una IP o un rango CIDR por línea, IPv4 e IPv6. Útil para una oficina, un proveedor o un equipo de pruebas.</li>
<li><strong>Los robots de los buscadores</strong>, si activas la opción. Googlebot, Bingbot, Applebot y DuckDuckBot se verifican por DNS inverso y luego directo: un user agent falso no pasa.</li>
</ul>
<h2>Diseñar la página privada</h2>
<p>La pestaña Diseño controla la apariencia. Dos disposiciones: pantalla completa, con la tarjeta del formulario a la izquierda, en el centro o a la derecha del contenido multimedia, o dividida, con el multimedia a un lado y el formulario al otro, con un ancho ajustable entre el 35 y el 70 por ciento.</p>
<p>El fondo admite una imagen, un pase de dos o tres imágenes con zoom lento, un vídeo, o un vídeo y una imagen. Para el vídeo: un archivo MP4 o WebM subido (bucle sin sonido de 10 a 30 segundos, menos de 8 MB recomendados), una URL de YouTube integrada en modo de privacidad mejorada, o una URL de Vimeo. Puedes definir una imagen específica para móviles, donde el multimedia puede convertirse en banner sobre el formulario, en fondo, o desaparecer.</p>
<p>Los archivos se guardan en <code>img/dfprivateshop/</code>, fuera de la carpeta del módulo, así que sobreviven a las actualizaciones. Ajusta después la capa, el color de acento, el redondeo, el estilo de tarjeta (claro, oscuro o cristal esmerilado), el logotipo y el selector de idioma. El botón Vista previa de la banda muestra la página tal como la ven los visitantes, sin cerrar la tienda.</p>
<div class=»df-callout tip»><p>El vídeo no se carga en móviles por defecto, ni cuando el visitante tiene activado el ahorro de datos o ha pedido menos movimiento. Prevé siempre una imagen: también sirve de póster durante la carga.</p></div>
<h2>Solicitudes de acceso y aprobación de cuentas</h2>
<p>En la pestaña Registro decides si la pestaña de solicitud aparece en la página privada, qué campos se ofrecen (empresa, identificador de empresa o NIF-IVA, fecha de nacimiento, mensaje, newsletter, ofertas de socios) y cuáles son obligatorios. Una casilla de consentimiento RGPD puede enlazar a una página CMS; la fecha de aceptación se guarda con la solicitud.</p>
<p>Con la aprobación manual, cada registro crea una cuenta inactiva y una fila en Clientes > Solicitudes de acceso. Filtras por estado, origen o empresa, y apruebas o rechazas, de una en una o en lote. El cliente recibe el email correspondiente, en su idioma. Las direcciones de los dominios que indiques pueden aprobarse automáticamente, y tu equipo puede recibir un aviso en cada nueva solicitud.</p>
<p>La ficha del cliente muestra la solicitud y las cuentas sociales vinculadas. Activar un cliente desde su ficha equivale a aprobarlo: el estado de la solicitud se actualiza y el email sale.</p>
<h2>Login con Google, Facebook, Apple e Instagram</h2>
<p>Cada proveedor se activa por separado en la pestaña Inicio de sesión social. Copia la URI de redirección que aparece en la banda: debe declararse tal cual en el proveedor.</p>
<ul>
<li><strong>Google</strong>: crea un identificador OAuth de tipo aplicación web en Google Cloud Console y copia el ID de cliente y la clave secreta.</li>
<li><strong>Facebook</strong>: crea una aplicación en Meta for Developers, añade el producto Facebook Login y copia el ID y la clave secreta de la aplicación.</li>
<li><strong>Apple</strong>: crea un Services ID en tu cuenta de desarrollador de Apple y luego una clave Sign in with Apple. Necesitas el Services ID, el Team ID, el Key ID y el contenido del archivo .p8, pegado entero, con las líneas BEGIN y END.</li>
<li><strong>Instagram</strong>: Instagram Business Login solo autentica cuentas profesionales y nunca devuelve una dirección de email. El cliente la escribe en un breve formulario tras iniciar sesión.</li>
</ul>
<p>Si el email devuelto ya pertenece a una cuenta de cliente, el módulo pide una vez la contraseña de esa cuenta antes de vincular ambas, salvo que hayas elegido vincular automáticamente las direcciones certificadas por el proveedor. Los botones también pueden mostrarse en la página de acceso nativa del tema.</p>
<div class=»df-callout warn»><p>El login social requiere la extensión PHP cURL y una URI de redirección en HTTPS. La banda de configuración señala la falta de cURL y el estado de las URL amigables.</p></div>
<h2>Caché de páginas</h2>
<p>Las páginas mostradas a un visitante con acceso se envían con cabeceras que prohíben su almacenamiento en caché, también para LiteSpeed, Varnish y los CDN. Si usas un módulo de caché de páginas, desactiva la caché para los clientes conectados en sus ajustes: de lo contrario, un miembro puede recibir la versión anónima de una página, sin los productos o los precios reservados. La caché Smarty se vacía cada vez que guardas los ajustes del módulo.</p>
<h2>Resolución de problemas</h2>
<ul>
<li><strong>Ya no puedes acceder a tu propia tienda</strong>: añade tu dirección IP, que aparece en la banda de configuración, a la lista blanca.</li>
<li><strong>El botón de un proveedor no aparece</strong>: está activado pero sus credenciales están incompletas. La banda de configuración lo indica.</li>
<li><strong>Un login social devuelve un error</strong>: comprueba que la URI de redirección declarada en el proveedor es exactamente la de la banda, protocolo y subdominio incluidos.</li>
<li><strong>Los precios siguen visibles</strong>: comprueba que el visitante no está cubierto por la lista blanca de IP o por un código de invitación, y vacía la caché de páginas.</li>
<li><strong>Un producto privado sigue apareciendo en un bloque</strong>: el tema usado probablemente no aplica la clase product-miniature esperada. Contáctanos indicando el nombre del tema.</li>
</ul>