Jump to content

[SOLUCIONADO] Mostrar stock disponible de las combinaciones, Prestashop 1.7


Amorphus

Recommended Posts

Hola,

Me estoy volviendo loco con esto, y no encuentro la solución por ningún lado, aunque me parece algo bastante básico. La cosa es que me gustaría que apareciera cuanto stock queda, pero que cambiara el número según la combinación que elija.

Por defecto, si pongo la opción " Mostrar cantidades disponibles en la página del producto" me muestra la cantidad de stock que hay, con la combinación de producto que tenga puesta por defecto, luego elijo otras combinaciones, pero el numero no cambia, sigue poniendome el numero de stock de la combinación por defecto.

Pensaba que seria cambiar la variable $product_quantity por otra, pero llevo ya rato intentando cosas y buscando por el foro, pero no encuentro nada.

La version de prestashop que uso es 1.7.2.4

Muchas gracias de antemano!

  • Like 1
Link to comment
Share on other sites

Bueno,

He encontrado la solución, la pongo por si le vale a alguien más, no se porqué pero la variable $product.quantity en el archivo product.tpl marca el numero de stock disponible del artículo con la combinación por defecto y cuando le das a otras combinaciones, no se actualiza el número, en cambio, si pongo para que se muestre la variable, en el archivo /_partials/product-add-to-cart.tpl si que se actualiza el número según seleccionas la combinación.

Un saludo!

  • Like 1
Link to comment
Share on other sites

  • Amorphus changed the title to [SOLUCIONADO] Mostrar stock disponible de las combinaciones, Prestashop 1.7
  • 1 year later...

Buenas,

El archivo que tienes que modificar es /themes/TU-TEMA/templates/catalog/_partials/product-add-to-cart.tpl

Te voy a poner como dejé yo el código a modo de ejemplo, luego ya depende de como quieras tú que aparezca. Yo tengo cambiado esto:

    {block name='product_availability'}
      <span id="product-availability">
        {if $product.show_availability && $product.availability_message}
          {if $product.availability == 'available'}
            <i class="material-icons rtl-no-flip product-available">&#xE5CA;</i>
          {elseif $product.availability == 'last_remaining_items'}
            <i class="material-icons product-last-items">&#xE002;</i>
          {else}
            <i class="material-icons product-unavailable">&#xE14B;</i>
          {/if}
          {$product.availability_message}
        {/if}
      </span>
    {/block}

por esto otro:

    {block name='product_availability'}
      <span id="product-availability">
        {if $product.show_availability && $product.availability_message}
          {if $product.availability == 'available'}
            <i class="material-icons rtl-no-flip product-available">&#xE5CA;</i>
          {elseif $product.availability == 'last_remaining_items'}
            <i class="material-icons product-last-items">&#xE002;</i>
          {else}
            <i class="material-icons product-unavailable">&#xE14B;</i>
          {/if}
        {/if}
        {if $product.quantity == 1}{$product.quantity} <label class="label">{l s='disponible' d='Shop.Theme.Catalog'}</label> - {l s='Entrega: 24/72h' d='Shop.Theme.Catalog'}
        {elseif $product.quantity > 1}{$product.quantity} <label class="label">{l s='disponibles' d='Shop.Theme.Catalog'}</label> - {l s='Entrega: 24/72h' d='Shop.Theme.Catalog'}
        {else}
        {l s='Sin stock' d='Shop.Theme.Catalog'}
        {/if}
      </span>
    {/block}

La variable que indica el número de productos es {$product.quantity} que al ponerla en este archivo sí que cambia al elegir otras combinaciones. Con este código que te he puesto, aparecerá:

1 disponible - Entrega: 24/72h  (si solo tienes uno)

X disponibles - Entrega: 24/72h (si tienes más)

Sin stock (si tienes 0 o menos)

 

