JaroslavH Posted March 18, 2014 Share Posted March 18, 2014 Hi, I want add more products in specials module. I want to use this procedure: http://nemops.com/product-list-prestashop-specials-module/#.Uyf5zH9-Yma If I proceed in accordance with this procedure, so I don't see none product. Quote No specials at this time Products is disappear as soon as I rename the variable: $special => $specials I use PrestaShop 1.5.6.2 Thanks for the advice. Link to comment Share on other sites More sharing options...
NemoPS Posted March 19, 2014 Share Posted March 19, 2014 Of course the variable has to be named the same as you called it from the php script Link to comment Share on other sites More sharing options...
JaroslavH Posted March 19, 2014 Author Share Posted March 19, 2014 This me didn't help :-) I'll try to explain it to better. I have this code. Everything works. blockspecials.php public function hookRightColumn($params) { if (Configuration::get('PS_CATALOG_MODE')) return; // We need to create multiple caches because the products are sorted randomly $random = date('Ymd').'|'.round(rand(1, max(Configuration::get('BLOCKSPECIALS_NB_CACHES'), 1))); if (!Configuration::get('BLOCKSPECIALS_NB_CACHES') || !$this->isCached('blockspecials.tpl', $this->getCacheId('blockspecials|'.$random))) { if (!($special = Product::getRandomSpecial((int)$params['cookie']->id_lang)) && !Configuration::get('PS_BLOCK_SPECIALS_DISPLAY')) return; $this->smarty->assign(array( 'special' => $special, 'priceWithoutReduction_tax_excl' => Tools::ps_round($special['price_without_reduction'], 2), 'mediumSize' => Image::getSize(ImageType::getFormatedName('medium')), )); } return $this->display(__FILE__, 'blockspecials.tpl', (Configuration::get('BLOCKSPECIALS_NB_CACHES') ? $this->getCacheId('blockspecials|'.$random) : null)); } blockspecials.tpl <!-- MODULE Block specials --> <div id="special_block_right" class="block products_block exclusive blockspecials"> <h4 class="title_block"><a href="{$link->getPageLink('prices-drop')|escape:'html'}" title="{l s='Specials' mod='blockspecials'}">{l s='Specials' mod='blockspecials'}</a></h4> <div class="block_content"> {if $special} <ul class="products clearfix"> <li class="product_image"> <a href="{$special.link}"><img src="{$link->getImageLink($special.link_rewrite, $special.id_image, 'medium_default')|escape:'html'}" alt="{$special.legend|escape:html:'UTF-8'}" height="{$mediumSize.height}" width="{$mediumSize.width}" title="{$special.name|escape:html:'UTF-8'}" /></a> </li> <li> {if !$PS_CATALOG_MODE} {if $special.specific_prices} {assign var='specific_prices' value=$special.specific_prices} {if $specific_prices.reduction_type == 'percentage' && ($specific_prices.from == $specific_prices.to OR ($smarty.now|date_format:'%Y-%m-%d %H:%M:%S' <= $specific_prices.to && $smarty.now|date_format:'%Y-%m-%d %H:%M:%S' >= $specific_prices.from))} <span class="reduction"><span>-{$specific_prices.reduction*100|floatval}%</span></span> {/if} {/if} {/if} <h5 class="s_title_block"><a href="{$special.link}" title="{$special.name|escape:html:'UTF-8'}">{$special.name|escape:html:'UTF-8'}</a></h5> {if !$PS_CATALOG_MODE} <span class="price-discount">{if !$priceDisplay}{displayWtPrice p=$special.price_without_reduction}{else}{displayWtPrice p=$priceWithoutReduction_tax_excl}{/if}</span> <span class="price">{if !$priceDisplay}{displayWtPrice p=$special.price}{else}{displayWtPrice p=$special.price_tax_exc}{/if}</span> {/if} </li> </ul> <p> <a href="{$link->getPageLink('prices-drop')|escape:'html'}" title="{l s='All specials' mod='blockspecials'}">» {l s='All specials' mod='blockspecials'}</a> </p> {else} <p>{l s='No product specials are available at this time.' mod='blockspecials'}</p> {/if} </div> </div> <!-- /MODULE Block specials --> If I modify the code like this, I get this message: No product specials are available at this time. blockspecials.php public function hookRightColumn($params) { if (Configuration::get('PS_CATALOG_MODE')) return; // We need to create multiple caches because the products are sorted randomly $random = date('Ymd').'|'.round(rand(1, max(Configuration::get('BLOCKSPECIALS_NB_CACHES'), 1))); if (!Configuration::get('BLOCKSPECIALS_NB_CACHES') || !$this->isCached('blockspecials.tpl', $this->getCacheId('blockspecials|'.$random))) { if (!($specials = Product::getRandomSpecial((int)$params['cookie']->id_lang, 0, 5)) && !Configuration::get('PS_BLOCK_SPECIALS_DISPLAY')) return; $this->smarty->assign(array( 'specials' => $specials, 'mediumSize' => Image::getSize(ImageType::getFormatedName('medium')), )); } blockspecials.tpl <!-- MODULE Block specials --> <div id="special_block_right" class="block products_block exclusive blockspecials"> <h4 class="title_block"><a href="{$link->getPageLink('prices-drop')|escape:'html'}" title="{l s='Specials' mod='blockspecials'}">{l s='Specials' mod='blockspecials'}</a></h4> <div class="block_content"> {if $special} <ul class="products clearfix"> {foreach from=$specials item=special} <li> <a href="{$special.link}"><img src="{$link->getImageLink($special.link_rewrite, $special.id_image, 'medium_default')|escape:'html'}" alt="{$special.legend|escape:html:'UTF-8'}" height="{$mediumSize.height}" width="{$mediumSize.width}" title="{$special.name|escape:html:'UTF-8'}" /></a> {if !$PS_CATALOG_MODE} {if $special.specific_prices} {assign var='specific_prices' value=$special.specific_prices} {if $specific_prices.reduction_type == 'percentage' && ($specific_prices.from == $specific_prices.to OR ($smarty.now|date_format:'%Y-%m-%d %H:%M:%S' <= $specific_prices.to && $smarty.now|date_format:'%Y-%m-%d %H:%M:%S' >= $specific_prices.from))} <span class="reduction"><span>-{$specific_prices.reduction*100|floatval}%</span></span> {/if} {/if} {/if} <h5 class="s_title_block"><a href="{$special.link}" title="{$special.name|escape:html:'UTF-8'}">{$special.name|escape:html:'UTF-8'}</a></h5> {if !$PS_CATALOG_MODE} <span class="price-discount">{if !$priceDisplay}{displayWtPrice p=$special.price_without_reduction}{else}{displayWtPrice p=$priceWithoutReduction_tax_excl}{/if}</span> <span class="price">{if !$priceDisplay}{displayWtPrice p=$special.price}{else}{displayWtPrice p=$special.price_tax_exc}{/if}</span> {/if} </li> {/foreach} </ul> <p> <a href="{$link->getPageLink('prices-drop')|escape:'html'}" title="{l s='All specials' mod='blockspecials'}">» {l s='All specials' mod='blockspecials'}</a> </p> {else} <p>{l s='No product specials are available at this time.' mod='blockspecials'}</p> {/if} </div> </div> <!-- /MODULE Block specials --> Link to comment Share on other sites More sharing options...
NemoPS Posted March 19, 2014 Share Posted March 19, 2014 Of course, $special is not assigned anymore, it's $specials Link to comment Share on other sites More sharing options...
JaroslavH Posted March 19, 2014 Author Share Posted March 19, 2014 I still don't understand, what do I fix it? I was renamed $special -> $specials according to instructions. Link to comment Share on other sites More sharing options...
NemoPS Posted March 19, 2014 Share Posted March 19, 2014 In the tpl it's still called special {if $special} the tpl must be modified according to the tutorial as well Link to comment Share on other sites More sharing options...
JaroslavH Posted March 19, 2014 Author Share Posted March 19, 2014 Great! Thank you very much. This is me overlooked the. Link to comment Share on other sites More sharing options...
JaroslavH Posted March 20, 2014 Author Share Posted March 20, 2014 Hi, I found mistake. This code only works with a percentage discount. If I have a specificPrice type 'amount', will not appear amount with bg_reduction.png Someone advise me how I should create the conditions for Amount? Thanks Link to comment Share on other sites More sharing options...
NemoPS Posted March 21, 2014 Share Posted March 21, 2014 You must add a block under $specific_prices.reduction_type == 'percentage' Stating like $specific_prices.reduction_type == 'amount' Link to comment Share on other sites More sharing options...
Recommended Posts