Hooks de la página de confirmación del pedido en Prestashop 1.7

En este TIP de Prestashop, comentaremos los hooks/posiciones disponibles en la página de confirmación del pedido en Prestashop 1.7

Si accedemos al fichero: “/themes/classic/templates/checkout/order-confirmation.tpl” vemos disponibles los siguientes hooks (en la página de confirmación del pedido)

  • displayOrderConfirmation

    Hook -> displayOrderConfirmation

  • displayPaymentReturn

    displayPaymentReturn

  • displayOrderConfirmation1

    displayOrderConfirmation1

  • displayOrderConfirmation2 (vemos que tenemos añadido el módulo de productos destacados)

    displayConfirmation2

  • Todos los hooks

    Hooks página de confirmación del pedido

Sigue leyendo

Print Friendly, PDF & Email

Banner de la página principal en la cabecera en Prestashop 1.7

En este pequeño documento, vamos a cambiar de localización del módulo de banner que se muestra en la página principal para colocarlo en la cabecera de la tienda.

Banner principal en Prestashop 1.7

La idea es dejar ese banner en la cabecera de la tienda.

Banner cabecera

Vemos que en el fichero: /themes/classic/templates/_partials/header.tpl (Versión 1.7.2.4 de Prestashop) disponemos de la siguiente línea de código:

{block name='header_banner'}
<div class="header-banner">
{hook h='displayBanner'}
</div>
{/block}

header.tpl

Y la vamos a dejar del siguiente modo (hemos encerrado la impresión del hook -> displayBanner dentro de un div con clase container):

{block name='header_banner'}
<div class="header-banner">
<div class="container">
{hook h='displayBanner'}
</div>
</div>
{/block}

header.tpl

El siguiente paso es ir a la pestaña Diseño -> posiciones de los módulos, pulsamos en “Insertar un módulo

Insertar módulo hook

Y vemos que no encontramos el hook -> displayBanner

No aparece hook -> displayBanner

Vamos a crear nosotros el hook, mediante el módulo gratuito de Vekia: Crear Hook mediante el módulo de Vekia

Una vez hayamos creado el hook:

Creando hook

Volvemos a la pestaña Diseño -> Posiciones de los módulos y ahora si podremos anclar el módulo del banner en el hook -> displayBanner

Anclando módulo en el displayBanner

Finalmente, lo veremos del siguiente modo:

Logo cabecera

Vemos que queda demasiado ajustado, podemos meterle un relleno, añadiendo, por ejemplo, en el fichero:

/themes/classic/assets/css/custom.css

La siguiente instrucción:

#header .header-banner {
padding: 1em;
}

Sigue leyendo

Print Friendly, PDF & Email

Creación de un módulo de pago en Prestashop 1.7

Hace tiempo que no me paso por el blog francés de h-hennes, y a que resaltar que últimamente tiene unos artículos interesantes, donde traduciré parte de unos de los artículos que podéis ver de forma completa en su mismo blog y que me ha parecido que os puede interesar.

En este pequeño TIP rápido que es solo recomendado para aquellas personas que hayan tocado el desarrollo de módulos orientados a métodos de pago en versiones anteriores de Prestashop, comentare algunos aspectos básicos que se introducen como novedad en Prestashop 1.7 respecto a Prestashop 1.6.

A los módulos que gestionan los sistemas de pago, a que indicarles que usan la clase: PaymentOption (antiguamente esto no se hacía)

Es decir, la primera línea de código de la clase de un módulo que gestiona un sistema de pago es:

use PrestaShop\PrestaShop\Core\Payment\PaymentOption;
Indicar que usamos la clase PaymentOption

Indicar que usamos la clase PaymentOption

Por otro lado, la clase del módulo sigue heredando de PaymentModule (esto no ha cambiado)

 Clase del módulo hereda de PaymentModule

Clase del módulo hereda de PaymentModule

