Skip to content
Account LOGIN / REGISTER
Logo TECH-SAS
888 222 994
Pomoc zdalna
  • Twój koszyk 0
    Koszyk Produktów
    • Twój koszyk jest pusty

      W twoim koszyku nie ma produktów. Dalej, uzupełnić ją fakt, że się wam podoba!

      Rozpocznij Zakupy Już teraz
  • Główna
  • O nas
  • SerwisExpand
    • Telefony i TabletyExpand
      • Wymiana ekranów
      • Usuwanie blokad
    • Konsole i kontroleryExpand
      • Wymiana transmittera
      • Naprawa padów XBOX
      • Naprawa padów Playstation
    • DrukarkiExpand
      • Wymiana pochłaniacza
    • LaptopyExpand
      • Wymiana matrycy
    • InformacjeExpand
      • Zgłoszenie naprawy
      • Status zlecenia
  • Dla firmExpand
    • Comarch ERP OptimaExpand
      • Dysk w chmurze iBard
      • Aktualne wersje
      • Formularz zmiany obsługującego Partnera
    • Insert
  • SklepExpand
    • OprogramowanieExpand
      • Dla domu
      • Do firmy
  • Blog
  • Kontakt
Search
Logo TECH-SAS
Home / serwis / Jak wyświetlić więcej produktów w module Blok Promocji w Prestashop

Jak wyświetlić więcej produktów w module Blok Promocji w Prestashop

Od zlecenia się zaczęło.

Przygotowuję sklep internetowy dla klienta i dostosowuję szablon do jego potrzeb. Jedną z takich potrzeb była możliwość wyświetlenia większej ilości produktów w module „Blok promocji” (blockspecials), który zakotwiczony został w lewej kolumnie. Na początku wyglądało to mniej więcej tak: 

Dodam, że sklep oparty o silnik Prestashop w wersji 1.6 na standardowym szablonie default-bootstrap.

Zaczynamy od modyfikacji klasy modułu

W pliku /modules/blockspecials/blockspecials.php jest taka metoda hookRightColumn wygląda ona mniej więcej tak: 

[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)); }[/php]

Przyglądając się bliżej mamy tutaj fragment kodu który pobiera jeden losowy produkt ze zniżką: 

[php]$special = Product::getRandomSpecial((int)$params[’cookie’]->id_lang)
[/php]

Musimy go nieco zmodyfikować, aby wyświetlił listę produktów objętych promocją

[php] $specials = Product::getPricesDrop((int)$params[’cookie’]->id_lang, 0, 3) [/php]

Skorzystamy tutaj z wbudowanej funkcji getPricesDrop która pobiera listę wszystkich aktywnych produktów z obniżą ceną, oraz stosuje paginację. Ponieważ nie potrzebujemy stronicowania, używamy drugiego parametru, aby poinformować metodę, że chcemy wyświetlić stronę 0 i pobrać np. 3 elementy. Oczywiście, możemy pobrać dowolną liczbę produktów, zmieniając wg. potrzeby ostatni parametr.

Ponieważ zmieniliśmy także nazwę zmiennej na specials, musimy również zmienić następującą część:

[php]$this->smarty->assign(array( 'special’ => $special, 'priceWithoutReduction_tax_excl’ => Tools::ps_round($special[’price_without_reduction’], 2), 'mediumSize’ => Image::getSize(ImageType::getFormatedName(’medium’)), ));[/php]

Zamieniam special na specials i usuwam drugi element tablicy, ponieważ odnosi się do pojedynczej ceny produktu.

[php] $this->smarty->assign(array( 'specials’ => $specials, 'mediumSize’ => Image::getSize(ImageType::getFormatedName(’medium’)), )); [/php]

W tym momencie metoda hookRightColumn powinna wyglądać następująco:

[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::getPricesDrop((int)$params[’cookie’]->id_lang, 0, 3)) && !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’, (Configuration::get(’BLOCKSPECIALS_NB_CACHES’) ? $this->getCacheId(’blockspecials|’.$random) : null )); } [/php]

Czas na dostosowanie wyglądu

Otwieram plik /themes/default-bootstrap/modules/blockspecials/blockspecials.tpl i mam tam taki oto fragment:

[php]
  • {$special.name|escape:’html’:’UTF-8′}
    {if isset($special.description_short) && $special.description_short}

    {$special.description_short|strip_tags:’UTF-8’|truncate:40}

    {/if}
    {if !$PS_CATALOG_MODE} {if !$priceDisplay} {displayWtPrice p=$special.price}{else}{displayWtPrice p=$special.price_tax_exc} {/if} {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))} -{$specific_prices.reduction*100|floatval}% {/if} {/if} {if !$priceDisplay} {displayWtPrice p=$special.price_without_reduction}{else}{displayWtPrice p=$priceWithoutReduction_tax_excl} {/if} {hook h=”displayProductPriceBlock” product=$special type=”price”} {/if}
  • [/php]

    Najpierw usunąłem krótki opis gdyż jest on wg. mnie tam zupełnie niepotrzebny:

    [php] {if isset($special.description_short) && $special.description_short}

    {$special.description_short|strip_tags:’UTF-8’|truncate:40}

    {/if} [/php]

    Następnie skróciłem tytuł do 50 znaków:

    [php] {$special.name|escape:’html’:’UTF-8’|truncate:50} [/php]

    I co najważniejsze dodana została pętla foreach. Mój kod wygląda teraz tak: 

    [php] {foreach from=$specials item=special}
  • {$special.name|escape:’html’:’UTF-8’|truncate:50}
    {if !$PS_CATALOG_MODE} {if !$priceDisplay} {displayWtPrice p=$special.price}{else}{displayWtPrice p=$special.price_tax_exc} {/if} {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))} -{$specific_prices.reduction*100|floatval}% {/if} {/if}
    {if !$priceDisplay} {displayWtPrice p=$special.price_without_reduction}{else}{displayWtPrice p=$priceWithoutReduction_tax_excl} {/if} {hook h=”displayProductPriceBlock” product=$special type=”price”} {/if}
  • {/foreach} [/php]

    Efekt pracy: 

    Nawigacja wpisu

    Previous Previous
    Już jest nowa wersja Comarch ERP Optima 2019.0.1
    NextContinue
    Nowa wersja Comarch ERP Optima 2019.1.1!

    Similar Posts

    serwis

    Wymiana klawiatury w Lenovo Ideapad 300-15IKB

    ByTadeusz 2022-01-15

    Dziś w serwisie laptop Lenovo Ideapad 300-15IKB. Zgłoszony problem przez klienta: Zrywa połączenie internetowe. Laptop został przyjęty, i od razu zauważono że przyciski na klawiaturze po ich naciśnięciu wracają na swoją pozycję jakby w zwolnionym tempie… Proszę Państwa, mamy zalanie.

    Read More Wymiana klawiatury w Lenovo Ideapad 300-15IKBContinue

    serwis

    Naprawa Samsung Galaxy S10e SM-G970

    ByTadeusz 2021-05-21

    W Samsung Galaxy S10e o oznaczeniu SM-G970 wymienialiśmy pęknięte plecki oraz wadliwy buzzer – głośnik, który bzyczał gdy się pogłośniło na max.

    Read More Naprawa Samsung Galaxy S10e SM-G970Continue

    serwis

    Naprawy smartfonów NOKIA Lumia 535

    ByTadeusz 2015-10-15

    Jeżeli w Twoim telefonie uszkodził się ekran dotykowy, lub wyświetlacz LCD pamiętaj, że oferujemy możliwość naprawy takiego ekranu.

    Read More Naprawy smartfonów NOKIA Lumia 535Continue

    serwis

    Naprawa Huawei Mate 10 Lite (RNE-LX1)

    ByTadeusz 2018-06-11

    Naprawa Huawei Mate 10 Lite Do naszego serwisu trafiły dwa uszkodzone smartfony Huawei Mate 10 Lite

    Read More Naprawa Huawei Mate 10 Lite (RNE-LX1)Continue

    serwis

    Wymiana gniazda SIM w Motorola G3 (XT1541)

    ByTadeusz 2018-06-25

    Tym razem w naszym serwisie znalazła się ponownie Motorola Moto G3 o oznaczeniu XT1541. Klient zgłosił, że smartfon nie czyta karty SIM. W celu usunięcia usterki wymieniliśmy całe gniazdo. telefon jest już 100% sprawny. 

    Read More Wymiana gniazda SIM w Motorola G3 (XT1541)Continue

    serwis

    Naprawa Xiaomi Redmi Go M1903C3GG

    ByTadeusz 2020-05-14

    W Xiaomi Redmi Go M1903C3GG naprawialiśmy niedziałający włącznik.

    Read More Naprawa Xiaomi Redmi Go M1903C3GGContinue

    Poszukaj coś…

    Search

    aktualizacja antywirus apple asus bateria Bitdefender blokada blow chłodzenie comarch czyszczenie czyszczenie laptopa doogee dotyk eset FRP galaxy huawei insert instalacja iphone laptop Lenovo LG motorola naprawa nokia optima php prestashop program do faktur programowanie płatnik redmi samsung serwis smartfon sony subiekt szybka Tablet telefon temperatura wyświetlacz xiaomi

    Logo TECH-SAS
    • Moje konto
    • Polityka Prywatności
    • Regulamin sklepu internetowego
    F.U.H. TECH-SAS Tadeusz Sasnal
    Żydów 2a
    32-125 Wawrzeńczyce

    © 2026 TECH-SAS Usługi informatyczne

    Wykonanie strony: wyrób własny

    Scroll to top
    • Główna
    • O nas
    • Serwis
      • Telefony i Tablety
        • Wymiana ekranów
        • Usuwanie blokad
      • Konsole i kontrolery
        • Wymiana transmittera
        • Naprawa padów XBOX
        • Naprawa padów Playstation
      • Drukarki
        • Wymiana pochłaniacza
      • Laptopy
        • Wymiana matrycy
      • Informacje
        • Zgłoszenie naprawy
        • Status zlecenia
    • Dla firm
      • Comarch ERP Optima
        • Dysk w chmurze iBard
        • Aktualne wersje
        • Formularz zmiany obsługującego Partnera
      • Insert
    • Sklep
      • Oprogramowanie
        • Dla domu
        • Do firmy
    • Blog
    • Kontakt