Jump to content

Recommended Posts

Buenas!

 

Os comento un "problema" que estoy teniendo únicamente con los productos personalizados. Os pongo un poco en situación a ver si me podéis dar una explicación del por qué pasa porque no lo entiendo (partimos que mis conocimientos de programación de plantillas es muy limitado). 

 

He implementado el siguiente enlace para que guarde los textos de la personalización del producto en el momento de añadir el producto al carrito. 

 

http://www.prestashop.com/forums/index.php?/topic/76874-how-to-remove-save-button-for-customized-fields/page__view__findpost__p__962978

 

Hasta aquí todo bien. Incluso he hecho alguna modificación en la plantilla "product.tpl" para mover la ubicación del cuadro de texto. 

 

El problema que tengo, incluso antes de modificar la plantilla por temas de ubicaciones de datos, es que cuando entro en un producto que tiene personalización, la columna de categorías desaparece. Mejor dicho, se queda el título pero el contenido (todas las categorías) desaparecen. A la que vuelvo a entrar en un producto diferente que no tiene personalización, todo vuelve a la normalidad. 

 

He podido detectar que en el product.tpl, apartado "// Combinations".... si a la línea 

 

 

addCombination({$idCombination|intval}, new Array({$combination.list}), {$combination.quantity}, {$combination.price}, {$combination.ecotax}, {$combination.id_image}, '{$combination.reference|addslashes}', {$combination.unit_impact}, {$combination.minimal_quantity}, '{$combination.available_date}', specific_price_combination);

 

Le añado la variable "available_date" del siguiente modo:

 

 

 

addCombination({$idCombination|intval}, new Array({$combination.list}), {$combination.quantity}, {$combination.price}, {$combination.ecotax}, {$combination.id_image}, '{$combination.reference|addslashes}', {$combination.unit_impact}, {$combination.minimal_quantity}, available_date, specific_price_combination);

 

Las categorías aparecen perfectamente pero entonces pierdo la funcionalidad de guardar el texto personalizado en el momento de añadir al carrito. 

 

Esta versión todavía no la tengo en productivo y estoy trabajando en una versión local, hasta que consiga solucionar este problema. Por lo que si necesitáis ver algo (pantallazo para ver el detalle de las categorías que no se ven o cualquier cosa) os lo facilitaré sin problemas. 

 

¿Sabéis por qué pasa esto? Yo no consigo entenderlo. 

 

Muchas gracias! 

Link to comment
Share on other sites