¿En que hooks queda instalado y registrado un módulo que gestiona un método de pago (transferencia bancaria, cheque, etc..) ?

Registrando módulo en hooks

Habitualmente queda registrado en los siguientes hooks:

  • paymentOptions -> Este hook si podemos decir que es nuevo, y es el que vemos cuando estamos viendo los métodos de pago en el proceso de pedido (a la hora de seleccionarlos)

    Listado de los métodos de pago en Prestashop 1.7

  • paymentReturn -> Este hook no tiene sorpresa porque es el mismo que se usaba en versiones anteriores para devolver la confirmación del pedido.

Vayamos a ver el interior de la función del hook -> paymentOptions que tiene por ejemplo la clase principal del módulo de Cheque (modules/ps_checkpayment/ps_checkpayment.php) que lleva Prestashop.

hookPaymentOptions

Dentro de la función de este hook, comento la parte más importante (obviando el resto que ya conocéis)

Aquí estamos creando un objeto de la Clase PaymentOption.

$newOption = new PaymentOption();

A través de ese objeto vamos a poder definir dentro del listado de métodos de pago, respecto al método actual los siguientes datos:

  • setCallToActionText : Define el texto/título público del método de pago / Obligatorio

    Texto del método de pago

    Mostrando el texto del método de pago

  • setAdditionalInformation : Define información adicional del método de pago  / Opcional

    Código información adicional del método de pago

    En el ejemplo del método de pago, lo que hacemos con “setAdditionalInformation” es integrar el fichero TPL payment_infos.tpl. (Fijaros al ampliar el pantallazo)

    Información adicional del método de pago en el listado de métodos de pago de Prestashop 1.7

  • setLogo : Definir un logo para el método de pago / Opcional

    Código logo método de pago en el listado de métodos

    Logo método de pago

  • setAction : Definimos el controlador que se encarga de la validación de la confirmación del pago (No visible ) / Es obligatorio si hemos usado el método setForm

    Controlador validación

    Estamos haciendo referencia en esta ocasión al controlador Validation.php del módulo que lo podemos encontrar en: ps_checkpayment/controllers/front/validation.php

  • setInputs : Permite añadir campos de formulario. Se usa más para campos de tipo oculto (hidden) que para que el cliente introduzca datos / OpcionalPor ejemplo, almacenamos en una variable “2 campos”
    $inputs = [
    [
    'name' => 'campo1',
    'type' => 'hidden',
    'value' => '100'
    ],
    [
    'name' => 'campo2',
    'type' => 'hidden',
    'value' => $this->context->customer->id,
    ],
    ];
    

    En el campo 1 guardamos el valor 100 y en el campo2 guardamos el ID del cliente.

    Ahora pasamos esos campos dentro de “setInputs

    Campos

  • setModuleName : Nombre del módulo (interno) / Obligatorio

    Nombre interno del módulo

  • setForm : Permite generar un formulario especifico para el módulo, si se utiliza, las funciones setInputs y setAction no tienen efecto / Opcional

    Formulario

    Dentro del método/función setForm hemos integrado el contenido del TPL: modules/ps_checkpayment/views/templates/hook/formularioprueba.tpl donde hemos preparado el formulario.

    Formulario dentro de método de pago

  • setBinary :  Solo es necesario si se utiliza una ejecución binaria. Es necesario también que el módulo este también anclado en el hook -> displayPaymentByBinaries

Sigue leyendo

Print Friendly, PDF & Email

Cambiar pestaña por defecto de la zona de módulos en Prestashop 1.7

En su momento estuvimos comentado a grosso modo las novedades y opciones básicas de la gestión de módulos desde el panel en Prestashop 1.7

Recordamos que cuando accedemos a la gestión de módulos en Prestashop 1.7 desde la pestaña Módulos -> Módulos y servicios.

Inicialmente accedemos por defecto a la pestaña “Selección“.

Pestaña “Selección” por defecto al acceder a la gestión de módulos en Prestashop 1.7

