Mostrar bloque de monedas de Prestashop 1.7 con el modo catálogo

Bloque de monedas de Prestashop 1.7

El modo catálogo (parámetros de la tienda -> configuración de productos) a día de hoy Prestashop 1.7 (hasta Prestashop 1.7.3.0) no oculta los precios de los productos, aunque si oculta correctamente el proceso de compra. En versiones anteriores de Prestashop ocultaba también el precio de los productos automáticamente, puede ser que este catalogado como un bug y se “solucione”, o que realmente se quede de ese modo.

Modo catálogo Prestashop 1.7

Lo que si he comprobado es que sigue funcionando correctamente la gestión de los grupos en Prestashop 1.7 a la hora de visualizar u ocultar precios en Prestashop, por lo tanto cuando vamos a la pestaña Parámetros de la tienda -> Ajustes de los clientes -> Grupos y editamos un Grupo y señalamos Mostrar Precios -> NO

Mostrar precios -> no

La cuestión es que día de hoy activando solo el “modo catálogo” en Prestashop 1.7 solo oculta el proceso del pedido, pero no los precios, y desaparece también el bloque de monedas situado en la parte superior de la tienda (hook -> displayNav2).

El bloque de monedas desaparece porque si vamos a la clase del módulo correspondiente al bloque de monedas, es decir al fichero:

/modules/ps_currencyselector/ps_currencyselector.php

Dentro de la función renderWidget  comprueba si la tienda está en modo catálogo o si la tienda no tiene más de una moneda activa.

Condicional

Cuando se cumple “una” de las dos condiciones, cortamos.

Queda claro que con: Configuration::isCatalogMode() es para comprobar si la tienda está en modo catalogo y con Currency::isMultiCurrencyActivated() comprobamos si existe más de una moneda activa en la tienda, que realmente lo que hace el condicional es negar este último caso, para que cuando se cumpla “que la tienda está en modo catalogo o que no tiene más de 1 moneda activa” no mostramos el módulo.

Documento construido bajo Prestashop 1.7.3.0 y la versión “2.0.0″ del módulo.

Mover módulo de posición sin añadirlo a un hook en Prestashop 1.7

Esta entrada es simplemente recordatoria.

En mayo del año 2017, estuvimos comentando el nuevo sistema de Widget que incorpora Prestashop 1.7 en los módulos, para aquellos que no lo recuerden, vuelvo a dejar el enlace: Entendiendo el funcionamiento de los widget en Prestashop 1.7

En junio del año 2017 estuvimos mostrando un ejemplo de como mostrar el formulario de contacto en otras secciones de la tienda, si no lo recordáis, vuelvo a dejar enlace Formulario de contacto en los contenidos en Prestashop 1.7

Si bien es cierto que actualmente podemos mover los módulos (al menos la mayoría de los nativos de Prestashop) desde la pestaña Diseño -> Posiciones (ejemplo básico) a casi todos los hooks porque implementan la interfaz WidgetInterface, sin necesidad de añadir la función del hook como hacíamos en versiones anteriores, también podemos indicar que queremos mostrar un determinado módulo en una determinada zona sin tener que asignar un hook a esa zona, esto es lo que habíamos explicado a inicios del año pasado (2017) en el blog.

Por lo tanto, a modo recordatorio, os recomiendo visitar las siguientes entradas del blog:

Entendiendo el funcionamiento de los widget en Prestashop 1.7 (mayo 2017)
Formulario de contacto en los contenidos en Prestashop 1.7 (junio 2017)

Y también viene bien repasar aquella guía que se hizo sobre la creación de un módulo para Prestashop 1.7 sobre abril del 2017 donde comentábamos también el tema del widget: Crear módulo Prestashop 1.7 (marzo 2017)

Me gusta indicar fechas, porque son entradas que están publicadas en el blog en esas fechas y siempre pueden existir variaciones conforme van saliendo nuevas variantes de Prestashop, aunque sean de la misma rama.

 

Añadir campos a los productos en Prestashop 1.7

Traducción del francés al castellano de un aporte construido por hennes  con información adicional.

Prestashop 1.7 introduce grandes cambios en el backoffice (panel de administración) en la gestión de los productos en comparación con versiones anteriores de Prestashop.

