publi-tech Posted June 20, 2022 Share Posted June 20, 2022 (edited) 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> variants.mov Edited June 20, 2022 by publi-tech (see edit history) Link to comment Share on other sites More sharing options...
7bit Posted June 20, 2022 Share Posted June 20, 2022 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 More sharing options...
publi-tech Posted June 21, 2022 Author Share Posted June 21, 2022 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> Senza titolo.mov Link to comment Share on other sites More sharing options...
7bit Posted June 21, 2022 Share Posted June 21, 2022 mi fai avere url sito, anche in MP se non vuoi creare spam al sito Saluto Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now