La idea es acceder por defecto a la opción/pestaña  “Módulos Instalados” cuando vayamos acceder a  la gestión de módulos desde Módulos -> Módulos y servicios.

Pestaña módulos instalados por defecto

Tenemos una solución proporcionada por el usuario Zax37 de la Comunidad de Prestashop en forma de módulo.

La instalación del módulo no tiene complicaciones, se hace desde la pestaña módulos -> módulos y servicios

El módulo no permite ninguna configuración adicional.

Módulo instalado

Una vez que hemos instalado el módulo, siempre que accedamos a la pestaña “Módulos -> Módulos y servicios” veremos seleccionada por defecto la opción “Módulos Instalados“.

Pestaña módulos instalados

Al meternos un poquito en el módulo, por ejemplo, en el fichero: adminmoduleslinkfix.php (clase principal del módulo en cuestión) veremos (entre otras cuestiones) dentro de la función install del módulo la siguiente instrucción:

$this->replaceString(__DIR__."\..\..\classes\Link.php", "admin_module_catalog", "admin_module_manage");

Esta instrucción hace que en clase “Link.php” (/classes/Link.php) donde aparece “admin_module_manage” se cambie por “admin_module_catalog

Si nos metemos dentro de /classes/Link.php, dentro de  “case ‘AdminModulesSf’“: y observamos la siguiente línea:

Código clase Link

Fijémonos en el siguiente código:

case 'AdminModulesSf':
$sfRoute = array_key_exists('route', $sfRouteParams) ? $sfRouteParams['route'] : 'admin_module_catalog';

El módulo simplemente cambia “admin_module_catalog” por “admin_module_manage” para acceder por defecto a la opción de “Módulos instalados” cuando pinchemos en el panel de administración de tu tienda en la pestaña módulos -> módulos y servicios.

Observando fríamente el funcionamiento del módulo, sería conveniente hacer un override de la clase depende hacer un buscar y reemplazar de un dato en la clase original.

Sigue leyendo

Print Friendly, PDF & Email

Eliminar el título de la categoría en Prestashop 1.7

Es una chorrada, pero me lo pregunto un compañero por telegram y como es sencillo, además de que existen diferencias en las rutas de ficheros y en las líneas de código en esta versión de Prestashop respecto a versiones anteriores, lo explicare de forma simple.

Muestro una pequeña captura, para que nos situemos.

Eliminar título de la categoría en Prestashop 1.7

Para eliminar el título de la categoría cuando estamos viendo la categoría en Prestashop 1.7  y suponiendo que estemos trabajando con la plantilla por defecto, una de las posibles opciones es editar el fichero:

/themes/classic/templates/catalog/listing/category.tpl

Tener en cuenta, que si vuestra plantilla no es la que lleva Prestashop por defecto, no estaremos hablando de la carpeta “classic“, sino de la carpeta de vuestra plantilla.

Fichero category.tpl

Dentro de: Sigue leyendo

Print Friendly, PDF & Email

No se ve el enlace de contacte con nosotros en la cabecera de Prestashop 1.7

Hace tiempo que no escribo, y aquí va otro post chorra sobre Prestashop 🙂

En las variantes actuales de Prestashop 1.7 (al menos en la 1.7.2.3 y anteriores variantes de Prestashop 1.7) no aparece el enlace de Contacte con nosotros en la cabecera cuando se muestra el número de teléfono de la tienda.

Enlace “Contacte con nosotros” en la cabecera de Prestashop 1.7

Teléfono cabecera Prestashop 1.7

¿Cómo es posible si estamos hablando del módulo: “Información de contacto“?

Se debe a que en el fichero: “/themes/classic/modules/ps_contactinfo/nav.tpl“, disponemos de un condicional que dice “Si se muestra el número de teléfono no se muestra el enlace de “Contacte con nosotros”

Código Módulo Prestashop 1.7