Vamos a ver como añadir nuevos campos a los productos y administrarlos desde el panel. Al final del post encontrareis un módulo que te permite añadir varios campos en el hook -> DisplayAdminProductsMainStepLeftColumnMiddle

Vamos a creamos un módulo para añadir y mostrar los campos en el panel de administración y también constuiremos un override de la clase Product.

Al acceder al fichero: /src/PrestaShopBundle/Resources/views/Admin/Product/form.html.twig

Acceder a fichero

Veremos que tenemos disponible los siguientes hooks en el panel de administración dentro de los formularios de los productos.

  • displayAdminProductsExtra
  • displayAdminProductsMainStepLeftColumnMiddle
  • displayAdminProductsMainStepLeftColumnBottom
  • displayAdminProductsMainStepRightColumnBottom
  • displayAdminProductsQuantitiesStepBottom
  • displayAdminProductsPriceStepBottom
  • displayAdminProductsOptionsStepTop
  • displayAdminProductsOptionsStepBottom
  • displayAdminProductsSeoStepBottom  (este hook se encuentra en el fichero: src/PrestaShopBundle/Resources/views/Admin/Product/Include/form_seo.html.twig )

Mostramos capturas de donde se encuentran los hooks “gráficamente” en en el formulario de edición de los productos.

Pestaña -> Ajustes básicos de la ficha de edición del producto

Hooks disponibles:

  • displayAdminProductsMainStepLeftColumnMiddle
  • displayAdminProductsMainStepLeftColumnBottom
  • displayAdminProductsMainStepRightColumnBottom
Pestaña ajustes básicos de la ficha de edición del producto

Pestaña ->  Stock/cantidades de la ficha de edición del producto

Hooks disponibles:

  • displayAdminProductsOptionsStepBottom
Pestaña ->  Stock/cantidades de la ficha de edición del producto
Pestaña ->  Stock/cantidades de la ficha de edición del producto

Pestaña -> Precio/s de la ficha de edición del producto

Hooks disponibles:

  • displayAdminProductsPriceStepBottom
Pestaña precio de la ficha de edición del producto

Pestaña opciones de la ficha de edición del producto

Hooks disponibles:

  • displayAdminProductsOptionsStepTop
  • displayAdminProductsOptionsStepBottom
Pestaña opciones de la ficha de edición del producto
Parte inferior de la pestaña opciones de la ficha de edición del producto

Pestaña SEO de la ficha del producto

Pestaña SEO de la ficha de edición del producto

El módulo al que hacemos referencia al inicio del post, añadirá los campos en la pestaña de Ajustes básicos del producto en el hook -> displayAdminProductsMainStepLeftColumnMiddle

Empecemos:

El override de la clase Product.php contendra la definición de los nuevos campos

Override de la clase Product

Estos campos (lo explicaremos posteriormente)  se encarga el módulo de crearlos en la base de datos en las tablas correspondientes.

Dentro del override vemos tres atributos publicos (correspondiente al nombre de los campos) de la clase

Atributos publicos de la clase

El constructor de la clase donde definimos los campos (que recordamos el módulo se encarga de crear dichos campos en la base de datos).

Definición campos

Y por último llamamos al constructor padre

Llamada a constructor padre

Ahora vamos a ver la clase principal del módulo:

hhproduct.php

El módulo queda instalado en el hook:

displayAdminProductsMainStepLeftColumnMiddle

Registrar módulo en Hook

Además vemos que al instalarse el módulo se ejecuta una función denominada: _installSql

Ejecución de la función: _installSql

Lo que hace la función _installSql es:

Añadir en la tabla: ps_product el campo denominado: custom_field.
Añadir en la tabla: ps_product_lang los campos custom_field_langcustom_field_lang_wysiwyg

Función: _installSql

Por otra parte dentro de la función del hook -> hookDisplayAdminProductsMainStepLeftColumnMiddle vamos a ver qué información cargamos/visualizamos.

hookDisplayAdminProductsMainStepLeftColumnMiddle

Obtenemos información del producto actual

Crear instancia de la clase Product

Obtenemos los idiomas activados

Obtener idiomas de la tienda

Preparamos las variables para pasarlas a la plantilla TPL que es la que luego visualizamos. 

