[email protected] Posted September 5, 2017 Share Posted September 5, 2017 Hi, In my shop i have sometimes a fatal error from Smarty. The error is displayed randomly - on the product and category pages. After refreshing pages all works. I trying set another cache settings in perfomance tab, but it doesnt work. Debug mode, disabling modules not belonging to PrestaShop, disabling overriding - doesnt work. Error in category: Fatal error: Uncaught Error: Cannot use object of type Smarty_Custom_Template as array in .../prestashop/cache/smarty/compile/[...]/[...].file.pagination.tpl.php:140 Stack trace: #0 .../prestashop/tools/smarty/sysplugins/smarty_internal_templatebase.php(188): content_59ae7b8c04b4a0_90112957(Object(Smarty_Custom_Template)) #1 .../prestashop/classes/SmartyCustom.php(317): Smarty_Internal_TemplateBase->fetch(Object(Smarty_Custom_Template), NULL, NULL, NULL, false, false, true) #2 .../prestashop/tools/smarty/sysplugins/smarty_internal_template.php(303): Smarty_Custom_Template->fetch(NULL, NULL, NULL, NULL, false, false, true) #3 .../prestashop/cache/smarty/compile/5f/3c/7a/5f3c7af6601aa5526020ec6a7c0090a24da83130.file.category.tpl.php(133): Smarty_Internal_Template->getSubTemplate('/home/www/http/...', NULL, NULL, 0, NULL, Array, 0) #4 .../prestashop/to in /home/www/http/public_html/prestashop/cache/smarty/compile/db/57/f9/db57f96e813fa6210f237df69bf32ad812c296b2.file.pagination.tpl.php on line 140 file.pagination.tpl.php:140: <li class="truncate"> <span> <span>...</span> </span> </li> <?php }?> <?php if (isset($_smarty_tpl->tpl_vars['smarty']->value['section']['pagination'])) unset($_smarty_tpl->tpl_vars['smarty']->value['section']['pagination']); $_smarty_tpl->tpl_vars['smarty']->value['section']['pagination']['name'] = 'pagination'; $_smarty_tpl->tpl_vars['smarty']->value['section']['pagination']['start'] = (int) $_smarty_tpl->tpl_vars['start']->value; $_smarty_tpl->tpl_vars['smarty']->value['section']['pagination']['loop'] = is_array($_loop=$_smarty_tpl->tpl_vars['stop']->value+1) ? count($_loop) : max(0, (int) $_loop); unset($_loop); $_smarty_tpl->tpl_vars['smarty']->value['section']['pagination']['step'] = ((int) 1) == 0 ? 1 : (int) 1; $_smarty_tpl->tpl_vars['smarty']->value['section']['pagination']['show'] = true; THEME/pagination.tpl: <li class="truncate"> <span> <span>...</span> </span> </li> {/if} {section name=pagination start=$start loop=$stop+1 step=1} {if $p == $smarty.section.pagination.index} <li class="active current"> <span> <span>{$p|escape:'html':'UTF-8'}</span> </span> Similar error is in product page - but error is in foreach <ul id="thumbs_list_frame"> {if isset($images)} {foreach from=$images item=image name=thumbnails} <!-- here in smarty->value --> {assign var=imageIds value="`$product->id`-`$image.id_image`"} {if !empty($image.legend)} {assign var=imageTitle value=$image.legend|escape:'html':'UTF-8'} Any idea? Link to comment Share on other sites More sharing options...
Scully Posted September 5, 2017 Share Posted September 5, 2017 I read from similar problems with more than one theme installed. Is this the case with your installation? If yes, try do delete the not-used theme (backup or export prior to deletion). Link to comment Share on other sites More sharing options...
[email protected] Posted September 6, 2017 Author Share Posted September 6, 2017 Scully, thanks for answer, but this isnt it. I have only default-boostrap - i know, i should copy theme, but i dont updating PS to newest version. Link to comment Share on other sites More sharing options...
Scully Posted September 6, 2017 Share Posted September 6, 2017 (edited) You didn't mention your ps version? Maybe you can try this pagination from a 1.6.1.13 installation: {* * 2007-2016 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-2016 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 isset($no_follow) AND $no_follow} {assign var='no_follow_text' value=' rel="nofollow"'} {else} {assign var='no_follow_text' value=''} {/if} {if isset($p) AND $p} {if isset($smarty.get.id_category) && $smarty.get.id_category && isset($category)} {if !isset($current_url)} {assign var='requestPage' value=$link->getPaginationLink('category', $category, false, false, true, false)} {else} {assign var='requestPage' value=$current_url} {/if} {assign var='requestNb' value=$link->getPaginationLink('category', $category, true, false, false, true)} {elseif isset($smarty.get.id_manufacturer) && $smarty.get.id_manufacturer && isset($manufacturer)} {assign var='requestPage' value=$link->getPaginationLink('manufacturer', $manufacturer, false, false, true, false)} {assign var='requestNb' value=$link->getPaginationLink('manufacturer', $manufacturer, true, false, false, true)} {elseif isset($smarty.get.id_supplier) && $smarty.get.id_supplier && isset($supplier)} {assign var='requestPage' value=$link->getPaginationLink('supplier', $supplier, false, false, true, false)} {assign var='requestNb' value=$link->getPaginationLink('supplier', $supplier, true, false, false, true)} {else} {if !isset($current_url)} {assign var='requestPage' value=$link->getPaginationLink(false, false, false, false, true, false)} {else} {assign var='requestPage' value=$current_url} {/if} {assign var='requestNb' value=$link->getPaginationLink(false, false, true, false, false, true)} {/if} <!-- Pagination --> <div id="pagination{if isset($paginationId)}_{$paginationId}{/if}" class="pagination clearfix"> {if $nb_products > $products_per_page && $start!=$stop} <form class="showall" action="{if !is_array($requestNb)}{$requestNb}{else}{$requestNb.requestUrl}{/if}" method="get"> <div> {if isset($search_query) AND $search_query} <input type="hidden" name="search_query" value="{$search_query|escape:'html':'UTF-8'}" /> {/if} {if isset($tag) AND $tag AND !is_array($tag)} <input type="hidden" name="tag" value="{$tag|escape:'html':'UTF-8'}" /> {/if} <button type="submit" class="btn btn-default button exclusive-medium"> <span>{l s='Show all'}</span> </button> {if is_array($requestNb)} {foreach from=$requestNb item=requestValue key=requestKey} {if $requestKey != 'requestUrl' && $requestKey != 'p'} <input type="hidden" name="{$requestKey|escape:'html':'UTF-8'}" value="{$requestValue|escape:'html':'UTF-8'}" /> {/if} {/foreach} {/if} <input name="n" id="nb_item{if isset($paginationId)}_{$paginationId}{/if}" class="hidden" value="{$nb_products}" /> </div> </form> {/if} {if $start!=$stop} <ul class="pagination"> {if $p != 1} {assign var='p_previous' value=$p-1} <li id="pagination_previous{if isset($paginationId)}_{$paginationId}{/if}" class="pagination_previous"> <a{$no_follow_text} href="{$link->goPage($requestPage, $p_previous)}" rel="prev"> <i class="icon-chevron-left"></i> <b>{l s='Previous'}</b> </a> </li> {else} <li id="pagination_previous{if isset($paginationId)}_{$paginationId}{/if}" class="disabled pagination_previous"> <span> <i class="icon-chevron-left"></i> <b>{l s='Previous'}</b> </span> </li> {/if} {if $start==3} <li> <a{$no_follow_text} href="{$link->goPage($requestPage, 1)}"> <span>1</span> </a> </li> <li> <a{$no_follow_text} href="{$link->goPage($requestPage, 2)}"> <span>2</span> </a> </li> {/if} {if $start==2} <li> <a{$no_follow_text} href="{$link->goPage($requestPage, 1)}"> <span>1</span> </a> </li> {/if} {if $start>3} <li> <a{$no_follow_text} href="{$link->goPage($requestPage, 1)}"> <span>1</span> </a> </li> <li class="truncate"> <span> <span>...</span> </span> </li> {/if} {section name=pagination start=$start loop=$stop+1 step=1} {if $p == $smarty.section.pagination.index} <li class="active current"> <span> <span>{$p|escape:'html':'UTF-8'}</span> </span> </li> {else} <li> <a{$no_follow_text} href="{$link->goPage($requestPage, $smarty.section.pagination.index)}"> <span>{$smarty.section.pagination.index|escape:'html':'UTF-8'}</span> </a> </li> {/if} {/section} {if $pages_nb>$stop+2} <li class="truncate"> <span> <span>...</span> </span> </li> <li> <a{$no_follow_text} href="{$link->goPage($requestPage, $pages_nb)}"> <span>{$pages_nb|intval}</span> </a> </li> {/if} {if $pages_nb==$stop+1} <li> <a{$no_follow_text} href="{$link->goPage($requestPage, $pages_nb)}"> <span>{$pages_nb|intval}</span> </a> </li> {/if} {if $pages_nb==$stop+2} <li> <a{$no_follow_text} href="{$link->goPage($requestPage, $pages_nb-1)}"> <span>{$pages_nb-1|intval}</span> </a> </li> <li> <a{$no_follow_text} href="{$link->goPage($requestPage, $pages_nb)}"> <span>{$pages_nb|intval}</span> </a> </li> {/if} {if $pages_nb > 1 AND $p != $pages_nb} {assign var='p_next' value=$p+1} <li id="pagination_next{if isset($paginationId)}_{$paginationId}{/if}" class="pagination_next"> <a{$no_follow_text} href="{$link->goPage($requestPage, $p_next)}" rel="next"> <b>{l s='Next'}</b> <i class="icon-chevron-right"></i> </a> </li> {else} <li id="pagination_next{if isset($paginationId)}_{$paginationId}{/if}" class="disabled pagination_next"> <span> <b>{l s='Next'}</b> <i class="icon-chevron-right"></i> </span> </li> {/if} </ul> {/if} </div> <div class="product-count"> {if ($n*$p) < $nb_products } {assign var='productShowing' value=$n*$p} {else} {assign var='productShowing' value=($n*$p-$nb_products-$n*$p)*-1} {/if} {if $p==1} {assign var='productShowingStart' value=1} {else} {assign var='productShowingStart' value=$n*$p-$n+1} {/if} {if $nb_products > 1} {l s='Showing %1$d - %2$d of %3$d items' sprintf=[$productShowingStart, $productShowing, $nb_products]} {else} {l s='Showing %1$d - %2$d of 1 item' sprintf=[$productShowingStart, $productShowing]} {/if} </div> <!-- /Pagination --> {/if} Edited September 6, 2017 by Scully (see edit history) Link to comment Share on other sites More sharing options...
[email protected] Posted September 6, 2017 Author Share Posted September 6, 2017 Thanks a lot for Your answer. I try it, but unfortunately dosen't work. Maybe do You have other ideas ? Link to comment Share on other sites More sharing options...
Scully Posted September 6, 2017 Share Posted September 6, 2017 - Check you PHP version is compatible with your Prestashop version. - Upgrade prestashop to 1.6.1.13 or 1.6.1.15 (latest 1.6. is not recommended) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now