Adjuntar ficheros en el formulario de registro en Prestashop

Permitir que el usuario pueda enviar un fichero en el formulario de registro en Prestashop

El módulo permite que el usuario que se registre en la tienda pueda enviar en ese momento un documento para poder recibirlo nosotros.

Esta desarrollado por Hennes Hervé al igual que el módulo que permitía asignar automaticamente grupos en base a condiciones del registro de clientes.

La instalación y subida del módulo, sin problemas, desde la pestaña módulos -> módulos.

Instalando módulo que nos permitirá que el cliente en el momento de registrarse pueda enviar un documento

El módulo, no tiene ninguna opción de configuración en el panel.

Analizamos varias partes del código del módulo:

En el fichero:

modules/hhregistration/hhregistration.php

Vemos que tenemos un atributo privado de la clase del módulo llamado: _registration_allowed_extensions con este contenido:

array('pdf','doc','docx','jpg','png','gif','txt');

Esta son las extensiones de los ficheros que están permitidos subir, podemos añadir nuevas, o cambiarlas.

También, vemos que tenemos otro atributo privado de la clase llamado $_upload_dir ques donde indicamos el directorio donde se guardaran los ficheros que sube el cliente en el formulario de registro. En nuestro caso particular tiene asignado el directorio “files” que tenemos dentro del módulo.

Vemos que el módulo se registra en dos hooks (lo podemos ver dentro de la función install() )

  • displayCustomerAccountForm -> Muestra el campo nuevo en el formulario del registro (el hook esta disponible en el formulario de registro, por eso el dato que vamos añadir en este hook se vera luego en el formulario de registro)
  • actionCustomerAccountAdd -> Se ejecuta automáticamente cuando el usuario crea una cuenta en la tienda.

¿Qué contenido tiene la función del hook -> actionCustomerAccountAdd en nuestro caso particular?

Lo que hacemos es recoger el fichero que enviamos en el formulario de registro y guardarlo en el directorio “files” que esta dentro del mismo directorio del módulo.

¿Qué contiene tiene la función del hook -> displayCustomerAccountForm en nuestro caso particular?

Tiene simplemente el return al tpl que tiene el nuevo campo del fichero que luego aparecerá en el formulario del registro.

return $this->display(__FILE__, 'hookDisplayCustomerAccountForm.tpl');
  • ¿Qué contiene el fichero: hookDisplayCustomerAccountForm.tpl?
  • <div class="form-group">
    <label for="file-input">{l s='Justificatif Professionnel' mod='hhregistration'}</label>
    <input type="file" name="file_input" />
    </div>
    

    Simplemente contiene el campo “nuevo”  que se mostrara en el formulario del registro.

Ahora se muestra ya el nuevo campo en el formulario de registro, pero os falta el detalle de cambiar en el fichero:

/themes/default-bootstrap/authentication.tpl

Esta línea:

<form action="{$link->getPageLink('authentication', true)|escape:'html':'UTF-8'}" method="post" id="account-creation_form" class="std box">

por

</form><form action="{$link->getPageLink('authentication', true)|escape:'html':'UTF-8'}" method="post" id="account-creation_form" class="std box" enctype="multipart/form-data">

Hemos “añadido” en el form la siguiente instrucción: enctype=”multipart/form-data” para permitir que el formulario pueda enviar ficheros.

Recordar que los ficheros que el usuario enviar al registrarse en la tienda se guardan en el directorio: “modules/hhregistration/files/

¿Dónde puedo descargar el módulo actualizado que añade un campo nuevo en el formulario de registro que permite al usuario que se registra en tu tienda enviar un fichero y estar al tanto de las novedades de ese módulo?

  • https://github.com/nenes25/prestashop_hhregistration/
  • http://www.h-hennes.fr/blog/2016/02/18/prestashop-envoyer-des-fichiers-lors-de-la-creation-du-compte-client/

Evidentemente en la versión actual del módulo no estamos comprobando el cliente que ha enviado el fichero, al menos en la versión actual del módulo, el módulo simplemente podríamos decir que sirve para probarlo y testear el funcionamiento de los dos hooks que usa el módulo

Sigue leyendo

Prestashop 1.6.1.14 disponible para descargar

Prestashop acaba de publicar hoy (5 de junio del 2017) la versión 1.6.1.14, donde se han corregido mas de 15 errores respecto a su versión anterior.