Preparar variables Smarty

Pasamos el valor de los campos, accediendo a los atributos del override de la clase Product que hemos mencionado anteriormente.

Pasamos valores de los campos para poder usarlos en el TPL

Pasamos los idiomas que están activados y el idioma por defecto en el que se encuentra el panel de administración el empleado que está editando/creando el producto.

Pasamos idiomas activados e idioma por defecto al TPL

Retornamos el fichero *.tpl que luego visualizaremos

TPL

El fichero: extrafields.tpl del directorio: /views/templates/hook/ del directorio del módulo contiene los campos del formulario que luego visualizamos en la ficha del producto.

Veremos por ejemplo el campo: “custom_field” que no era “multi idioma”, ya que no lo hemos introducido en la tabla ps_product, no en la tabla ps_product_lang

Campo -> custom_field

El campo: custom_field_lang que es un campo multi idioma, pero sin el editor gráfico.

<div class="translations tabbable">
<div class="translationsFields tab-content">
{foreach from=$languages item=language }
<div class="tab-pane translation-label-{$language.iso_code} {if $default_language == $language.id_lang}active{/if}">
<input type="text" name="custom_field_lang_{$language.id_lang}" class="form-control" {if isset({$custom_field_lang[$language.id_lang]}) && {$custom_field_lang[$language.id_lang]} != ''}value="{$custom_field_lang[$language.id_lang]}"{/if}/>
</div>
{/foreach}
</div>
</div>

Y el campo custom_field_lang_wysiwyg que es un campo multi idioma, pero con el editor grafico.

En el tpl: modules/hhproduct/views/templates/hook/extrafields.tpl podeis ver el resto del código.

Si instalamos el módulo que nos ha proporcionado hennes 

Descargar módulo

Veremos que ya nos aparecerán los campos en la pestaña Ajustes básicos de la ficha de edición del producto.

Veremos ahora con el hook -> displayAdminProductsMainStepLeftColumnMiddle podemos ver los nuevos campos:

Ver campos nuevos en el panel de administración
Ver campos nuevos en el panel de administración

Además, podemos acceder a la información de dichos campos para mostrarlos luego en la ficha del producto.

Si vamos al fichero: /themes/classic/templates/catalog/product.tpl

Y queremos mostrar los campos debajo de las miniaturas de los productos:

Mostrar campos

A modo chapuzilla en el fichero:

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

Debajo del siguiente código:

Zona donde añadir las variables

Podemos añadir las variables:

{$product.custom_field}, {$product.custom_field_lang}, {$product.custom_field_lang_wysiwyg} 

Por ejemplo, añadimos la variable: {$product.custom_field_lang_wysiwyg}  que es el campo en el que veíamos el editor grafico en el panel de administración.

Mostrar variable

Si ahora añadimos una imagen en el campo en cuestión desde el panel de administración, veremos que la vamos a ver cuándo vayamos a ver el producto en la tienda.

Campo panel de administración
Nuevo campo del producto en Prestashop 1.7

Dicho esto, es mejor modificar el módulo e imprimirlo en algunos de los hooks disponibles en la ficha del producto en Prestashop 1.7  (o crear directamente un nuevo hook, dependiendo de lo que nos interese) que editar el tpl de la plantilla.

Documento construido bajo Prestashop 1.7.2.4 con la versión “0.1.0” del módulo de Hernes

Descargar módulo: Descargar

PosData: El override viene ya en el módulo y al instalarse el módulo se copia automáticamente en el directorio /override/classes/

Desactivar el formulario de contacto en Prestashop

Este documento es para Prestashop 1.6

Si queremos desactivar el formulario de contacto, tenemos distintas posibilidades.

