Jump to content

[SOLUCIONADO] Pedido 5 pasos o rápido con pantalla en blanco


keylen

Recommended Posts

Estimados foristas,

 

Soy nuevo en la comunidad, pero en vista de que no he podido hacer funcionar una página que estoy creando ya que el pedido no se realiza completo, he decidido escribir. 

 

Estoy utilizando la versión 1.5.6.0., y al agregar productos al carrito y tratar de confirmar y llegar al paso de las direcciones, cuando no tengo direcciones asociadas, me dice para crear una, pero luego salta a una pantalla en blanco. Igual sucede si ya tengo direcciones en mi cuenta.

 

El tema que estoy utilizando es temaKJ que es una copia fiel del default sin modificaciones, porque en un intento desesperado lo copié antes de comenzar a cargar productos, pero aún así en una instalación limpia desde cero, el error sucede.

 

Mi página es esta: Link

 

Activé las funciones de debug, y parece ser un error con smarty, anexo la imagen con el link que se genera en mi página y el error.

 

Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "/home/keylen/public_html/themes/temaKJ/order-address.tpl" on line 88 "{if !$smarty.foreach.inv_loop.first},{/if}{$field_name|json_encode}" unknown modifier "json_encode"' in /home/keylen/public_html/tools/smarty/sysplugins/smarty_internal_templatecompilerbase.php:667 Stack trace: #0 /home/keylen/public_html/tools/smarty/sysplugins/smarty_internal_compile_private_modifier.php(132): Smarty_Internal_TemplateCompilerBase->trigger_template_error('unknown modifie...', 88) #1 /home/keylen/public_html/tools/smarty/sysplugins/smarty_internal_templatecompilerbase.php(475): Smarty_Internal_Compile_Private_Modifier->compile(Array, Object(Smarty_Internal_SmartyTemplateCompiler), Array, NULL, NULL) #2 /home/keylen/public_html/tools/smarty/sysplugins/smarty_internal_templatecompilerbase.php(259): Smarty_Internal_TemplateCompilerBase->callTagCompiler('private_modifie...', Array, Array) #3 /home/keylen/public_ht in /home/keylen/public_html/tools/smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 667

post-718231-0-16870100-1382031389_thumb.jpg

Edited by keylen (see edit history)
Link to comment
Share on other sites

Pues al parecer te esta pegando un gran pertadazo en este fichero:

order-address.tpl

¿Se puede ver el contenido del fichero? (¿Si restauras ese fichero de la default arranca funciona?)

 

En ambos templates el fichero es exactamente el mismo y es el que viene por default con esta versión:

 

Anexo el código:

 

{*
* 2007-2013 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2013 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*}
 
{if $opc}
{assign var="back_order_page" value="order-opc.php"}
{else}
{assign var="back_order_page" value="order.php"}
{/if}
 
{*
** Retro compatibility for PrestaShop version < 1.4.2.5 with a recent theme
** Syntax smarty for v2
*}
 
{* Will be deleted for 1.5 version and more *}
{if !isset($formatedAddressFieldsValuesList)}
{$ignoreList.0 = "id_address"}
{$ignoreList.1 = "id_country"}
{$ignoreList.2 = "id_state"}
{$ignoreList.3 = "id_customer"}
{$ignoreList.4 = "id_manufacturer"}
{$ignoreList.5 = "id_supplier"}
{$ignoreList.6 = "date_add"}
{$ignoreList.7 = "date_upd"}
{$ignoreList.8 = "active"}
{$ignoreList.9 = "deleted"}
 
{* PrestaShop 1.4.0.17 compatibility *}
{if isset($addresses)}
{foreach from=$addresses key=k item=address}
{counter start=0 skip=1 assign=address_key_number}
{$id_address = $address.id_address}
{foreach from=$address key=address_key item=address_content}
{if !in_array($address_key, $ignoreList)}
{$formatedAddressFieldsValuesList.$id_address.ordered_fields.$address_key_number = $address_key}
{$formatedAddressFieldsValuesList.$id_address.formated_fields_values.$address_key = $address_content}
{counter}
{/if}
{/foreach}
{/foreach}
{/if}
{/if}
 
<script type="text/javascript">
// <![CDATA[
{if !$opc}
var orderProcess = 'order';
var currencySign = '{$currencySign|html_entity_decode:2:"UTF-8"}';
var currencyRate = '{$currencyRate|floatval}';
var currencyFormat = '{$currencyFormat|intval}';
var currencyBlank = '{$currencyBlank|intval}';
var txtProduct = "{l s='product' js=1}";
var txtProducts = "{l s='products' js=1}";
{/if}
 