Errores corregidos en Prestashop 1.6.1.14: Log de cambios

  • Back Office:
    • Bug fix:
      • #4803: Pipes in product names in autocomplete
      • #7908: Fix taxes in credit slip
      • #7806: Fix the refresh button of the stats bloc in the products list
      • #7821: Add API_KEY field to display the map
      • #7622: Set correct value on load to display the right tab
      • #7722: Translation of return merchandise fields
      • #7764: Fix html interpreted as text in carrier’s wizard summary
      • #7755: Fix non well formed numeric value
      • #7765: Fix error in HelperOptions
  • Front Office:
    • Bug fix:
      • #5739: Fix popover with multiple wishlists
      • #7673: Shipping cost indication wrong
      • #7350: Fix 404 bug when query string contains a LF
      • #7758: Fix manufacturer pagination
      • #7798: Fix JS error “Uncaught ReferenceError”
  • Core:
    • Bug fix:
      • #7814: Increase carrier delay length
      • #7917: Send Http 500 error code when we can’t connect to the database instead of a 200 code
      • #7913: Send Http 500 error code when we can’t connect to the database instead of a 200 code
      • #6080: make OrderInvoice overridable
    • Localization
      • Bug fix:
        • #7819: Replace EN (US) by EN (UK) in UK localization pack

Descargar Prestashop 1.6.1.14

Otras versiones de Prestashop: https://www.prestashop.com/es/versiones-anteriores

Evitar el envío de un email en Prestashop

No estamos hablando de desactivar el envío de un determinado email en base a los estados de pedidos (Pedidos -> Estados)

Realmente es útil para aquellos emails que no podemos deshabilitar en el panel, pero que queremos deshabilitar. (Tampoco hablamos de desactivar el envío de emails en general)

Por ejemplo vamos a desactivar este email, que recibe el cliente nada más el realizar el pedido: (Este email usa la plantilla “order_conf“)

Email del pedido en Prestashop

Email del pedido en Prestashop

Lo que vamos hacer es un “override” de la clase Mail.php y vamos a indicar que si nos llega la plantilla “order_conf” el email no se envía. (Como los envíos de los emails usan la función Send de la clase Mail pues hacemos la comprobación directamente en la clase)

Creamos el fichero con el nombre “Mail.php” que vamos a guardar en el directorio “/overrides/classes/

<?php
class Mail extends MailCore
{
public static function Send($id_lang, $template, $subject, $template_vars, $to,
$to_name = null, $from = null, $from_name = null, $file_attachment = null, $mode_smtp = null,
$template_path = _PS_MAIL_DIR_, $die = false, $id_shop = null, $bcc = null, $reply_to = null)
{
// No envía el email de la plantilla que nosotros vayamos a igualar en el "if"
if ($template == 'order_conf') {
return true;
}
return parent::Send($id_lang, $template, $subject, $template_vars, $to, $to_name, $from, $from_name, $file_attachment, $mode_smtp, $template_path, $die, $id_shop, $bcc, $reply_to);
}
}

Si observáis el código, aquí:

if ($template == 'order_conf')

estamos haciendo la comprobación de la plantilla.

Esto tiene un problema, que, si la misma plantilla la usan otras partes de la tienda, pues tampoco se enviara ese “email” 🙂

