Jump to content

Deshabilitar/Ocultar atributos sin stock


LukBR

Recommended Posts

Hola!

Os expongo un ejemplo de mi tienda. Tengo 2 grupos de atributos: tallas y colores.

Me gustaría que solamente aparecieran habilitadas las tallas que tienen stock en función del color seleccionado. Es decir,

  • Atributos:
    • Color: Azul
    • Tallas:
      • 36 (3 cantidades en stock)
      • 37 (3 cantidades en stock)
      • 38 (3 cantidades en stock)
  • Atributos:
    • Color: Rojo
    • Tallas:
      • 36 (2 cantidades en stock)
      • 37 (0 sin stock)
      • 38 (2 cantidades en stock)

Con este escenario:

  • Si selecciono el color Azul, deberían habilitarse/mostrarse todas las tallas (36, 37, 38).
  • Si selecciono el color Rojo, solo deberían aparecer habilitadas las tallas 36 y 38. La talla 37 debería deshabilitarse/ocultarse.

 

He desactivado la opción "Mostrar productos con atributos no disponibles en la página de producto".

image.png.06779caf7e06c7ac9e438f2c4d64a377.png

 

También he desactivado la opción de "Permitir ventas de productos que están fuera de stock".

image.png.2fd5920b0c710c863a470b0754fd4cf9.png

 

El problema es que estando seleccionado el color Rojo, como el color Azul tiene stock para la talla 37, esta talla sigue estando visible incluso estando el color Rojo seleccionado. ¿Hay alguna forma de ocultarlo sin necesidad de un módulo externo como "Attribute Wizards" o "Módulo Unavailable Product & Combination Disabler"?

Mediante programación he conseguido deshabilitar las tallas añadiendo el siguiente código al archivo product-variants.tpl (utilizo la plantilla Warehouse), pero el stock de la variable $groups.$id_attribute_group.attributes_quantity.$id_attribute está obteniendo la suma de las cantidades de todas las combinaciones, no de la seleccionada. Por lo que, en el ejemplo anterior, tanto si selecciono el color Azul como el Rojo, la variable $id_attribute daría el mismo resultado:

  • Talla 36 (3 + 2 = 5 cantidades en stock)
  • Talla 37 (3 + 0 = 3 cantidades en stock)
  • Talla 38 (3 + 2 = 5 cantidades en stock)

 

 {elseif $group.group_type == 'radio'}
    <ul id="group_{$id_attribute_group}">
      {foreach from=$group.attributes key=id_attribute item=group_attribute}
      <li class="input-container float-left">
        <input class="input-radio"
               type="radio" data-product-attribute="{$id_attribute_group}"
               name="group[{$id_attribute_group}]"
               value="{$id_attribute}"
               {if $group_attribute.selected} checked="checked"{/if}
               {if $groups.$id_attribute_group.attributes_quantity.$id_attribute == 0}disabled{/if}>
        <span class="radio-label"
              {if $groups.$id_attribute_group.attributes_quantity.$id_attribute == 0}
              style="color: #dddddd; border-color: #ffffff"
              {/if}>
          {$group_attribute.name}
        </span>
      </li>
      {/foreach}
    </ul>
{/if}


¿Alguien podría ayudarme con este tema?

 

Cualquier ayuda es bien recibida. Muchas gracias!

 

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...