var addressMultishippingUrl = "{$link->getPageLink('address', true, NULL, "back={$back_order_page}?step=1{'&multi-shipping=1'|urlencode}{if $back}&mod={$back|urlencode}{/if}")|addslashes}";
var addressUrl = "{$link->getPageLink('address', true, NULL, "back={$back_order_page}?step=1{if $back}&mod={$back}{/if}")|addslashes}";
 
var formatedAddressFieldsValuesList = new Array();
 
{foreach from=$formatedAddressFieldsValuesList key=id_address item=type}
formatedAddressFieldsValuesList[{$id_address}] =
{ldelim}
'ordered_fields':[
{foreach from=$type.ordered_fields key=num_field item=field_name name=inv_loop}
{if !$smarty.foreach.inv_loop.first},{/if}{$field_name|json_encode}
{/foreach}
],
'formated_fields_values':{ldelim}
{foreach from=$type.formated_fields_values key=pattern_name item=field_name name=inv_loop}
{if !$smarty.foreach.inv_loop.first},{/if}{$pattern_name|json_encode}:{$field_name|json_encode}
{/foreach}
{rdelim}
{rdelim}
{/foreach}
 
function getAddressesTitles()
{
return {
'invoice': "{l s='Your billing address' js=1}",
'delivery': "{l s='Your delivery address' js=1}"
};
}
 
function buildAddressBlock(id_address, address_type, dest_comp)
{
if (isNaN(id_address))
return;
 
var adr_titles_vals = getAddressesTitles();
var li_content = formatedAddressFieldsValuesList[id_address]['formated_fields_values'];
var ordered_fields_name = ['title'];
 
ordered_fields_name = ordered_fields_name.concat(formatedAddressFieldsValuesList[id_address]['ordered_fields']);
ordered_fields_name = ordered_fields_name.concat(['update']);
 
dest_comp.html('');
 
li_content['title'] = adr_titles_vals[address_type];
li_content['update'] = '<a href="{$link->getPageLink('address', true, NULL, "id_address")|addslashes}'+id_address+'&back={$back_order_page}?step=1{if $back}&mod={$back}{/if}" title="{l s='Update' js=1}">» {l s='Update' js=1}</a>';
 
appendAddressList(dest_comp, li_content, ordered_fields_name);
}
 
function appendAddressList(dest_comp, values, fields_name)
{
for (var item in fields_name)
{
var name = fields_name[item];
var value = getFieldValue(name, values);
if (value != "")
{
var new_li = document.createElement('li');
new_li.className = 'address_'+ name;
new_li.innerHTML = getFieldValue(name, values);
dest_comp.append(new_li);
}
}
}
 
function getFieldValue(field_name, values)
{
var reg=new RegExp("[ ]+", "g");
 
var items = field_name.split(reg);
var vals = new Array();
 
for (var field_item in items)
{
items[field_item] = items[field_item].replace(",", "");
vals.push(values[items[field_item]]);
}
return vals.join(" ");
}
 
//]]>
</script>
 
{if !$opc}
{capture name=path}{l s='Addresses'}{/capture}
{include file="$tpl_dir./breadcrumb.tpl"}
{/if}
 
{if !$opc}<h1>{l s='Addresses'}</h1>{else}<h2><span>1</span> {l s='Addresses'}</h2>{/if}
 
{if !$opc}
{assign var='current_step' value='address'}
{include file="$tpl_dir./order-steps.tpl"}
{include file="$tpl_dir./errors.tpl"}
 
{if !$multi_shipping && {Configuration::get('PS_ALLOW_MULTISHIPPING')} && !$cart->isVirtualCart()}
<div class="button_multishipping_mode" id="multishipping_mode_box">
<div class="title">{l s='Multi-shipping'}</div>
<div class="description">
<a href="{$link->getPageLink('order', true, NULL, 'step=1&multi-shipping=1')|escape:'html'}"/>
{l s='Specify a delivery address for each product ordered.'}
</a>
</div>
</div>
{/if}
<form action="{$link->getPageLink($back_order_page, true)|escape:'html'}" method="post">
{else}
{if {Configuration::get('PS_ALLOW_MULTISHIPPING')} && !$cart->isVirtualCart()}
<div class="address-form-multishipping">
<div class="button_multishipping_mode" id="multishipping_mode_box">
<div class="title">{l s='Multi-shipping'}</div>
<div class="description">
<input type="checkbox" id="multishipping_mode_checkbox" onchange="multishippingMode(this); return false;" autocomplete="off"/><label for="multishipping_mode_checkbox">{l s='I\'d like to specify a delivery address for each product ordered.'}</label>
</div>
<div class="description_off">
<a href="{$link->getPageLink('order-opc', true, NULL, 'ajax=1&multi-shipping=1&method=multishipping')|escape:'html'}" id="link_multishipping_form" title="{l s='Choose the delivery address(es)'}">
{l s='Specify a delivery address for each product.'}
</a>
</div>
</div>
<script type="text/javascript">
{if $is_multi_address_delivery}
var multishipping_mode = true;
{else}
var multishipping_mode = false;
{/if}
var open_multishipping_fancybox = {$open_multishipping_fancybox|intval};
</script>
</div>
{/if}
<div id="opc_account" class="opc-main-block">
<div id="opc_account-overlay" class="opc-overlay" style="display: none;"></div>
{/if}
<div class="addresses clearfix">
<p class="address_delivery select">
<label for="id_address_delivery">{if $cart->isVirtualCart()}{l s='Choose a billing address:'}{else}{l s='Choose a delivery address:'}{/if}</label>
<select name="id_address_delivery" id="id_address_delivery" class="address_select" onchange="updateAddressesDisplay();{if $opc}updateAddressSelection();{/if}">
 