Fuente: https://stackoverflow.com/questions/38916902/prestashop-disable-contact-form

  • 1º – Crear un módulo para cuando accedemos al formulario de contacto redireccione a la página 404 de nuestra tienda o a otra sección distinta de la tienda.
    Código módulo

    El módulo queda instalado en el hook -> actionDispatcher

    Dentro de la función del hook -> actionDispatcher que definimos en el módulo comprobamos si el controlador es correspondiente al del formulario de contacto, si la condición es cumplida redireccionamos la página del formulario de contacto. En este ejemplo nos lleva a la página 404.

    Descargar módulo aquí:  Descargar

  • 2º – Crear un override del controlador /controllers/front/ContactController.php, recordamos que el override se guarda en el directorio: /override/controllers/front/
    Nombre del Override: ContactController.php

    Override del controlador del formulario de contacto

    Fijaros que en el condicional, lo que hace cuando pulsamos el botón enviar del formulario de contacto es pararlo todo y en caso contrario llamamos a la función postProcess de la clase padre.

    Eliminar fichero: /cache/class_index.php para que Prestashop nos detecte el nuevo override.

    Se ha detenido la acción de pulsar el botón “Enviar” del formulario de contacto, pero el formulario sigue visualizándose, lo que puede conllevar una confusión a los clientes que visiten tu tienda.

    El siguiente paso es editar el fichero: /themes/default-bootstrap/contact-form.tpl comentando la visualización del formulario de contacto.

    Por ejemplo, puedes comentar el contenido (comentar código en Smarty) después (a partir) de la siguiente línea:
    {capture name=path}{l s=’Contact’}{/capture}

    De esta forma veremos el formulario de contacto, pero sin contenido:

    Formulario de contacto sin contenido en Prestashop

    Y luego personalizar el TPL a vuestro gusto añadiendo una nueva estructura.

    Si tras modificar el TPL no apreciamos los cambios, recordar limpiar la cache de Prestashop en la pestaña Parámetros Avanzados -> Rendimiento.

    Descargar el override del controlador: Descargar
    Descargar fichero TPL modificadoDescargar

PosData: Se han indicado “2” posibilidades a la hora de intentar desactivar el formulario de contacto, existen más opciones y se puede hacer de diferente forma.

Documento construido bajo Prestashop 1.6.1.18 bajo la plantilla por defecto.

IP del cliente en el email del formulario de contacto en Prestashop

Aporte del usuario Masteries de la Comunidad de Prestashop traducido del idioma de Shakespeare al idioma de Cervantes con información adicional.

Con este manual para Prestashop cuando nos envíen un mensaje mediante el formulario de contacto de Prestashop podremos ver en el email recibido la IP de procedencia de la persona que ha enviado dicho mensaje.

Email recibido

Aunque inicialmente el aporte es para Prestashop 1.6 con la plantilla por defecto, al final de la entrada haremos algunas aclaraciones sobre el mismo para Prestashop 1.7

El primer paso es construir un override del controlador/controllers/front/ContactController.php

1 – Vamos al directorio: /override/controllers/front/ 
2 – Creamos un fichero con nombre: ContactController.php para definir el override.

Definimos el contenido del override del siguiente modo:

Definiendo override del controlador

Dentro del override del controlador vamos a copiar del original:  /controllers/front/ContactController.php la función:  public function postProcess() y la pegamos dentro del override que hemos creado.

Pegar función
Pegar función

Dentro de la función que hemos pegado, vamos a buscar las variables que podemos usar en los emails del formulario de contacto.

Y añadimos la siguiente:

Quedando del siguiente modo:

Código modificado

De esta manera podremos usar en los emails la variable {ip_cliente} para obtener la ip desde donde se ha enviado el formulario de contacto.

A la variable {ip_cliente} le estamos pasando la IP de procedencia desde donde se ha enviado el formulario de contacto porque le hemos pasado la función getRemoteAddr() de la clase Tools. Si tenemos interés en que hace verdaderamente dicha función lo podéis ver en el fichero /classes/Tools.php buscando la función: public static function getRemoteAddr().

Tras terminar de construir el override, eliminar el fichero /cache/class_index.php para que Prestashop 1.6 reconozca el nuevo override. No os preocupéis porque el fichero borrado se regenera automáticamente.

El siguiente paso es editar los ficheros correspondientes al email que recibes tu cuando te envían un mensaje mediante el formulario de contacto y añadir la variable que hemos creado para ver la IP.

Editamos los ficheros:
mails/es/contact.html y contact.txt
/themes/default-bootstrap/mails/es/contact.html y contact.txt (recordar que el que esta sobreescrito en la plantilla (en en este ejemplo estamos usando la plantilla por defecto que se denomina default-bootstrap) es el que tiene prioridad)