Por cierto, en su momento hicimos una guía específica para evitar que el cliente reciba el email de confirmación en Prestashop. (Es una forma diferente, pero más “especifica”, en este ejemplo hablamos de “forma general” para cualquier email que use la plantilla que se usa el email que recibe el cliente al realizar un pedido con el resumen del pedido (hemos puesto un ejemplo, pero podría haber sido con otra plantilla)

Información obtenida en:

https://www.prestashop.com/forums/topic/315165-disable-mail-for-credit-slip/

Documento realizado bajo Prestashop 1.6.1.12

Prestashop 1.6.1.13 disponible para descargar

Si recordamos, hace un mes aproximadamente, Prestashop, anuncio la versión 1.6.1.12 de Prestashop, hoy día 25 de Abril Prestashop ha sacado la versión 1.6.1.13, donde se han corregido más de 16 errores con respecto a sus antecesoras.

Algunos de los errores corregidos:

  • Panel de administración (BackOffice):
    • Error corregido en la importación de los temas cuando el directorio cache se vacía
    • Permitir transferencia de Stock entre almacenes bajo la multitienda
    •  Se repara la búsqueda en la gestión avanzada de stock.
    • Generación de facturas en el idioma del usuario
    • etc..
  • Front-Office
    • Precio en las combinaciones cuando existe un descuento por cantidad de la misma.
    • Reparación de los estilos del bloque de categorías del pie de página
    • etc..
  • Núcleo (Core)
    • Optimización de las reglas del carrito
    • etc..

Prestashop 1.6.1.13: Descargar

Log/Registro de cambios: Ver

 

¿Has subido un módulo y no aparece en el listado en Prestashop?

Pánico al subir un módulo en Prestashop

Pánico al subir un módulo en Prestashop

Toca hablar de un clásico, vas a la pestaña módulos -> módulos, subes un módulo, te dice que el módulo se ha subido correctamente, pero te pones a buscar en la pestaña módulos y no aparece, entonces te entra el pánico.

Una de las posibles causas es que el directorio del “módulo” no coincida con el nombre real.

Una forma de comprobarlo es descomprimir el propio módulo en tu ordenador:

Descomprimir Módulo

Una vez lo hayas descomprimido, accede a la carpeta:

Carpeta del módulo descomprimida

Accedemos a ver su contenido:

Contenido del módulo en Prestashop

Vemos que no aparece ningún fichero llamadoslidermolon.php“, lo que si vemos es el fichero “slider.php” que viene a ser en nuestro caso el nombre de la clase principal del módulo.

Clase del Módulo

Por lo tanto el nombre del directorio del módulo no se puede llamar “slidermolon“, se debe llamar “slider“.

Renombramos el directorio del módulo (atención, el directorio que tiene los ficheros del módulo en cuestión)

Cambiando nombre al directorio del módulo

Una vez renombrado, lo comprimimos 🙂

Comprimir directorio del módulo para poder subirlo en Prestashop

Ahora, nuestro fichero se llama “slider.zip”

Módulo preparado para subirlo a tienda

Evidentemente, si ya habías subido el módulo, entrar al directorio modules y ver por ejemplo estos tres casos. 

  • 1 – Que no tengas los ficheros del módulo en el directorio raíz de modules
  • 2 – Si existe una carpeta del módulo en el directorio modules que tenga el mismo nombre que la clase principal del módulo. (Como hemos visto en este ejemplo)
  • 3 – Si el nombre de la carpeta es correcto, revisar que dentro de la carpeta estén los ficheros y directorios del módulo y no la carpeta del módulo y después otra carpeta con el mismo nombre, y dentro de esa carpeta los directorios y fichero del módulo

Localización de los menús del panel de Prestashop 1.6 en Prestashop 1.7

Siendo hoy el último día de semana santa, y como dije en su momento, desconozco cuando voy a volver por aquí, os recuerdo que tenemos documentado exhaustivamente los cambios de localización de las pestañas entre el panel de administración de Prestashop 1.7 y de versiones anteriores.

De esta forma, si antes habías estado trabajando con versiones anteriores de Prestashop, no te perderás por el panel de administración de esta nueva versión.

Prepárate para entrar en el universo oscuro de Prestashop

¿Cómo puedo ver esté documento?

Lo tienes elaborado aquí: (Pincha en la imagen para acceder al documento)

¿Dónde están las opciones del menú del panel de administración de Prestashop 1.6 en Prestashop 1.7?


¿Dónde están las opciones del menú del panel de administración de Prestashop 1.6 en Prestashop 1.7?

Cambiar ficha técnica de ubicación en el producto en Prestashop 1.6

Imaginemos que queremos que la ficha técnica que hemos definido en el producto, se muestre encima del botón “imprimir” de la ficha del producto.

Ubicación de la ficha técnica en Prestashop

 Por defecto, la ficha se muestra en la parte inferior de la ficha del producto.

Ubicación real de la ficha del producto en Prestashop

Para cambiar la ficha de ubicación, vamos al fichero:

“/themes/default-bootstrap/product.tpl”

Buscamos el siguiente bloque de instrucciones:

{if isset($features) && $features}
<!-- Data sheet -->
<section class="page-product-box">
<h3 class="page-product-heading">{l s='Data sheet'}</h3>
<table class="table-data-sheet">
{foreach from=$features item=feature}
<tr class="{cycle values="odd,even"}">
{if isset($feature.value)}
<td>{$feature.name|escape:'html':'UTF-8'}</td>
<td>{$feature.value|escape:'html':'UTF-8'}</td>
{/if}
</tr>
{/foreach}
</table>
</section>
<!--end Data sheet -->
{/if}


Código de la ficha técnica del producto en Prestashop

Y vamos a colocar el código, justo debajo de la siguiente instrucción:

{if isset($HOOK_EXTRA_RIGHT) && $HOOK_EXTRA_RIGHT}{$HOOK_EXTRA_RIGHT}{/if}

Código de la ficha técnica cambiado de ubicación en Prestashop

Sigue leyendo

No me aplica el impuesto en el panel en Prestashop

¿Qué está pasando con los impuestos en Prestashop?

Problema muy comentado en el pasado en la Comunidad que fue respondido muchas veces, no recuerdo ahora mismo de que versiones de Prestashop exactas hablábamos en aquella época, pero por ejemplo vamos hacer el miniTip bajo Prestashop 1.6

Estoy en la ficha del producto, en Catalogo -> Productos, editando el producto y cuando le digo que me aplique un tipo de impuesto, me añade el mismo precio con el Impuesto que sin el impuesto aplicado.

Mismo precio con/sin impuestos en Prestashop

Observamos en la imagen que aparece el mismo precio tanto en el precio con y sin impuestos, y que curiosamente es la única regla de impuestos que falla, si selecciono el resto de funciona perfectamente.

Nos vamos a la pestaña Localización -> Impuestos (En Prestashop 1.7 la pestaña Internacional – Impuestos), vemos que el impuesto está bien creado, nos vamos a la pestaña Localización -> Reglas de Impuestos (En Prestashop 1.7 Internacional -> Impuestos (Reglas de Impuestos) y vemos que la regla de impuestos en cuestión está correctamente creada, y tiene asociado el impuesto y que además está configurada correctamente en los países.

¿Qué hacemos? ¿Entramos en panico? ¿Es el fin del mundo Prestashopero?

¿Cómo podemos arreglar este problema de los impuestos en Prestashop?

¿Cómo podemos arreglar este problema de los impuestos en Prestashop?

Vamos a realizar una miniChapuza express, vamos a la pestaña Localización -> Impuestos, creamos un nuevo impuesto

Creando impuesto en Prestashop

Ahora nos dirigimos a la pestaña Localización -> Reglas de Impuestos y creamos una regla nueva a la que le vamos aplicar el impuesto que hemos creado anteriormente.

Bloque 1 – Creación de la regla de impuestos

Bloque 2 de la creación de la regla de impuestos en Prestashop

Ahora, solo nos queda aplicar a los productos la nueva regla de impuestos que hemos creado.

¿Cómo podemos aplicar la nueva regla de impuestos que hemos creado a los productos en Prestashop? Sigue leyendo

¿A los clientes no les guarda la información del carrito en Prestashop?

Imaginemos que tienes un cliente que va tu tienda, y añade 5 productos al carrito, pero tiene una urgencia y tiene que salir, y por el camino en un momento de pausa, intenta continuar la compra, pero sospechamente ya no le aparecen los 5 productos que tenía añadidos en el carrito y tiene que añadirlos de nuevo.

¿Cómo podemos hacer que guarde la información del carrito la próxima que vez que inicie sesión en Prestashop?

En Prestashop 1.6, en la pestaña Preferencias  -> Clientes

Configuración básica de las opciones de los clientes en Prestashop 1.6

Opción “Mostrar el carrito al iniciar sesión“.

Recuperar  información del carrito cuando el cliente vuelve a iniciar sesión en Prestashop 1.7

Recuperar información del carrito cuando el cliente vuelve a iniciar sesión en Prestashop 1.7

En Prestashop 1.7, en la pestaña Parámetros de la tienda -> Ajustes sobre Clientes

Opciones básicas de los clientes en Prestashop 1.7

Opción “Mostrar el carrito al iniciar sesión

Recuperar carrito al iniciar sesión en Prestashop 1.7


Debemos señalar en dicha opción (en ambas versiones de Prestashop) el valor ‘SÍ” en la opción que hemos comentado, de esta manera cuando el cliente vuelva a iniciar sesión en la tienda, podrá recuperar su carrito (ver los productos que ya tenía añadidos) y proseguir con la compra.

Sigue leyendo

No pueden ver mi tienda Prestashop en China

No puedo ver mi tienda en Prestashop

Imaginemos que tienes un familiar/amigo viviendo por ejemplo en China (digo China, por poner un ejemplo) y quieres enseñarle la tienda, le pasas el enlace de tu tienda, y cuando tu amigo se dirige a ver la tienda te dice que no puede verla y que se encuentra con el aviso del siguiente error: “503 Overloaded” -> No puede acceder a nuestra tienda desde su país. Le pedimos disculpas.


No puedo acceder a mi propia tienda en Prestashop

¿Qué esta ocurriendo? ¿Por qué no puede ver mi tienda?

Posiblemente sea debido a que, en el panel de tu tienda, en la pestaña Preferencias -> Geolocalización, hayas activado la propia Geolocalización, revisa las restricciones por países, si sigue con el mismo problema prueba meter la IP de tu amigo en la lista blanca (IP ADDRESS WHITELIST), que compruebe también si algún otro vecino con alguna otra conexión tiene el mismo problema, lo que está claro que es el problema proviene de la misma configuración/opción de Geolocalización en Prestashop

Configuración Geolocalización en Prestashop 1.6

Ah, en Prestashop 1.7 (al menos en la 1.7.1.0), la pestaña Internacional -> Localización (Opción Geolocalización)

Configurar Geolocalización en Prestashop 1.7

Y si, es un caso real (lo de China), no recuerdo en que año fue, pero un forero tuvo el problema en el pasado (hace la tela de años) este problema, y casi le da un infarto, menos más que pudo solucionar el problema 🙂