Como añadir nuevos estados al producto en PrestaShop

PrestaShop por defecto permite indicar 3 estados sobre los productos: nuevo, usado y reacondicionado.

¿Qué sucede si queremos añadir más estados en nuestra tienda? ¿Cómo lo podemos hacer? Siento decirte que los estados del producto no son administrables. Requiere intervención técnica para añadir nuevos estados.

En este artículo te vamos a explicar cómo agregar nuevos estados del producto de la forma más correcta, fácil y rápida en una tienda que utiliza PrestaShop 1.6.1.11.

Con las nuevas formas de vender que hay actualmente los productos pueden presentar infinidad de estados que se podrían considerar. En el ejemplo que vamos a ilustrar queremos añadir un nuevo estado para el producto: “No funciona” que conseguiremos en 5 pasos:

1- Edición de la base de datos

Lo primero que haremos será ir a la base de datos de la tienda y editar el conjunto de valores del campo “condition” para las tablas “ps_product” y “ps_product_shop” dejándolo con los siguientes valores: ‘new’,’used’,’refurbished’,’notwork’. Hemos añadido el ‘notwork’ que representará el valor de “No funciona”.

2- Sobrescritura de la clase Product

Es necesario sobrescribir el archivo clases/Product.php. Para ello debes crear un nuevo archivo PHP con el nombre Product.php y deposítalo en overrides/clases/Product.php de tu proyecto PrestaShop con el siguiente contenido:

class Product extends ProductCore
{
    public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null)
    {
        parent::$definition['fields']['condition'] = array('type' => self::TYPE_STRING, 'shop' => true, 'validate' => 'isGenericName', 'values' => array('new', 'used', 'refurbished', 'notwork'), 'default' => 'new');
        parent::__construct($id_product, $full, $id_lang, $id_shop);
    } 
}

3- Actualización del selector de estado del backoffice

Ahora iremos a modificar el selector de estado del producto en el backoffice. Para ello será necesario encontrar el siguiente archivo:

adminxxx/themes/default/template/controllers/products/informations.tpl

Dentro de este archivo buscaremos la  palabra clave “condition” y en seguida veremos el selector de condición del formulario de añadir producto del backoffice.

<select name="condition" id="condition">
    <option value="new" {if $product->condition == 'new'}selected="selected"{/if} >{l s='New'}</option>
    <option value="used" {if $product->condition == 'used'}selected="selected"{/if} >{l s='Used'}</option>
    <option value="refurbished" {if $product->condition == 'refurbished'}selected="selected"{/if}>{l s='Refurbished'}</option>
</select>

Añadimos la nueva opción con el valor que le dimos en la base de datos y su traducción:

<select name="condition" id="condition">
    <option value="new" {if $product->condition == 'new'}selected="selected"{/if} >{l s='New'}</option>
    <option value="used" {if $product->condition == 'used'}selected="selected"{/if} >{l s='Used'}</option>
    <option value="refurbished" {if $product->condition == 'refurbished'}selected="selected"{/if}>{l s='Refurbished'}</option>
    <option value="notwork" {if $product->condition == 'notwork'}selected="selected"{/if}>{l s='Not Work'}</option>
</select>

Al actualizar el backoffice veremos que ya aparece la nueva condición para el producto. A partir de ahora ya puedes seleccionar la nueva opción y al pulsar en guardar quedará registrada para el producto.

4- Modificación de la plantilla

Es importante modificar el archivo product.tpl de la plantilla activa para que el nuevo estado aparezca en la parte frontal.

Tendremos que abrir el product. tpl y buscar la palabra clave “condition”. En seguida encontrarás el bloque donde aparece la condición en la ficha del producto:

<p id="product_condition">
    <label>{l s='Condition:'} </label>
    {if $product->condition == 'new'}
        <link itemprop="itemCondition" href="https://schema.org/NewCondition"/>
        <span class="editable">{l s='New product'}</span>
    {elseif $product->condition == 'used'}
        <link itemprop="itemCondition" href="https://schema.org/UsedCondition"/>
        <span class="editable">{l s='Used'}</span>
    {elseif $product->condition == 'refurbished'}
        <link itemprop="itemCondition" href="https://schema.org/RefurbishedCondition"/>
        <span class="editable">{l s='Refurbished'}</span>
    {/if}
</p>

Añadimos la condicional para el nuevo estado:

<p id="product_condition">
    <label>{l s='Condition:'} </label>
    {if $product->condition == 'new'}
        <link itemprop="itemCondition" href="https://schema.org/NewCondition"/>
        <span class="editable">{l s='New product'}</span>
    {elseif $product->condition == 'used'}
        <link itemprop="itemCondition" href="https://schema.org/UsedCondition"/>
        <span class="editable">{l s='Used'}</span>
    {elseif $product->condition == 'refurbished'}
        <link itemprop="itemCondition" href="https://schema.org/RefurbishedCondition"/>
        <span class="editable">{l s='Refurbished'}</span>
    {elseif $product->condition == 'notwork'}
        <link itemprop="itemCondition" href="https://schema.org/NotworkCondition"/>
        <span class="editable">{l s='Not work'}</span>
    {/if}
</p>

Como podrás ver, el texto “Not work” es traducible. Por defecto es conveniente ponerlo en inglés. Al traducirlo quedaría algo así:

5- Actualización del bloque de navegación por facetas

Para los que usan el módulo de bloque de navegación por facetas que trae por defecto PrestaShop, aun tienen que hacer un pequeño cambio para que aparezca el nuevo estado en el filtro. Será necesario editar o hacer una sobrescritura del módulo “blocklayered” editando el archivo principal blocklayered.php. Puedes buscar “refurbished” y añadir de la misma forma que están los otros estados el nuevo estado. De esta forma ya podremos observar el nuevo estado en la navegación por facetas:

Si te ha servido este tutorial hazte fan de la página de facebook del blog Jose Aguilar y estate al tanto de nuestra novedades.

No te acaba de salir y necesitas ayuda. Contrata un profesional que te lo haga

Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Te ha servido? Valora esta entrada!
(8 votos, promedio: 5 de 5)
Comparte en las redes sociales
¿Buscas trabajo de programador?

5 respuestas a “Como añadir nuevos estados al producto en PrestaShop”

  1. Luis Vazquez dice:

    Realice el procedimiento, funciono correcto, pero no me despliega el titulo que agregue en la tienda (backoffice).

  2. Matias dice:

    Hola que tal? Estoy siguiendo el tutorial. Pero no encuentro el archivo informations.tpl. Sera que cambió a la version de ahora? Porque no aparece. Saludos.

  3. Mundomerchandising dice:

    Hola José Aguilar estoy intentado poner en mi web, productos en precedido, pero que salgan en el index, como en los bloques de nuevos, y novedades o destacados, hacer uno que ponga prepedidos, o modificar el bloque de novedades, eso se podría hacer?? Llevo días buscando tutorinales y no encontré o nada claro. Gracias

    • Jose Aguilar dice:

      Hola que tal,

      Para este tipo de ayudas que se salen de lo que hay disponible en el blog lo que podemos hacer es que nos envíes un correo a blog@jose-aguilar.com con todos los detalles para que revisemos como podemos proceder.

      Lógicamente no habrá nada para su necesidad. Requiere intervención de un programador para mostrar los productos con estado «precedido».

      Saludos

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Ver más sobre