Recordar que también podéis hacerlo desde el panel de traducciones en la pestaña Localización -> Traducciones -> Modificar Traducciones

Traducciones emails PS
Traducciones emails PS
Editar Email
Editar Email

Una vez hemos accedido a los emails para modificarlos, toca añadir la variable: {ip_cliente}

Fichero contact.html

contact.html
contact.html

Fichero contact.txt

contact.txt
contact.txt

Tip valido para Prestashop 1.6 y probado hasta Prestashop 1.6.1.18

Descargar Override construido bajo Prestashop 1.6.1.18

Por si en un futuro actualizan el aporte para Prestashop 1.7 o tenéis dudas sobre el aporte actual, podéis ver el enlace original del aporte en el foro de Prestashop:

https://www.prestashop.com/forums/topic/626268-tutorial-show-customers-ip-address-in-e-mail-from-the-contact-form/


Respecto Prestashop 1.7 (hasta Prestashop 1.7.2.4) por el momento os dejo tres pistas:

Fichero: modules/contactform/contactform.php -> Función public function sendMessage() encontrareis respecto a las variables habilitadas para el uso en los emails lo siguiente:

Donde podemos añadimos:

Para luego hacer uso de la variable {ip_cliente} en los emails.

Evidentemente lo ideal sería siempre que se pueda crear un override de la clase del módulo contactform (contactform.php) en el directorio /overrides/modules/contactform/ para hacer los pertinentes cambios depende tocar la clase original.

Por cierto, para que os detecte el override en PS 1.7 (hasta 1.7.2.4) directamente hacer clic sobre el botón limpiar(vaciar) cache situado en la parte superior de la zona de acceso correspondiente a la pestaña Parámetros Avanzados -> Rendimiento.

Como no todo es un regalo, os dejo investigar para que veáis como se hace un override de una clase un módulo. Por el blog incluso tenéis algún ejemplo.

Estudiando el código de la sección “Su cuenta” de Prestashop 1.7

Sección su cuenta en Prestashop 1.7
Sección su cuenta en Prestashop 1.7

Decir que es una pasada muy rápida y poco exhaustiva, pero espero que os pueda servir de ayuda.

Plantilla de impresión -> TPL

Fichero: /themes/classic/templates/customer/my-account.tpl

Controlador del FrontOffice correspondiente:

Fichero: /controllers/front/MyAccountController.php

En el fichero TPL observamos:

Dentro del block -> page_title  el título de la sección:

{block name=’page_title’}

Texto que podemos cambiar/modificar sin problemas para los diferentes idiomas de la tienda en la pestaña Internacional -> Traducciones -> Modificar Traducciones

Gestión traducciones
Cambiar traducción

Seguimos avanzando en el fichero: /themes/classic/templates/customer/my-account.tpl

En el bloque -> {block name=’page_content’} estamos viendo los enlaces de la sección “Mi cuenta”

{block name=’page_content’}

El enlace que he señalado en la captura corresponde al enlace de información (que es el correspondiente al de la sección de datos personales del cliente):

Enlace Información

Si nos fijamos en el código, vemos el enlace, el texto del enlace y el icono.

El título/texto del enlace lo vemos aquí:

Texto del enlace

Que es  traducible y modificable a todos los idiomas desde la pestaña Internacional -> Traducciones -> Modificar Traducciones al igual que ocurría en el título “Su cuenta”.

El icono que visualizamos encima del texto corresponde al código señalado en la siguiente captura:

Icono

Podemos ver los iconos disponibles aquí: https://material.io/icons y cambiarlo por cualquier otro.

Por ejemplo, puedes añadir el siguiente icono:

Icono
Material icons

Cambiando la instrucción:

Icono anterior

Por:

Icono nuevo

Yo lo he colocado en dicho formato porque es como estaba puesto en el TPL, pero si os fijáis en la captura en la actualidad es recomendable (no obligatorio) ponerlo del siguiente modo:

Otro modo

Finalmente veremos el nuevo icono:

Icono

Si seguimos avanzando dentro del  {block name=’page_content’}, vemos otro bloque denominado:  {block name=’display_customer_account’} que muestra el hook denominado -> displayCustomerAccount

{block name=’display_customer_account’}

