Jump to content

Ocultar Atributos Sin Stock


byroma

Recommended Posts

Buenas!

 

Es mi primer post en este foro... la duda que tengo es la siguiente:

 

Tengo montada un prestashop 1.6 en: Di-tempo.com (Se encuentra en fase de pruebas, no hagan casos a posibles errores que vean), tenemos para meter muchísimos productos, entre ellos, mucho calzado.

He creado una ficha de producto que está oculta con todos los atributos (todas las tallas que tengo, desde la más pequeña hasta la mas grande) y digamos que cada vez que meto un calzado nuevo, duplico esta ficha cambiando imagenes, referencia etc...

 

Hasta aquí todo perfecto, ¿que pasa entonces? No todos los calzados tengo desde la talla más pequeña, hasta la talla más grande, véase: Link deportivas. En ese ejemplo sólo tengo stock de la talla: 40,41,42,43,44 y 46. Pero me aparecen atributos que no tengo stock... No me interesa quitar el atributo ya que en un futuro puede que tenga stock de las demás tallas, entonces mi duda seria, como puedo ocultar los valores que no tengo stock? o añadirle una clase "desactivado"?

 

Gracias por adelantado!

Link to comment
Share on other sites

Puedes hacerlo de dos formas : en el controlador de producto, quitar las tallas que no tengan stock, o en la ficha del producto, ocultar las tallas que no tengan stock mediante css.

 

Posiblemente te sea mas fácil hacerlo en el controlador de producto.

Gracias Gabriel por la respuesta, pero como te comento, no me interesa ir quitando de la ficha del producto, a parte de llevar un tiempo inmenso, en un futuro puedo meter stock en ese atributo...

 

Lo que voy buscando es como hacer en product.tpl el "if" que me ponga la clase "desactivado" si no hay stock.

 

Saludos!

Link to comment
Share on other sites

No me refiero a quitar de la ficha del producto, sino, en el controlador del producto, comprobar cuales no tienen stock y no enviarlos al tpl.

 

De todas formas, en el tpl pordría bastarte con hacer algo asi :

{if $groups.$id_attribute_group.attributes_quantity.$id_attribute == 0}disabled{/if}
  • Like 1
Link to comment
Share on other sites

 

No me refiero a quitar de la ficha del producto, sino, en el controlador del producto, comprobar cuales no tienen stock y no enviarlos al tpl.

 

De todas formas, en el tpl pordría bastarte con hacer algo asi :

{if $groups.$id_attribute_group.attributes_quantity.$id_attribute == 0}disabled{/if}

Gracias Gabriel :)

Link to comment
Share on other sites

  • 1 year later...

Buenas!
 

Me pasa algo similar... Me gustaría ocultar las combinaciones que están sin stock modificando el product.tpl pero me pierdo un poco.

 

{if $groups.$id_attribute_group.attributes_quantity.$id_attribute <= 0}disabled{/if}

 

 

1º Dónde debería colocarlo?

2º¿Dónde aparece la palabra "disabled"  imagino que habría que cambiarlo tb por algo no?

 

Los tiros creo que van por  añadir el código anterior dentro de este DIV

<!-- attributes -->
							<div id="attributes">
								<div class="clearfix"></div>
								{foreach from=$groups key=id_attribute_group item=group}
									{if $group.attributes|@count}
										<fieldset class="attribute_fieldset">
											<label class="attribute_label" {if $group.group_type != 'color' && $group.group_type != 'radio'}for="group_{$id_attribute_group|intval}"{/if}>{$group.name|escape:'html':'UTF-8'}&nbsp;</label>
											{assign var="groupName" value="group_$id_attribute_group"}
											<div class="attribute_list">
												{if ($group.group_type == 'select')}
													<select name="{$groupName}" id="group_{$id_attribute_group|intval}" class="form-control attribute_select no-print">
														{foreach from=$group.attributes key=id_attribute item=group_attribute}
															<option value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if} title="{$group_attribute|escape:'html':'UTF-8'}">{$group_attribute|escape:'html':'UTF-8'}</option>
														{/foreach}
													</select>
												{elseif ($group.group_type == 'color')}
													<ul id="color_to_pick_list" class="clearfix">
														{assign var="default_colorpicker" value=""}
														{foreach from=$group.attributes key=id_attribute item=group_attribute}
															{assign var='img_color_exists' value=file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')}
															<li{if $group.default == $id_attribute} class="selected"{/if}>
																<a href="{$link->getProductLink($product)|escape:'html':'UTF-8'}" id="color_{$id_attribute|intval}" name="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" class="color_pick{if ($group.default == $id_attribute)} selected{/if}"{if !$img_color_exists && isset($colors.$id_attribute.value) && $colors.$id_attribute.value} style="background:{$colors.$id_attribute.value|escape:'html':'UTF-8'};"{/if} title="{$colors.$id_attribute.name|escape:'html':'UTF-8'}">
																	{if $img_color_exists}
																		<img src="{$img_col_dir}{$id_attribute|intval}.jpg" alt="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" title="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" width="20" height="20" />
																	{/if}
																</a>
															</li>
															{if ($group.default == $id_attribute)}
																{$default_colorpicker = $id_attribute}
															{/if}
														{/foreach}
												

													</ul>
													<input type="hidden" class="color_pick_hidden" name="{$groupName|escape:'html':'UTF-8'}" value="{$default_colorpicker|intval}" />
												{elseif ($group.group_type == 'radio')}
													<ul>
														{foreach from=$group.attributes key=id_attribute item=group_attribute}
															<li>
																<input type="radio" class="attribute_radio" name="{$groupName|escape:'html':'UTF-8'}" value="{$id_attribute}" {if ($group.default == $id_attribute)} checked="checked"{/if} />
																<span>{$group_attribute|escape:'html':'UTF-8'}</span>
															</li>
														{/foreach}
													</ul>
												{/if}
											</div> <!-- end attribute_list -->
										</fieldset>
									{/if}
								{/foreach}
							</div> <!-- end attributes -->

Gracias por antelación...

Link to comment
Share on other sites

Por si a alguno le sirve..

 

Creo que he dado con la solución... He modificado el product.tpl añadiendo el código que comenta Gabriel Pérez con una modificación:

Como se puede comprobar, lo que hice fue que en el SELECT compruebe si es mayor que 0 el stock del atributo, en ese caso lo muestra.

<select name="{$groupName}" id="group_{$id_attribute_group|intval}" class="form-control attribute_select no-print">
      {foreach from=$group.attributes key=id_attribute item=group_attribute}
          {if $groups.$id_attribute_group.attributes_quantity.$id_attribute > 0}
               <option value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if} title="{$group_attribute|escape:'html':'UTF-8'}">{$group_attribute|escape:'html':'UTF-8'}</option>
           {/if}
      {/foreach}
</select>

 

 

¡GRACIAS de todos modos!

Link to comment
Share on other sites

  • nadie locked this topic
Guest
This topic is now closed to further replies.
×
×
  • Create New...