keylen Posted October 17, 2013 Share Posted October 17, 2013 (edited) 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 Edited October 17, 2013 by keylen (see edit history) Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted October 17, 2013 Share Posted October 17, 2013 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?) Link to comment Share on other sites More sharing options...
keylen Posted October 17, 2013 Author Share Posted October 17, 2013 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: * http://opensource.org/licenses/afl-3.0.php * 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 More sharing options...
keylen Posted October 17, 2013 Author Share Posted October 17, 2013 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 More sharing options...
Recommended Posts