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 ekranu w Samsung A30s SM-A307

    ByTadeusz 2021-06-06

    Samsungi to akurat lubię naprawiać. Zamawiam wyłącznie oryginalne części które pasują i działają idealnie. Poniżej na zdjęciu Samsung Galaxy A30s o oznaczeniu SM-A307

    Read More Wymiana ekranu w Samsung A30s SM-A307Continue

    serwis

    Organizacje traktują priorytetowo kwestię zgodności z przepisami w zakresie oceny ryzyka

    ByTadeusz 2018-07-07

    Rok 2018 wydaje się być rokiem dostosowywania przepisów, zagrażając tym samym wszelkim inicjatywom i projektom IT. Niezależnie od tego, czy chodzi o standard bezpieczeństwa danych kart płatniczych (PCI DSS), PSD2 sektora bankowego (dyrektywa w sprawie rewizji usług płatniczych), NIST dla agencji federalnych czy unijny menedżer ds. Globalnego zarządzania danymi (RODO), organizacje na całym świecie borykają…

    Read More Organizacje traktują priorytetowo kwestię zgodności z przepisami w zakresie oceny ryzykaContinue

    serwis

    Udostępnianie internetu ze Smartfona na router z DD-WRT

    ByTadeusz 2023-01-01

    Stało się! Pech to pech! Padł Internet, a potrzebuję „zasilić” wiele usług / urządzeń w domu Internetem. Niby Smartfon potrafi zasilić się sam, gorzej jest w przypadku telewizora, komputera, i innych – nie posiadających łączności mobilnej (lub nawet WiFi).

    Read More Udostępnianie internetu ze Smartfona na router z DD-WRTContinue

    serwis

    Synchronizacja / backup plików na własny serwer FTP

    ByTadeusz 2017-06-19

    W czasach gdy zagrożenie programami szyfrującymi (ransomware) jest wysokie, warto wykonywać kopię bezpieczeństwa. Kopię najlepiej robić na nośniki, które są odizolowane od naszego komputera lub serwera.

    Read More Synchronizacja / backup plików na własny serwer FTPContinue

    serwis

    Naprawa Netbooka Overmax OV-ML-01

    ByTadeusz 2012-01-16

    Do naszego serwisu trafił Netbook Overmax OV-ML-01 w którym to nie uruchamiał się system operacyjny. Jak widać na załączonym filmie, po włączeniu urządzenia wyświetliło się logo producenta, następnie pojawiło się logo systemu Linux a na koniec ukazał się napis ANDROID… W dalszej kolejności system Android powinien się załadować i uruchomić, w tym przypadku widać było…

    Read More Naprawa Netbooka Overmax OV-ML-01Continue

    serwis

    Wieża Blaupunkt MS30BT – urządzenie zaprojektowane by się zepsuć

    ByTadeusz 2022-09-26

    Naprawa złamanej płyty głównej w wieży Blaupunkt MS30BT

    Read More Wieża Blaupunkt MS30BT – urządzenie zaprojektowane by się zepsućContinue

    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 wyświetlacz xbox 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