Una de las posibles opciones para que se vea el enlace de “Contacte con Nosotros” al lado del “Teléfono” cuando tengamos configurado el número de teléfono de la tienda, es copiar la siguiente línea de código:

<a href="{$urls.pages.contact}">{l s='Contact us' d='Shop.Theme.Global'}</a>

Sigue leyendo

Print Friendly, PDF & Email

Cambiar ubicación de las pestañas del producto en Prestashop 1.7

En este manual de Prestashop, vamos a comentar cambiar de ubicación el bloque donde se muestran las pestañas de la descripción del producto, detalles del producto, etc…. de la ficha del producto en Prestashop 1.7

Por defecto, estas pestañas se ven de la siguiente forma:

Pestañas del producto en Prestashop 1.7

La idea final es que se muestren de la siguiente forma:

Cambiando de ubicación el bloque de las pestañas en Prestashop 1.7

Una de las posibles soluciones, es acceder al fichero:

/themes/classic/templates/catalog/product.tpl

Fichero product.tpl

Buscamos este bloque:

{block name='product_tabs'}
<div class="tabs">
<ul class="nav nav-tabs">
{if $product.description}
<li class="nav-item">
<a class="nav-link{if $product.description} active{/if}" data-toggle="tab" href="#description">
{l s='Description' d='Shop.Theme.Catalog'}
</a>
</li>
{/if}
<li class="nav-item">
<a class="nav-link{if !$product.description} active{/if}" data-toggle="tab" href="#product-details">
{l s='Product Details' d='Shop.Theme.Catalog'}
</a>
</li>
{if $product.attachments}
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#attachments">
{l s='Attachments' d='Shop.Theme.Catalog'}
</a>
</li>
{/if}
{foreach from=$product.extraContent item=extra key=extraKey}
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#extra-{$extraKey}">{$extra.title}</a>
</li>
{/foreach}
</ul>
<div class="tab-content" id="tab-content">
<div class="tab-pane fade in{if $product.description} active{/if}" id="description">
{block name='product_description'}
<div class="product-description">{$product.description nofilter}</div>
{/block}
</div>
{block name='product_details'}
{include file='catalog/_partials/product-details.tpl'}
{/block}
{block name='product_attachments'}
{if $product.attachments}
<div class="tab-pane fade in" id="attachments">
<section class="product-attachments">
<h3 class="h5 text-uppercase">{l s='Download' d='Shop.Theme.Actions'}</h3>
{foreach from=$product.attachments item=attachment}
<div class="attachment">
<h4><a href="{url entity='attachment' params=['id_attachment' => $attachment.id_attachment]}">{$attachment.name}</a></h4>
<p>{$attachment.description}</p
<a href="{url entity='attachment' params=['id_attachment' => $attachment.id_attachment]}">
{l s='Download' d='Shop.Theme.Actions'} ({$attachment.file_size_formatted})
</a>
</div>
{/foreach}
</section>
</div>
{/if}
{/block}
{foreach from=$product.extraContent item=extra key=extraKey}
<div class="tab-pane fade in {$extra.attr.class}" id="extra-{$extraKey}" {foreach $extra.attr as $key => $val} {$key}="{$val}"{/foreach}>
{$extra.content nofilter}
</div>
{/foreach}
</div>
{/block}
</div>

Y lo vamos a dejar encima del bloque (lo buscamos lógicamente):

{block name='page_footer_container'}
<footer class="page-footer">{block name='page_footer'}
<!-- Footer content -->
{/block}</footer>{/block}

Es decir:

{block name='product_tabs'}
<div class="tabs">
<ul class="nav nav-tabs">
{if $product.description}
<li class="nav-item">
<a class="nav-link{if $product.description} active{/if}" data-toggle="tab" href="#description">
{l s='Description' d='Shop.Theme.Catalog'}
</a>
</li>
{/if}
<li class="nav-item">
<a class="nav-link{if !$product.description} active{/if}" data-toggle="tab" href="#product-details">
{l s='Product Details' d='Shop.Theme.Catalog'}
</a>
</li>
{if $product.attachments}
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#attachments">
{l s='Attachments' d='Shop.Theme.Catalog'}
</a>
</li>
{/if}
{foreach from=$product.extraContent item=extra key=extraKey}
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#extra-{$extraKey}">{$extra.title}</a>
</li>
{/foreach}
</ul>
<div class="tab-content" id="tab-content">
<div class="tab-pane fade in{if $product.description} active{/if}" id="description">
{block name='product_description'}
<div class="product-description">{$product.description nofilter}</div>
{/block}
</div>
{block name='product_details'}
{include file='catalog/_partials/product-details.tpl'}
{/block}
{block name='product_attachments'}
{if $product.attachments}
<div class="tab-pane fade in" id="attachments">
<section class="product-attachments">
<h3 class="h5 text-uppercase">{l s='Download' d='Shop.Theme.Actions'}</h3>
{foreach from=$product.attachments item=attachment}
<div class="attachment">
<h4><a href="{url entity='attachment' params=['id_attachment' => $attachment.id_attachment]}">{$attachment.name}</a></h4>
<p>{$attachment.description}</p
<a href="{url entity='attachment' params=['id_attachment' => $attachment.id_attachment]}">
{l s='Download' d='Shop.Theme.Actions'} ({$attachment.file_size_formatted})
</a>
</div>
{/foreach}
</section>
</div>
{/if}
{/block}
{foreach from=$product.extraContent item=extra key=extraKey}
<div class="tab-pane fade in {$extra.attr.class}" id="extra-{$extraKey}" {foreach $extra.attr as $key => $val} {$key}="{$val}"{/foreach}>
{$extra.content nofilter}
</div>
{/foreach}
</div>
{/block}
</div>
{block name='page_footer_container'}
<footer class="page-footer">
{block name='page_footer'}
<!-- Footer content -->
{/block}
</footer>
{/block}

 

Cambia de ubicación de las pestañas en Prestashop 1.7

Recordar, limpiar la cache en la pestaña Parámetros Avanzados -> Rendimiento

Borrar cache Prestashop 1.7

Documento realizado bajo Prestashop 1.7.1.2

Por otro lado, recordar que en Prestashop 1.7, podemos editar los ficheros de la plantilla, sin necesidad de editar los ficheros originales.

Print Friendly, PDF & Email

Creación y borrado de tablas en un módulo de Prestashop 1.7

En esta ocasión, vamos hablar del menú horizontal de Prestashop 1.7, pero no vamos hablar de su configuración.

Cuando añadimos los enlaces manuales dentro de la configuración del menú horizontal dentro del bloque: “Añadir un nuevo enlace

Enlaces manuales del menú horizontal en Prestashop 1.7

Enlaces manuales del menú horizontal en Prestashop 1.7

Se guardan en la tablas: “ps_linksmenutop y ps_linksmenutop_lang

Tabla ps_linksmenutop

En esta tabla se guarda el valor de los siguientes campos:

  • ID del enlace (id_linksmenutop)
  • ID de la tienda que tiene asociado ese enlace (id_shop)
  • (new_window)-> 0 El enlace no se abre en una nueva ventana / 1 El enlace se abre en una nueva ventana

Tabla ps_linksmenutop_lang

  • id_linksmenutop -> Este ID tiene vinculación, con el que esta definido en la tabla ps_linksmenutop)
  • id_lang -> ID del idioma  (Tener en cuanta que cuando añadimos enlaces en el menu horizontal, podemos hacerlo por idiomas, por eso esta disponible este campo para distinguir los datos del enlace entre un idioma y otro)
  • id_shop -> ID de la tienda
  • label -> Etiqueta de lenlace
  • link -> Url del enlace

Estas tablas, las crea el módulo del menú horizontal al instalarse.

Si entramos en el fichero:

“modules/ps_mainmenu/ps_mainmenu.php”

Vemos que dentro de la función “install” (public function install) tenemos una llamada a la función “installDb()

Y si vemos el contenido de la función “installDb()“, vemos el siguiente código:

 public function installDb()
    {
        return (Db::getInstance()->execute('
		CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'linksmenutop` (
			`id_linksmenutop` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
			`id_shop` INT(11) UNSIGNED NOT NULL,
			`new_window` TINYINT( 1 ) NOT NULL,
			INDEX (`id_shop`)
		) ENGINE = '._MYSQL_ENGINE_.' CHARACTER SET utf8 COLLATE utf8_general_ci;') &&
            Db::getInstance()->execute('
			 CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'linksmenutop_lang` (
			`id_linksmenutop` INT(11) UNSIGNED NOT NULL,
			`id_lang` INT(11) UNSIGNED NOT NULL,
			`id_shop` INT(11) UNSIGNED NOT NULL,
			`label` VARCHAR( 128 ) NOT NULL ,
			`link` VARCHAR( 128 ) NOT NULL ,
			INDEX ( `id_linksmenutop` , `id_lang`, `id_shop`)
		) ENGINE = '._MYSQL_ENGINE_.' CHARACTER SET utf8 COLLATE utf8_general_ci;'));
    }

Vemos que la función esta retornando la ejecución de la creación de dos tablas.

Dentro de return tenemos:

Db::getInstance()->execute('
CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'linksmenutop` (
`id_linksmenutop` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`id_shop` INT(11) UNSIGNED NOT NULL,
`new_window` TINYINT( 1 ) NOT NULL,
INDEX (`id_shop`)
) ENGINE = '._MYSQL_ENGINE_.' CHARACTER SET utf8 COLLATE utf8_general_ci;')

Para crear la tabla “xx_linksmenutop

Y

Db::getInstance()->execute('
CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'linksmenutop_lang` (
`id_linksmenutop` INT(11) UNSIGNED NOT NULL,
`id_lang` INT(11) UNSIGNED NOT NULL,
`id_shop` INT(11) UNSIGNED NOT NULL,
`label` VARCHAR( 128 ) NOT NULL ,
`link` VARCHAR( 128 ) NOT NULL ,
INDEX ( `id_linksmenutop` , `id_lang`, `id_shop`)
) ENGINE = '._MYSQL_ENGINE_.' CHARACTER SET utf8 COLLATE utf8_general_ci;')

Para crear la tabla: xx_linksmenutop_lang

Estamos usando “Db::getInstance()->execute” (evidentemente acompañado del CREATE TABLE) para crear las tablas.

Por otro lado, estas tablas son eliminadas al desinstalar el módulo, si nos fijamos en la función “uninstall” del módulo ( public function uninstall)

Vemos que entre otras instrucciones, tiene una llamada a la función uninstallDB()

Al entrar en el contenido de dicha función, nos encontramos con:

protected function uninstallDb()
{
Db::getInstance()->execute('DROP TABLE `'._DB_PREFIX_.'linksmenutop`');
Db::getInstance()->execute('DROP TABLE `'._DB_PREFIX_.'linksmenutop_lang`');
return true;
}

Donde vemos que usamos: “Db::getInstance()->execute” (evidentemente acompañado de DROP TABLE) para borrar las tablas: “xx_linksmenutop” y “xx_linksmenutop_lang“.

Recordar que “_DB_PREFIX_” es el prefijo de la base de datos, para indicar que sera añadido automáticamente al crear las tablas.

Es decir si el prefijo de la base de datos es ps_, cuando vaya a crear o a borrar por ejemplo la tabla  “linksmenutop“, la creara con el nombre ps_linksmenutop

Documento construido bajo la versión 1.7.1.2 de Prestashop y la versión “2.0.2” del módulo del menú horizontal.

Print Friendly, PDF & Email

Formulario de contacto en los contenidos en Prestashop 1.7

Gracias al nuevo sistema de widget que nos ofrece Prestashop 1.7, podemos mostrar el formulario de contacto que trae por defecto Prestashop 1.7 en las páginas de contenidos que tengamos en la pestaña Diseño -> Páginas 

La instrucción clave es la siguiente:

{widget name="contactform"}

Si queremos mostrar el formulario de contacto en las páginas de contenidos, editamos el fichero:

/themes/classic/templates/cms/page.tpl

Y añadimos la instrucción del widget, por ejemplo debajo de:

{$cms.content nofilter}

De esta manera se mostrara debajo de los contenidos.  ($cms.content imprime el contenido (campo contenido/descripción) de las páginas que hemos metido en la pestaña Diseño -> Páginas en los CMS)

En definitiva, lo dejaríamos así:

{$cms.content nofilter}
{widget name="contactform"}

¿Cómo podemos limitarlo para que solo se muestre en una de las páginas de contenidos y no en todas?

Tenemos varias opciones, una de ellas es hacer una comparación el ID del CMS donde estamos situados.

Dejándolo el código del widget así:

{if $cms.id == "X" }
{widget name="contactform"}
{/if}

En X, colocamos el ID del CMS (Contenido) que hemos creado en la pestaña Diseño -> Páginas.

ID CMS

En nuestro ejemplo, vamos a colocar el ID 3, dejándolo así:

{if $cms.id == "3" }
{widget name="contactform"}
{/if}

Widget formulario de contacto en Prestashop 1.7

Documento construido bajo Prestashop 1.7.1.2

Por último y no menos importante, recordar limpiar la cache en la pestaña Parámetros Avanzados -> Rendimiento

Borrar cache Prestashop 1.7

Y ahora dejo una pregunta abierta, ¿Podremos hacer esto en futuras variantes de PrestaShop 1.7, sin necesidad de tocar código?

Print Friendly, PDF & Email

Extensión de archivo incorrecta en Prestashop 1.7

A finales del año pasado, estuvimos comentando brevemente la sección de contacto en Prestashop 1.7.

En esta ocasión, vamos a hablar, por ejemplo, de que ocurre cuando un cliente sube un documento con extensión *.odt. en el formulario de contacto.

Simplemente, nos saldrá un error que dice “Extensión de archivo incorrecta“.

Extensión de archivo incorrecta en el formulario de contacto en Prestashop 1.7

Extensión de archivo incorrecta en el formulario de contacto en Prestashop 1.7

Si vamos al fichero:

/modules/contactform/contactform.php

Veremos que dentro de la función “public function sendMessage()” tenemos la siguiente línea de código:

$extension = array('.txt', '.rtf', '.doc', '.docx', '.pdf', '.zip', '.png', '.jpeg', '.gif', '.jpg');

Para añadir la extensión “.odt“, podríamos añadirla dentro del array

$extension = array('.txt', '.rtf', '.doc', '.docx', '.pdf', '.zip', '.png', '.jpeg', '.gif', '.jpg', '.odt');

Añadida nueva extensión en el formulario de contacto en Prestashop 1.7

¿Al intentar subir el fichero con extensión *.odt en el formulario de contacto me aparecerá el error de “Extensión de archivo incorrecta“?

En principio no, pero te en cuenta dos aspectos:

  • Siempre que puedas, es altamente recomendable hacer un override y evitar en todo lo posible editar los ficheros originales (en este caso lo ideal seria hacer un override de la clase del módulo y sobreescribir la función sendMessage)
  • ¿Cómo se hace un override de una clase de un módulo en Prestashop 1.7? -> Buscar en Google 🙂

Por cierto, espero que, en un futuro, exista la opción de permitir nuevas extensiones a la hora de subir los ficheros desde el panel de administración en el panel de Prestashop 1.7

Documento construido bajo Prestashop 1.7.1.2

Print Friendly, PDF & Email