La primera parte del código es la encargada de que aparezca el simbolito de visto bueno o de advertencia delante, yo aqui te la he dejado tal cual viene, pero yo la tengo modificada porque permito pedidos de productos sin stock, y con el código así me aparecía el visto bueno aunque no tuviera stock, ya que estaba disponible, pero me interesa que diferencie entre disponible con stock y disponible sin stock. Los productos que ya no están disponibles para vender los tengo con cantidad -100, por eso lo de " {elseif $product.quantity < -50}
        {l s='Producto descatalogado' d='Shop.Theme.Catalog'}" Yo lo tengo exactamente así por si sirve a alguien:

    {block name='product_availability'}
      <span id="product-availability">
        {if $product.availability == 'available' && $product.quantity > 0}
          <i class="material-icons product-available">&#xE5CA;</i>
        {elseif $product.availability == 'available' && $product.quantity =< 0}
        <i class="material-icons product-last-items">&#xE002;</i>
        {elseif $product.availability == 'last_remaining_items'}
        <i class="material-icons product-last-items">&#xE002;</i>
        {else}
        <i class="material-icons product-unavailable">&#xE14B;</i>
        {/if}
        {if $product.quantity == 1}{$product.quantity} <label class="label">{l s='disponible' d='Shop.Theme.Catalog'}</label> - {l s='Entrega: 24/72h' d='Shop.Theme.Catalog'}
        {elseif $product.quantity > 1}{$product.quantity} <label class="label">{l s='disponibles' d='Shop.Theme.Catalog'}</label> - {l s='Entrega: 24/72h' d='Shop.Theme.Catalog'}
        {elseif $product.quantity < -50}
        {l s='Producto descatalogado' d='Shop.Theme.Catalog'}
        {else}
        {l s='Sin stock' d='Shop.Theme.Catalog'}
        {/if}
      </span>
    {/block}

Link to comment
Share on other sites

 

16 hours ago, Amorphus said:

Buenas,

El archivo que tienes que modificar es /themes/TU-TEMA/templates/catalog/_partials/product-add-to-cart.tpl

Te voy a poner como dejé yo el código a modo de ejemplo, luego ya depende de como quieras tú que aparezca. Yo tengo cambiado esto:

    {block name='product_availability'}
      <span id="product-availability">
        {if $product.show_availability && $product.availability_message}
          {if $product.availability == 'available'}
            <i class="material-icons rtl-no-flip product-available">&#xE5CA;</i>
          {elseif $product.availability == 'last_remaining_items'}
            <i class="material-icons product-last-items">&#xE002;</i>
          {else}
            <i class="material-icons product-unavailable">&#xE14B;</i>
          {/if}
          {$product.availability_message}
        {/if}
      </span>
    {/block}

por esto otro:

    {block name='product_availability'}
      <span id="product-availability">
        {if $product.show_availability && $product.availability_message}
          {if $product.availability == 'available'}
            <i class="material-icons rtl-no-flip product-available">&#xE5CA;</i>
          {elseif $product.availability == 'last_remaining_items'}
            <i class="material-icons product-last-items">&#xE002;</i>
          {else}
            <i class="material-icons product-unavailable">&#xE14B;</i>
          {/if}
        {/if}
        {if $product.quantity == 1}{$product.quantity} <label class="label">{l s='disponible' d='Shop.Theme.Catalog'}</label> - {l s='Entrega: 24/72h' d='Shop.Theme.Catalog'}
        {elseif $product.quantity > 1}{$product.quantity} <label class="label">{l s='disponibles' d='Shop.Theme.Catalog'}</label> - {l s='Entrega: 24/72h' d='Shop.Theme.Catalog'}
        {else}
        {l s='Sin stock' d='Shop.Theme.Catalog'}
        {/if}
      </span>
    {/block}

La variable que indica el número de productos es {$product.quantity} que al ponerla en este archivo sí que cambia al elegir otras combinaciones. Con este código que te he puesto, aparecerá:

1 disponible - Entrega: 24/72h  (si solo tienes uno)

X disponibles - Entrega: 24/72h (si tienes más)

Sin stock (si tienes 0 o menos)

 

La primera parte del código es la encargada de que aparezca el simbolito de visto bueno o de advertencia delante, yo aqui te la he dejado tal cual viene, pero yo la tengo modificada porque permito pedidos de productos sin stock, y con el código así me aparecía el visto bueno aunque no tuviera stock, ya que estaba disponible, pero me interesa que diferencie entre disponible con stock y disponible sin stock. Los productos que ya no están disponibles para vender los tengo con cantidad -100, por eso lo de " {elseif $product.quantity < -50}
        {l s='Producto descatalogado' d='Shop.Theme.Catalog'}" Yo lo tengo exactamente así por si sirve a alguien:

    {block name='product_availability'}
      <span id="product-availability">
        {if $product.availability == 'available' && $product.quantity > 0}
          <i class="material-icons product-available">&#xE5CA;</i>
        {elseif $product.availability == 'available' && $product.quantity =< 0}
        <i class="material-icons product-last-items">&#xE002;</i>
        {elseif $product.availability == 'last_remaining_items'}
        <i class="material-icons product-last-items">&#xE002;</i>
        {else}
        <i class="material-icons product-unavailable">&#xE14B;</i>
        {/if}
        {if $product.quantity == 1}{$product.quantity} <label class="label">{l s='disponible' d='Shop.Theme.Catalog'}</label> - {l s='Entrega: 24/72h' d='Shop.Theme.Catalog'}
        {elseif $product.quantity > 1}{$product.quantity} <label class="label">{l s='disponibles' d='Shop.Theme.Catalog'}</label> - {l s='Entrega: 24/72h' d='Shop.Theme.Catalog'}
        {elseif $product.quantity < -50}
        {l s='Producto descatalogado' d='Shop.Theme.Catalog'}
        {else}
        {l s='Sin stock' d='Shop.Theme.Catalog'}
        {/if}
      </span>
    {/block}