Si vamos a la pestaña Diseño -> Posiciones y buscamos el hook -> displayCustomerAccount vemos los módulos que tenemos anclados en dicho hook:

En mi caso particular tengo el módulo Alertas por correo electrónico, por eso me está mostrando un enlace adicional (proveniente de dicho módulo) a los que existen por defecto de forma “fija”.

Mis Alertas

Una vez hemos salido del bloque -> {block name=’page_content’} vemos al final del fichero el bloque -> {block name=’page_footer’} y dentro dicho bloque nos encontramos al bloque  {block name=’my_account_links’}

{block name=’page_footer’}

Aquí estamos mostrando el enlace de “Cerrar sesión” que aparece al final de la misma.

Cerrar sesión

Enlace que corresponde al código que señalo en la siguiente captura:

Enlace cerrar sesión

Una vez hemos observado de forma breve el TPL, vamos a ver el controlador que realmente le da “vida”.

Vamos al fichero:  /controllers/front/MyAccountController.php

Y si nos fijamos dentro de la función “initContent” observamos dos aspectos:

initContent

La variable “logout_url” que usamos en el enlace al cerrar la sesión tiene almacenado el enlace para cerrar la sesión.

Asignación variable para poder usarla en el TPL
Asignación variable para poder usarla en el TPL
Variable

Si seguimos avanzando dentro de la función initContent vemos el siguiente código:

Llamada al método padre y selección plantilla a mostrar
Llamada al método padre y selección plantilla a mostrar

Recordamos que con: parent llamamos al método padre.

Y con $this->setTemplate indicamos el TPL correspondiente a cuando accedemos a la sección de mi cuenta. En este caso tenemos indicado que el tpl es el fichero my-account que se encuentra dentro del directorio customer de la plantilla.

Documento construido bajo Prestashop 1.7.3.0 beta1

Nombre de la categoría en el bloque de productos destacados de Prestashop 1.7

No hablo de cambiar el título dentro de la gestión de traducciones en Prestashop 1.7 sino que automáticamente se muestre el título de la categoría de la cual muestra los productos el módulo en cuestión.

Si recordamos la configuración básica del módulo de productos destacados, entre otras opciones podíamos seleccionar el ID de la categoría para que en el módulo solo se mostraran productos de dicha categoría.

La idea es que el título del bloque depende titularse “Productos destacados” si has dicho que el módulo seleccione los productos de la categoría “Tomates” pues que se titule tomates, o si otro día decides que seleccione los productos de la categoría “EDT” pues que el título del bloque sea “EDT”.  La finalidad es que este cambio se haga de forma automática.

Recuerdo que estoy usando Prestashop 1.7 con la plantilla por defecto (classic).

En el fichero: /modules/ps_featuredproducts/ps_featuredproducts.php dentro de la función: getWidgetVariables

getWidgetVariables

Añadimos la siguiente instrucción:

$category = new Category((int) Configuration::get('HOME_FEATURED_CAT'), $this->context->language->id);
Creación instancia

De esta manera como hemos creado una instancia de la clase Category basándonos en el id de categoría que hemos configurado en el módulo, podemos obtener los datos de la categoría, como puede ser el nombre.

Y después (en la parte del return (dentro de la misma función)) añadimos:


'nombreCat' => $category->name,

Variable Smarty

Recordar que, aunque nosotros hemos editado directamente la clase del módulo, lo aconsejable y recomendable es hacer un override de dicha clase en el directorio /override/classes/module/

El siguiente paso consiste en ir al fichero:

/themes/classic/modules/ps_featuredproducts/views/templates/hook/ps_featuredproducts.tpl

Donde buscamos la siguiente línea de código:

ps_featuredproducts.tpl

Y la dejamos del siguiente modo:

Fichero TPL modificado

Si os fijáis simplemente estamos usando la variable {$nombreCat} que hemos declarado antes en la clase del módulo.

Finalmente, ya podremos ver el nombre de la categoría en el título del bloque.

Nombre de la categoría en el título del bloque de productos destacados de Prestashop 1.7

Documento construido bajo Prestashop 1.7.2.4

Crear nuevo campo en los transportistas en Prestashop 1.7

Documento donde vamos añadir un campo nuevo en los transportistas en Prestashop 1.7.

