Jump to content

kmasdo

Recommended Posts

Hola,

 

He creado un campo personalizado (marcado como necesario desde el cátalogo) para almacenar una fecha desde un calendario utilizando el componente datepicker de JQuery. Para ello he modificado el product.tpl (utilizo el tema prestashop new theme) .

El campo creado se llama Fecha de Reserva . El código permite seleccionar una fecha desde el calendario y almacenarla en el campo Fecha de Reserva . El problema surge cuándo, después de seleccionar la fecha del calendario y actualizar el valor del campo de Reserva (guardando su valor, botón guardar), se desea añadir el producto al carrito. En este momento se muestra el error " Por favor, rellene todos los campos obligatorios".

Mirando el contenido de la tabla customized_data se comprueba que el valor no ha sido actualizado (a pesar de mostrarse en el campo y de pulsar el botón guardar).

 

En cambio, si al mismo campo personalizado se le elimina la marca de campo necesario, la operativa del proceso es correcta, almacenándose su valor y permintiendo que el producto se añada al carrito.

 

Os pongo el código de product.tpl, para ver si podeís decirme que puede estar pasando.

 

{if $product->customizable}
<ul class="idTabs clearfix">
 <li><a style="cursor: pointer">{l s='Product customization'}</a></li>
</ul>
<div class="customization_block">
 <form method="post" action="{$customizationFormTarget}" enctype="multipart/form-data" id="customizationForm">
  <p>
<img src="{$img_dir}icon/infos.gif" alt="Informations" />
{l s='After saving your customized product, remember to add it to your cart.'}
{if $product->uploadable_files}<br />{l s='Allowed file formats are: GIF, JPG, PNG'}{/if}
  </p>
  {if $product->uploadable_files|intval}
  <h2>{l s='Pictures'}</h2>
  <ul id="uploadable_files">
{counter start=0 assign='customizationField'}
{foreach from=$customizationFields item='field' name='customizationFields'}
 {if $field.type == 0}
  <li class="customizationUploadLine{if $field.required} required{/if}">{assign var='key' value='pictures_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field}
   {if isset($pictures.$key)}<div class="customizationUploadBrowse">
	 <img src="{$pic_dir}{$pictures.$key}_small" alt="" />
	 <a href="{* $link->getProductDeletePictureLink($product,{$field.id_customization_field})*}" title="{l s='Delete'}" >
	  <img src="{$img_dir}icon/delete.gif" alt="{l s='Delete'}" class="customization_delete_icon" width="11" height="13" />
	 </a>
	</div>{/if}
   <div class="customizationUploadBrowse"><input type="file" name="file{$field.id_customization_field}" id="img{$customizationField}" class="customization_block_input {if isset($pictures.$key)}filled{/if}" />{if $field.required}<sup>*</sup>{/if}
   <div class="customizationUploadBrowseDescription">{if !empty($field.name)}{$field.name}{else}{l s='Please select an image file from your hard drive'}{/if}</div></div>
  </li>
  {counter}
 {/if}
{/foreach}
  </ul>
  {/if}
  <div class="clear"></div>
  {if $product->text_fields|intval}
  <h2>{l s='Texts'}</h2>
  <h3><ul id="text_fields">
{counter start=0 assign='customizationField'}
{foreach from=$customizationFields item='field' name='customizationFields'}


***************** INICIO DEL CODIGO MODIFICADO ************************************


 {if $field.type == 1}
				{if $field.name != 'Fecha de Reserva'}
							<li class="customizationUploadLine{if $field.required} required{/if}">
							{assign var='key' value='textFields_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field}
							 {if !empty($field.name)}{$field.name}{/if}{if $field.required}<sup>*</sup>{/if}
							 <input type="text" name="textField{$field.id_customization_field}" id="textField{$customizationField}" class="customization_block_input" value="{if isset($textFields.$key)}{$textFields.$key|stripslashes}{/if}"/>
							</li>
						 {/if}
<!-- Campos tipo fecha Aqui es donde introduzco el calendario -->
					{if $field.name == 'Fecha de Reserva'}
							 <link type="text/css" href="../cal/jquery-ui-1.8.17.custom.css" rel="Stylesheet" />
							 <script type="text/javascript" src="../cal/jquery-1.7.1.min.js"></script>
							 <script type="text/javascript" src="../cal/jquery-ui-1.8.17.custom.min.js"></script>
							 <li class="customizationUploadLine{if $field.required} required{/if}">{assign var='key' value='textFields_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field}
							{if !empty($field.name)}{$field.name}{/if}{if $field.required}<sup>*</sup>{/if}
							<script>
								var $jq = jQuery.noConflict();
								$(function() { $jq( "#textField{$customizationField}" ).datepicker({
								showOn: "both",
								buttonImage: "../cal/calendar.gif",
								buttonImageOnly: true,
								minDate: 0, maxDate: "+1Y +10D",
								dateFormat: "dd/mm/yy"
								});});
							</script>			  
							<input type="text" name="textField{$field.id_customization_field}" id="textField{$customizationField}" class="customization_block_input" value='{if isset($textFields.$key)}{$textFields.$key|stripslashes}{/if}' size="10" readonly/>

						</li>  
					{/if}
  {counter}
 {/if}
{/foreach}
  </ul></h3>


**************************************** FIN DEL CODIGO MODIFICADO ************************

  {/if}
  <p style="clear: left;" id="customizedDatas">
<input type="hidden" name="quantityBackup" id="quantityBackup" value="" />
<input type="hidden" name="submitCustomizedDatas" value="1" />
<input type="button" class="button" value="{l s='Save'}" onclick="javascript:saveCustomization()" />
<span id="ajax-loader" style="display:none"><img src="{$img_ps_dir}loader.gif" alt="loader" /></span>
  </p>

 

Saludos.

  • Like 1
Link to comment
Share on other sites

  • 1 year later...
Guest
This topic is now closed to further replies.
×
×
  • Create New...