Jump to content

Product availability (Disponibilità / Quantità prodotti)


Recommended Posts

Salve, avrei la necessità di creare una logica che lavori in questo modo:

Questo sotto è un estratto del file product-variants.tpl, nello specifico il blocco che regola la restituzione delle varianti Colori (i pallini con all'interno i colori). Vorrei che, se la variante è Non Disponibile nel sito, venga mostrato un altro <span> che ho apportunamente creato (che sarà una "X" sul pallino per indicare che il colore è terminato). Per fare questo ho inserito il {if $product.availability == 'unavailable'} centrale che vedete nel codice, con annesso <span> con classe input-color-unavailable.
Il problema è che a quanto pare lo <span> in questione viene mostrato solo quando è stato selezionato il colore Non Disponibile, e viene mostrato su tutte le varianti di colore. Al contrario, se è selezionata una variante Disponibile, lo <span> non viene mostrato su nessuna variante. Sembra quindi che Prestashop legga la disponibilità di una variante solo se selezionata (in pratica, la stessa logica che usa per il messaggio di disponibilità più in basso).

Nel video allegato potete vedere la Variante Gialla che è Disponibile, e la Variante Rossa che è Non Disponibile.
Lo <span> attualmente ha il background blue così si vede chiaramente. Quando seleziono la Variante Rossa Non Disponibile, mi applica lo span blu a tutte quante. Quando seleziono la Variante Gialla Disponibile, non mi mostra lo span blu su quella Non Disponibile.
La mia domanda è quindi: è possibile fare in modo che legga le disponibilità delle varianti anche senza selezionarla?

Spero di essere stato il più chiaro possibile,
Grazie in anticipo

 

<input class="input-color" type="radio" data-product-attribute="{$id_attribute_group}" name="group[{$id_attribute_group}]" value="{$id_attribute}"{if $group_attribute.selected} checked="checked"{/if}>

{if $product.availability == 'unavailable'}
 <span class="input-color-unavailable"></span>
{/if}

<span
{if $group_attribute.html_color_code}class="color" style="background-color: {$group_attribute.html_color_code}" {/if}
{if $group_attribute.texture}class="color texture" style="background-image: url({$group_attribute.texture})" {/if}>
<span class="sr-only">{$group_attribute.name}</span></span>

Edited by publi-tech (see edit history)
Link to comment
Share on other sites

il controllo che hai inserito {if $product.availability == 'unavailable'} non lo limitare solo allo <span>

fai in modo che il controllo lavori anche sul TAG input di selezione attributo, ossia se la variante è disponibile allora si visualizza il pallino per la selezione, diversamente visualizzi solo un icona statica ( che magari crei a forma dello stesso pallino degli altri per mantenere il layout, ma con una X al centro) che non sarà cliccabile ma solo di visualizzazione

Saluto

Link to comment
Share on other sites

12 ore fa, 7bit dice:

il controllo che hai inserito {if $product.availability == 'unavailable'} non lo limitare solo allo <span>

fai in modo che il controllo lavori anche sul TAG input di selezione attributo, ossia se la variante è disponibile allora si visualizza il pallino per la selezione, diversamente visualizzi solo un icona statica ( che magari crei a forma dello stesso pallino degli altri per mantenere il layout, ma con una X al centro) che non sarà cliccabile ma solo di visualizzazione

Saluto

Non so se ho interpretato bene:

Ho creato in maniera elementare un else che dice che quando non sono 'available', mostra uno span di colore blue. Il problema però sussiste lo stesso perchè nel momento in cui vengono selezionate le varianti disponibili, le altre non disponibili o non vengono "lette" come tali fin quando non vengono cliccate (vedi allegato)

Avevo invece provato a mettere l'if a tutto il tag input, ma succedeva che la varianti non venivano mostrate proprio, il che comunque non va bene perchè poi non si possono cliccare.

 

<input class="input-color" type="radio" data-product-attribute="{$id_attribute_group}" name="group[{$id_attribute_group}]" value="{$id_attribute}"{if $group_attribute.selected} checked="checked"{/if}>

<span
 {if $product.availability == 'available'}
  {if $group_attribute.html_color_code}class="color" style="background-color: {$group_attribute.html_color_code}" {/if}
  {if $group_attribute.texture}class="color texture" style="background-image: url({$group_attribute.texture})" {/if}
 {else}
  {if $group_attribute.html_color_code}class="color" style="background-color: blue" {/if}
  {if $group_attribute.texture}class="color texture" style="background-color: blue" {/if}
 {/if}
><span class="sr-only">{$group_attribute.name}</span></span>

 

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