Este documento ha sido probado en Prestashop 1.7.2.4. Lo digo porque existe la posibilidad de que en futuras variantes de Prestashop 1.7.X no sea válido y se haga de forma totalmente diferente.

Añadir campo en la base de datos

En nuestro caso vamos añadir un campo de tipo VARCHAR de 64 caracteres de longitud denominado “campo_prueba“.

El campo lo vamos añadir en la tabla: ps_carrier (recordar que yo digo “ps_” debido a que es el prefijo de las tablas de mi instalación de Prestashop, en vuestro caso este dato puede variar, es solo un aviso para navegantes).

El campo lo podemos añadir fácilmente desde phpMyAdmin bien gráficamente o generando la consulta.

Campo nuevo en la base de datos en la tabla ps_carrier

Consulta SQL para avanzados:

Consulta SQL para añadir campo

Crear override de la clase Carrier

En el override de la clase Carrier vamos definir el nuevo campo que hemos creado en la tabla ps_carrier.

Recordar que el override de la clase Carrier se guarda en el directorio /override/classes/ 

Creamos el fichero Carrier.php con este contenido:

Override de la clase Carrier
Override de la clase Carrier

Dentro del contenido del override de la clase Carrier vamos a pegar de la clase original (/classes/Carrier.php) el código de “public static $definition” (que es el correspondiente a la definición de los campos de la tabla ps_carrier).

public static $definition = array

Ahora mismo el override tiene el siguiente contenido:

Override clase Carrier

En este override nos quedan “2” puntos.

Añadir un atributo publico al override de la clase Carrier.

Atributo público del override de la clase Carrier

Añadir la definición del campo que hemos creado en la base de datos dentro de “public static $definition = array( ‘fields’ => array(

Definición campo

El override de la clase Carrier quedara del siguiente modo:

Override de la clase Carrier

Podéis descargar el override aquí (esta comprimido en zip): Descargar (recordar que debéis guardarlo en el directorio /override/classes/)

Crear override del controlador: AdminCarrierWizardController

El override del controlador AdminCarrierWizardController se guarda en el directorio /override/controllers/admin/

Creamos el fichero AdminCarrierWizardController.php con este contenido:

Override del controlador AdminCarrierWizardController

Copiamos del controlador original /controllers/admin/AdminCarrierWizardController.php las funciones: renderStepOne y getStepOneFieldsValues

En las funciones que hemos pegado en el override tenemos que hacer los siguientes cambios:

Dentro de la función: renderStepOne añadimos el campo que se mostrara para rellenar en el primer paso de configuración del transportista. Lo hacemos dentro de $this->fields_form = array( ‘form’ => array( .. ‘input’ => array( Continúa leyendo Crear nuevo campo en los transportistas en Prestashop 1.7

[DOC] Añadir filtro sobre los pedidos en Prestashop

Documento que sirve para añadir un filtro nuevo en panel de Prestashop dentro del listado de pedidos para poder filtrarlos por número de seguimiento del transportista.

Numero de seguimiento

Para acceder al documento, debéis pinchar en la siguiente imagen:

Ver información sobre cómo filtrar pedidos en base a un nuevo dato
Ver información sobre cómo filtrar pedidos en base a un nuevo dato

Se avecinan novedades importantes en Prestashop 1.7

Dentro del semanario que nos manda Prestashop, comentare algunos aspectos referentes a las tres últimas semanas (Semana 46, 47 y 48 de 2017)

  • La rama de desarrollo de Prestashop 1.7.3.X esta activa (#8530).
  • A partir de Prestashop 1.7.3.X se empieza a trabajar con Symfony3 (#8405).
  • Para la futura versión de Prestashop 1.7.4 es obligatorio trabajar como mínimo con PHP 5.6.X (requerimientos Prestashop), por lo que (aunque ya no estaba recomendado trabajar con versiones anteriores de PHP, pero ahora es obvio) olvidaros de trabajar con versiones de PHP descontinuadas.
  • La página de administración se migra a Symfony (#8365)

Más información en:

http://build.prestashop.com/news/coreweekly-week-46-2017/
http://build.prestashop.com/news/coreweekly-week-47-2017/
http://build.prestashop.com/news/coreweekly-week-48-2017/