Muchisimas gracias, me ha servido todo. Te agradezco la respuesta. Un saludo!

Link to comment
Share on other sites

  • 2 years later...
On 4/8/2019 at 11:22 AM, Amorphus said:

Buenas,

El archivo que tienes que modificar es /themes/TU-TEMA/templates/catalog/_partials/product-add-to-cart.tpl

Te voy a poner como dejé yo el código a modo de ejemplo, luego ya depende de como quieras tú que aparezca. Yo tengo cambiado esto:

    {block name='product_availability'}
      <span id="product-availability">
        {if $product.show_availability && $product.availability_message}
          {if $product.availability == 'available'}
            <i class="material-icons rtl-no-flip product-available">&#xE5CA;</i>
          {elseif $product.availability == 'last_remaining_items'}
            <i class="material-icons product-last-items">&#xE002;</i>
          {else}
            <i class="material-icons product-unavailable">&#xE14B;</i>
          {/if}
          {$product.availability_message}
        {/if}
      </span>
    {/block}

por esto otro:

    {block name='product_availability'}
      <span id="product-availability">
        {if $product.show_availability && $product.availability_message}
          {if $product.availability == 'available'}
            <i class="material-icons rtl-no-flip product-available">&#xE5CA;</i>
          {elseif $product.availability == 'last_remaining_items'}
            <i class="material-icons product-last-items">&#xE002;</i>
          {else}
            <i class="material-icons product-unavailable">&#xE14B;</i>
          {/if}
        {/if}
        {if $product.quantity == 1}{$product.quantity} <label class="label">{l s='disponible' d='Shop.Theme.Catalog'}</label> - {l s='Entrega: 24/72h' d='Shop.Theme.Catalog'}
        {elseif $product.quantity > 1}{$product.quantity} <label class="label">{l s='disponibles' d='Shop.Theme.Catalog'}</label> - {l s='Entrega: 24/72h' d='Shop.Theme.Catalog'}
        {else}
        {l s='Sin stock' d='Shop.Theme.Catalog'}
        {/if}
      </span>
    {/block}

La variable que indica el número de productos es {$product.quantity} que al ponerla en este archivo sí que cambia al elegir otras combinaciones. Con este código que te he puesto, aparecerá:

1 disponible - Entrega: 24/72h  (si solo tienes uno)

X disponibles - Entrega: 24/72h (si tienes más)

Sin stock (si tienes 0 o menos)

 

La primera parte del código es la encargada de que aparezca el simbolito de visto bueno o de advertencia delante, yo aqui te la he dejado tal cual viene, pero yo la tengo modificada porque permito pedidos de productos sin stock, y con el código así me aparecía el visto bueno aunque no tuviera stock, ya que estaba disponible, pero me interesa que diferencie entre disponible con stock y disponible sin stock. Los productos que ya no están disponibles para vender los tengo con cantidad -100, por eso lo de " {elseif $product.quantity < -50}
        {l s='Producto descatalogado' d='Shop.Theme.Catalog'}" Yo lo tengo exactamente así por si sirve a alguien:

    {block name='product_availability'}
      <span id="product-availability">
        {if $product.availability == 'available' && $product.quantity > 0}
          <i class="material-icons product-available">&#xE5CA;</i>
        {elseif $product.availability == 'available' && $product.quantity =< 0}
        <i class="material-icons product-last-items">&#xE002;</i>
        {elseif $product.availability == 'last_remaining_items'}
        <i class="material-icons product-last-items">&#xE002;</i>
        {else}
        <i class="material-icons product-unavailable">&#xE14B;</i>
        {/if}
        {if $product.quantity == 1}{$product.quantity} <label class="label">{l s='disponible' d='Shop.Theme.Catalog'}</label> - {l s='Entrega: 24/72h' d='Shop.Theme.Catalog'}
        {elseif $product.quantity > 1}{$product.quantity} <label class="label">{l s='disponibles' d='Shop.Theme.Catalog'}</label> - {l s='Entrega: 24/72h' d='Shop.Theme.Catalog'}
        {elseif $product.quantity < -50}
        {l s='Producto descatalogado' d='Shop.Theme.Catalog'}
        {else}
        {l s='Sin stock' d='Shop.Theme.Catalog'}
        {/if}
      </span>
    {/block}

Muchas gracias por tu aportación me ayudo mucho

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...