Pues esto en el post que mensicona esta mal, observe hay dos aperturas (( :


{foreach from=$combinations key=idCombination item=combination}
  addCombination( ({$idCombination|intval}, 
  new Array({$combination.list}), 
  {$combination.quantity}, 
  {$combination.price}, 
  {$combination.ecotax}, 
  {$combination.id_image}, 
  '{$combination.reference|addslashes}', 
  {$combination.unit_impact}, 
  {$combination.minimal_quantity});
{/foreach}

 en su ejemplo, pruebe quitando las comillas simples.

 

de todos modos es extraño que se haga un blucle a addCombination de esta forma, creo que deberia aplicar el foreach al conetenido de addCombination, de ser valido obvio.

 

saludos

Link to comment
Share on other sites

Pues esto en el post que mensicona esta mal, observe hay dos aperturas (( :


{foreach from=$combinations key=idCombination item=combination}
  addCombination( ({$idCombination|intval}, 
  new Array({$combination.list}), 
  {$combination.quantity}, 
  {$combination.price}, 
  {$combination.ecotax}, 
  {$combination.id_image}, 
  '{$combination.reference|addslashes}', 
  {$combination.unit_impact}, 
  {$combination.minimal_quantity});
{/foreach}

 en su ejemplo, pruebe quitando las comillas simples.

 

de todos modos es extraño que se haga un blucle a addCombination de esta forma, creo que deberia aplicar el foreach al conetenido de addCombination, de ser valido obvio.

 

saludos

 

Muchas gracias por contestar "tamu secreto".

 

Efectivamente quitando las comillas como indicas la columna de "categorías" ha vuelto a aparecer para el producto personalizado, pero entonces pierdo varias funcionalidades como por ejemplo la de guardar el texto personalizado en el momento que se añade al carrito. 

Link to comment
Share on other sites

Pues seria mas sencillo ayudarlo si me explica que desea hacer :wub:

 

El codigo que expone el post a que hace referencia tiene algunos errores incluso no se si encuadran las condicionales.

 

observe que otro error es este:


{foreach from=$customizationFields item='field' name='customizationFields'}
{assign var="key" value="pictures_`$product->id`_`$field.id_customization_field`"}

DEBRIA SER

{foreach from=$customizationFields item='field' name='customizationFields'}
{assign var="key" value="pictures_{$product->id}_{$field.id_customization_field}"}

Si lo que busca es mostrar todo el contenido de la personalizacion en el box del carrito en PS 1.4.x , pues:

 

habra el archivo blockcart.tpl  
ubicado en modules/blockcart , busque en ese archivo esto :

<!-- Customizable datas -->

añada justo despues de eso esto:

			{if isset($customizedDatas.$productId.$productAttributeId)}
			<p><b style="color:#000">{l s='Personalizados' mod='blockcart'}</b></p>
{foreach from=$customizedDatas.$productId.$productAttributeId item='customization' key='customizationId'}

						{foreach from=$customization.datas key='type' item='datas'}
							{if $type == $CUSTOMIZE_FILE}
							<ul class="customizationUploaded">
								{foreach from=$datas item='data'}
									<li><img src="{$pic_dir}{$data.value}_small" alt="" class="customizationUploaded" /></li>
								{/foreach}
							</ul>
							{elseif $type == $CUSTOMIZE_TEXTFIELD}
							<ul class="typedText">{counter start=0 print=false}
								{foreach from=$datas item='data'}
									{assign var='customizationFieldName' value="Text #"|cat:$data.id_customization_field}
									<li>{$data.name|default:$customizationFieldName}{l s=':'} {$data.value}</li>
								{/foreach}
							</ul>
							{/if}
						{/foreach}
					{/foreach}
				{/if}

ahora si lo que quiere es cargar todo al momento de añadir al carrito, pues solo debe adicionar los campos de formularios

dentro del formulario que envia a la cesta.

No hace falta todo lo que indican en ese post.

 

Obviamente, lo que le indico solo funcionara en archivos tpl, originales sin modificaciones anteriores.

 

saludos

Link to comment
Share on other sites

Pues seria mas sencillo ayudarlo si me explica que desea hacer :wub:

 

El codigo que expone el post a que hace referencia tiene algunos errores incluso no se si encuadran las condicionales.

 

observe que otro error es este:


{foreach from=$customizationFields item='field' name='customizationFields'}
{assign var="key" value="pictures_`$product->id`_`$field.id_customization_field`"}

DEBRIA SER

{foreach from=$customizationFields item='field' name='customizationFields'}
{assign var="key" value="pictures_{$product->id}_{$field.id_customization_field}"}

Si lo que busca es mostrar todo el contenido de la personalizacion en el box del carrito en PS 1.4.x , pues:

 

habra el archivo blockcart.tpl  

ubicado en modules/blockcart , busque en ese archivo esto :

<!-- Customizable datas -->

añada justo despues de eso esto:

			{if isset($customizedDatas.$productId.$productAttributeId)}
			<p><b style="color:#000">{l s='Personalizados' mod='blockcart'}</b></p>
{foreach from=$customizedDatas.$productId.$productAttributeId item='customization' key='customizationId'}

						{foreach from=$customization.datas key='type' item='datas'}
							{if $type == $CUSTOMIZE_FILE}
							<ul class="customizationUploaded">
								{foreach from=$datas item='data'}
									<li><img src="{$pic_dir}{$data.value}_small" alt="" class="customizationUploaded" /></li>
								{/foreach}
							</ul>
							{elseif $type == $CUSTOMIZE_TEXTFIELD}
							<ul class="typedText">{counter start=0 print=false}
								{foreach from=$datas item='data'}
									{assign var='customizationFieldName' value="Text #"|cat:$data.id_customization_field}
									<li>{$data.name|default:$customizationFieldName}{l s=':'} {$data.value}</li>
								{/foreach}
							</ul>
							{/if}
						{/foreach}
					{/foreach}
				{/if}

ahora si lo que quiere es cargar todo al momento de añadir al carrito, pues solo debe adicionar los campos de formularios

dentro del formulario que envia a la cesta.

No hace falta todo lo que indican en ese post.

 

Obviamente, lo que le indico solo funcionara en archivos tpl, originales sin modificaciones anteriores.

 

saludos

 

Hola,

 

Lo que quiero conseguir es que en los productos personalizados, la información se guarde automáticamente en el momento de darle al botón de Añadir al Carrito. 

 

Cuando comentas: 

 

 

ahora si lo que quiere es cargar todo al momento de añadir al carrito, pues solo debe adicionar los campos de formularios

dentro del formulario que envia a la cesta.

 

Cómo puedo hacer eso? 

 

Muchas gracias por la ayuda. 

Link to comment
Share on other sites

:mellow:  Primero yo no se mucho de esto, y sobre todo me cuesta explicar, asi que tratare de darle un rumbo, luego usted tendra que hacerlo o buscar la forma.

 

Tiene que enteder como funciona un formulario, mas que nada atributo “action” del mismo.

 

No es logico hacer lo que muestran en el post que usted indica, ya que en la pagina producto.tpl hay varios formularios y cada uno posee su propia accion.

 

en el directorio controller  seguramente encontrara el validador que se encarga de recibir los datos de la personalizacion, y que rellena el atributo action del formulario de personalizados de la pagina producto.tpl

 

Ahora para hacer lo que usted necesita (es solo una idea mia) debe respectar la estructura de validacion de prestashop, para ello lo mas logico seria que respecte el sentido comun de la arquitectura de product.tpl , esta esta da mas o menos asi:

 

1-  si hay personalizados para el producto, se los muestra

2- si el cliente desea la personalizacion, debe enviarla antes de cargar el producto al carrito.

3- una vez guadada la personalizacion el cliente puede cargar el producto a la cesta y conjuntamente se cargan los datos de la personalizacion :)

 

Ahora una forma de respetar esto seria utilizando ajax o jquery  para enviar los datos de la personalizacion, de esta manera

cuando el cliente carga su personalizacion no sera necesario guardarlas por que mediante ajax o jquery ya han sido guardados .

 

o sea cuando le de al boton adicionar al carrito se cargaran los datos de la personalizacion, de esta manera se evita el paso de guardar.

 

en conclusion, a mi enteder es la mejor opcion,  pero recuerde que no entiendo mucho de esto :mellow:

 

saludos

Link to comment
Share on other sites

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