AZADA_M Posted May 18, 2017 Share Posted May 18, 2017 witam prosze o informacje jak zrobić by wyswietlało się więcej niż 1 produkt w lewej kolumnie ?? http://sklep.bigbio.pl/1947-peelingi-scruby Link to comment Share on other sites More sharing options...
amanet Posted May 18, 2017 Share Posted May 18, 2017 (edited) Witam, Aby osiągnąć zamierzony efekt należałoby dokonać zmian w 2 miejscach modułu blockspecials. 1) W lokalizacji /modules/blockspecials/blockspecials.php zamieniasz: 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)); } na 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::getPricesDrop((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')), )); } return $this->display(__FILE__, 'blockspecials.tpl', $this->getCacheId('blockspecials|'.$random)); } Następnie szukasz lokalizacji w szablonie: /themes/nazwa-szablonu/modules/blockspecials/blockspecials.tpl Zmieniasz: {if $special} <ul> <li class="clearfix"> <a class="products-block-image" href="{$special.link|escape:'html':'UTF-8'}"> <img class="replace-2x img-responsive" src="{$link->getImageLink($special.link_rewrite, $special.id_image, 'small_default')|escape:'html':'UTF-8'}" alt="{$special.legend|escape:'html':'UTF-8'}" title="{$special.name|escape:'html':'UTF-8'}" /> </a> <div class="product-content"> <h5> <a class="product-name" href="{$special.link|escape:'html':'UTF-8'}" title="{$special.name|escape:'html':'UTF-8'}"> {$special.name|escape:'html':'UTF-8'} </a> </h5> {if isset($special.description_short) && $special.description_short} <p class="product-description"> {$special.description_short|strip_tags:'UTF-8'|truncate:40} </p> {/if} <div class="price-box"> {if !$PS_CATALOG_MODE} <span class="price special-price"> {if !$priceDisplay} {displayWtPrice p=$special.price}{else}{displayWtPrice p=$special.price_tax_exc} {/if} </span> {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="price-percent-reduction">-{$specific_prices.reduction*100|floatval}%</span> {/if} {/if} <span class="old-price"> {if !$priceDisplay} {displayWtPrice p=$special.price_without_reduction}{else}{displayWtPrice p=$priceWithoutReduction_tax_excl} {/if} </span> {hook h="displayProductPriceBlock" product=$special type="price"} {/if} </div> </div> </li> </ul> <div> <a class="btn btn-default button button-small" href="{$link->getPageLink('prices-drop')|escape:'html':'UTF-8'}" title="{l s='All specials' mod='blockspecials'}"> <span>{l s='All specials' mod='blockspecials'}<i class="icon-chevron-right right"></i></span> </a> </div> {else} <div>{l s='No special products at this time.' mod='blockspecials'}</div> {/if} na {if $specials} <ul class="products clearfix"> {foreach from=$specials item=special} <li> <a href="{$special.link|escape:'html'}"><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} <p class="s_title_block"><a href="{$special.link|escape:'html'}" title="{$special.name|escape:html:'UTF-8'}">{$special.name|escape:html:'UTF-8'}</a></p> {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 specials at this time' mod='blockspecials'}</p> {/if} Pozostaje całość ostylować wedle uznania a w module blockspecials od strony panelu admina zdefiniować ilość produktów do wyświetlenia. Edited May 18, 2017 by amanet (see edit history) Link to comment Share on other sites More sharing options...
AZADA_M Posted December 9, 2017 Author Share Posted December 9, 2017 Dzięki za odpowiedź jednak po zmianie tego godu rozjeżdża mi graficznie wyglad tego modułu. Było robione parę przeróbek dlatego sklejam kody o których piszesz i jak mozesz to odnieś się do tego CHCĘ BY BYŁY WYŚWIETLANE 3 PRODUKTY NAJLEPIEJ JAK BY SIĘ ZMIANIAŁY AUTOMATYCZNIE CO KILKA SEKUND blockspecials.tpl theme/modules/blockspecials/ {* * 2007-2015 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 license@prestashop.com 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 <contact@prestashop.com> * @copyright 2007-2015 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} <!-- MODULE Block specials --> <div id="special_block_right" class="block"> <p class="title_block"> <a href="{$link->getPageLink('prices-drop')|escape:'html':'UTF-8'}" title="{l s='Specials' mod='blockspecials'}"> {l s='Specials' mod='blockspecials'} </a> </p> <div class="block_content products-block"> {if $special} <ul> <li class="clearfix"> <CENTER><a href="{$special.link|escape:'html':'UTF-8'}"> <img class="replace-2x img-responsive" src="{$link->getImageLink($special.link_rewrite, $special.id_image, 'small_default')|escape:'html':'UTF-8'}" alt="{$special.legend|escape:'html':'UTF-8'}" title="{$special.name|escape:'html':'UTF-8'}" /> </a> <div class="product-content"><br> <h5> <a class="product-name" href="{$special.link|escape:'html':'UTF-8'}" title="{$special.name|escape:'html':'UTF-8'}"> {$special.name|escape:'html':'UTF-8'} </a> </h5> {*} {if isset($special.description_short) && $special.description_short} <p class="product-description"> {$special.description_short|strip_tags:'UTF-8'|truncate:40} </p> {/if}*} <div class="price-box"> {if !$PS_CATALOG_MODE} <b><class="price product-price"></B> {if !$priceDisplay} {displayWtPrice p=$special.price}{else}{displayWtPrice p=$special.price_tax_exc} {/if} </span> {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="price-percent-reduction">-{$specific_prices.reduction*100|floatval}%</span>*} {/if} {/if} <span class="old-price"> {if !$priceDisplay} {displayWtPrice p=$special.price_without_reduction}{else}{displayWtPrice p=$priceWithoutReduction_tax_excl} {/if} </span> {/if} </div> </div> </li> </ul> <div></CENTER> <a href="{$link->getPageLink('prices-drop')|escape:'html':'UTF-8'}" title="{l s='All specials' mod='blockspecials'}"> <span>{l s='POKAŻ WSZYSTKIE PROMOCJE ' mod='blockspecials'}<i class="icon-chevron-right right"></i></span> </a> </div> {else} <div>{l s='No specials at this time.' mod='blockspecials'}</div> {/if} </div> </div> <!-- /MODULE Block specials --> oraz drugi kod blockspecials.php modul/blockspecils <?php /* * 2007-2014 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-2014 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 (!defined('_PS_VERSION_')) exit; class BlockSpecials extends Module { private $_html = ''; private $_postErrors = array(); private static $cache_specials; public function __construct() { $this->name = 'blockspecials'; $this->tab = 'pricing_promotion'; $this->version = '1.1.6'; $this->author = 'PrestaShop'; $this->need_instance = 0; $this->bootstrap = true; parent::__construct(); $this->displayName = $this->l('Specials block'); $this->description = $this->l('Adds a block displaying your current discounted products.'); $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_); } public function install() { if (!Configuration::get('BLOCKSPECIALS_NB_CACHES')) Configuration::updateValue('BLOCKSPECIALS_NB_CACHES', 20); if (!Configuration::get('BLOCKSPECIALS_SPECIALS_NBR')) Configuration::updateValue('BLOCKSPECIALS_SPECIALS_NBR', 5); $this->_clearCache('*'); $success = parent::install() && $this->registerHook('header') && $this->registerHook('leftColumn') && $this->registerHook('addproduct') && $this->registerHook('updateproduct') && $this->registerHook('deleteproduct') && $this->registerHook('displayHomeTab') && $this->registerHook('displayHomeTabContent'); return $success; } public function uninstall() { $this->_clearCache('*'); return parent::uninstall(); } public function getContent() { $output = ''; if (Tools::isSubmit('submitSpecials')) { Configuration::updateValue('PS_BLOCK_SPECIALS_DISPLAY', (int)Tools::getValue('PS_BLOCK_SPECIALS_DISPLAY')); Configuration::updateValue('BLOCKSPECIALS_NB_CACHES', (int)Tools::getValue('BLOCKSPECIALS_NB_CACHES')); Configuration::updateValue('BLOCKSPECIALS_SPECIALS_NBR', (int)Tools::getValue('BLOCKSPECIALS_SPECIALS_NBR')); $output .= $this->displayConfirmation($this->l('Settings updated')); } return $output.$this->renderForm(); } 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)); } public function hookLeftColumn($params) { return $this->hookRightColumn($params); } public function hookHeader($params) { if (Configuration::get('PS_CATALOG_MODE')) return; $this->context->controller->addCSS(($this->_path).'blockspecials.css', 'all'); } public function hookAddProduct($params) { $this->_clearCache('*'); } public function hookUpdateProduct($params) { $this->_clearCache('*'); } public function hookDeleteProduct($params) { $this->_clearCache('*'); } public function hookDisplayHomeTab($params) { if (Configuration::get('PS_CATALOG_MODE')) return; if (!$this->isCached('tab.tpl', $this->getCacheId('blockspecials-tab'))) BlockSpecials::$cache_specials = Product::getPricesDrop((int)$params['cookie']->id_lang, 0, Configuration::get('BLOCKSPECIALS_SPECIALS_NBR')); if (BlockSpecials::$cache_specials === false) return false; return $this->display(__FILE__, 'tab.tpl', $this->getCacheId('blockspecials-tab')); } public function hookDisplayHomeTabContent($params) { if (Configuration::get('PS_CATALOG_MODE')) return; if (!$this->isCached('blockspecials-home.tpl', $this->getCacheId('blockspecials-home'))) { $this->smarty->assign(array( 'specials' => BlockSpecials::$cache_specials, 'homeSize' => Image::getSize(ImageType::getFormatedName('home')) )); } if (BlockSpecials::$cache_specials === false) return false; return $this->display(__FILE__, 'blockspecials-home.tpl', $this->getCacheId('blockspecials-home')); } public function renderForm() { $fields_form = array( 'form' => array( 'legend' => array( 'title' => $this->l('Settings'), 'icon' => 'icon-cogs' ), 'input' => array( array( 'type' => 'switch', 'label' => $this->l('Always display this block'), 'name' => 'PS_BLOCK_SPECIALS_DISPLAY', 'desc' => $this->l('Show the block even if no products are available.'), 'values' => array( array( 'id' => 'active_on', 'value' => 1, 'label' => $this->l('Enabled') ), array( 'id' => 'active_off', 'value' => 0, 'label' => $this->l('Disabled') ) ), ), array( 'type' => 'text', 'label' => $this->l('Number of cached files'), 'name' => 'BLOCKSPECIALS_NB_CACHES', 'class' => 'fixed-width-xs', 'desc' => $this->l('Specials are displayed randomly on the front-end, but since it takes a lot of ressources, it is better to cache the results. The cache is reset daily. 0 will disable the cache.'), ), array( 'type' => 'text', 'label' => $this->l('Products to display'), 'name' => 'BLOCKSPECIALS_SPECIALS_NBR', 'class' => 'fixed-width-xs', 'desc' => $this->l('Define the number of products to be displayed in this block on home page.') ) ), 'submit' => array( 'title' => $this->l('Save'), ) ), ); $helper = new HelperForm(); $helper->show_toolbar = false; $helper->table = $this->table; $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); $helper->default_form_language = $lang->id; $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; $helper->identifier = $this->identifier; $helper->submit_action = 'submitSpecials'; $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name; $helper->token = Tools::getAdminTokenLite('AdminModules'); $helper->tpl_vars = array( 'fields_value' => $this->getConfigFieldsValues(), 'languages' => $this->context->controller->getLanguages(), 'id_language' => $this->context->language->id ); return $helper->generateForm(array($fields_form)); } public function getConfigFieldsValues() { return array( 'PS_BLOCK_SPECIALS_DISPLAY' => Tools::getValue('PS_BLOCK_SPECIALS_DISPLAY', Configuration::get('PS_BLOCK_SPECIALS_DISPLAY')), 'BLOCKSPECIALS_NB_CACHES' => Tools::getValue('BLOCKSPECIALS_NB_CACHES', Configuration::get('BLOCKSPECIALS_NB_CACHES')), 'BLOCKSPECIALS_SPECIALS_NBR' => Tools::getValue('BLOCKSPECIALS_SPECIALS_NBR', Configuration::get('BLOCKSPECIALS_SPECIALS_NBR')) ); } protected function getCacheId($name = null) { if ($name === null) $name = 'blockspecials'; return parent::getCacheId($name.'|'.date('Ymd')); } public function _clearCache($template, $cache_id = null, $compile_id = null) { parent::_clearCache('blockspecials.tpl'); parent::_clearCache('blockspecials-home.tpl', 'blockspecials-home'); parent::_clearCache('tab.tpl', 'blockspecials-tab'); } } dzieki 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