{foreach from=$addresses key=k item=address}
<option value="{$address.id_address|intval}" {if $address.id_address == $cart->id_address_delivery}selected="selected"{/if}>{$address.alias|escape:'htmlall':'UTF-8'}</option>
{/foreach}
 
</select>
</p>
<p class="checkbox addressesAreEquals" {if $cart->isVirtualCart()}style="display:none;"{/if}>
<input type="checkbox" name="same" id="addressesAreEquals" value="1" onclick="updateAddressesDisplay();{if $opc}updateAddressSelection();{/if}"{if $cart->id_address_invoice == $cart->id_address_delivery || $addresses|@count == 1} checked="checked"{/if} autocomplete="off"/>
<label for="addressesAreEquals">{l s='Use the delivery address as the billing address.'}</label>
</p>
 
<p id="address_invoice_form" class="select" {if $cart->id_address_invoice == $cart->id_address_delivery}style="display: none;"{/if}>
 
{if $addresses|@count > 1}
<label for="id_address_invoice" class="strong">{l s='Choose a billing address:'}</label>
<select name="id_address_invoice" id="id_address_invoice" class="address_select" onchange="updateAddressesDisplay();{if $opc}updateAddressSelection();{/if}">
{section loop=$addresses step=-1 name=address}
<option value="{$addresses[address].id_address|intval}" {if $addresses[address].id_address == $cart->id_address_invoice && $cart->id_address_delivery != $cart->id_address_invoice}selected="selected"{/if}>{$addresses[address].alias|escape:'htmlall':'UTF-8'}</option>
{/section}
</select>
{else}
<a style="margin-left: 221px;" href="{$link->getPageLink('address', true, NULL, "back={$back_order_page}?step=1&select_address=1{if $back}&mod={$back}{/if}")|escape:'html'}" title="{l s='Add'}" class="button_large">{l s='Add a new address'}</a>
{/if}
</p>
<div class="clearfix">
<ul class="address item" id="address_delivery" {if $cart->isVirtualCart()}style="display:none;"{/if}>
</ul>
<ul class="address alternate_item {if $cart->isVirtualCart()}full_width{/if}" id="address_invoice">
</ul>
</div>
<p class="address_add submit">
<a href="{$link->getPageLink('address', true, NULL, "back={$back_order_page}?step=1{if $back}&mod={$back}{/if}")|escape:'html'}" title="{l s='Add'}" class="button_large">{l s='Add a new address'}</a>
</p>
{if !$opc}
<div id="ordermsg" class="clearfix">
<p class="txt">{l s='If you would like to add a comment about your order, please write it in the field below.'}</p>
<p class="textarea"><textarea cols="60" rows="3" name="message">{if isset($oldMessage)}{$oldMessage}{/if}</textarea></p>
</div>
{/if}
</div>
{if !$opc}
<p class="cart_navigation submit">
<input type="hidden" class="hidden" name="step" value="2" />
<input type="hidden" name="back" value="{$back}" />
<a href="{$link->getPageLink($back_order_page, true, NULL, "step=0{if $back}&back={$back}{/if}")|escape:'html'}" title="{l s='Previous'}" class="button">« {l s='Previous'}</a>
<input type="submit" name="processAddress" value="{l s='Next'} »" class="exclusive" />
</p>
</form>
{else}
</div>
{/if}
Link to comment
Share on other sites

Estimado Sergio, muchas gracias por responder. Ya lo solucioné

 

Las líneas 88 y 93 las cambié por lo siguiente:

 

Antes:

88 {if !$smarty.foreach.inv_loop.first},{/if}{$field_name|json_encode}
93 {if !$smarty.foreach.inv_loop.first},{/if}{$pattern_name|json_encode}:{$field_name|json_encode}
 
Después:
{if !$smarty.foreach.inv_loop.first},{/if}"{$field_name}"
{if !$smarty.foreach.inv_loop.first},{/if}"{$pattern_name}":"{$field_name}"
 
Saludos,
 
Keylen Jaimes
Link to comment
Share on other sites

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