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

    Naprawa Laptopa Lenovo IdeaPad 700-15ISK

    ByTadeusz 2020-07-16

    Projektant płakał jak projektował… ale ze śmiechu bo wiedział że to długo funkcjonować nie będzie.

    Read More Naprawa Laptopa Lenovo IdeaPad 700-15ISKContinue

    serwis

    Wymiana układu Tristar w iPhone 7 (A1778)

    ByTadeusz 2022-01-19

    Naprawa kompletnie martwego iPhone 7 o oznaczeniu A1778, któremu pomogła wybuchająca tania ładowarka z Ali…. wiecie skąd 🙂 Jak to najczęściej w tym wypadku bywa dostało się układowi U4001 zwanemu Tristar. Jest to mierzący 2x2mm jegomość, który ma pod sobą 36 złączy (pinów w postaci kulek cyny) za pomocą których przylutowany jest w technologii BGA…

    Read More Wymiana układu Tristar w iPhone 7 (A1778)Continue

    serwis

    Naprawa Laptopa Acer F5-573

    ByTadeusz 2020-06-06

    Nasz serwis laptopów przyjął ostatnio urządzenie Acer F5-570. Klient zgłosił następujący problem : Laptop się uruchamia i po 2 sekundach sam się wyłącza. Sprawdziliśmy zasilacz, ale on działał bez zarzutu. Natomiast po rozkręceniu i wyjęciu płyty głównej naszym oczom ukazała się miętowa przyczyna…

    Read More Naprawa Laptopa Acer F5-573Continue

    serwis

    Zamiana mikroSubiekta na Subiekta 123 za darmo! 

    ByTadeusz 2022-05-04

    Z okazji 30-lecia Insertu dla użytkowników mikroSubiekta przygotowano niepowtarzalną ofertę, a właściwie urodzinowy prezent. Dzięki specjalnemu kodowi licencji, który w maju otrzyma każdy posiadacz programu, będzie można całkiem za darmo zamienić swój stary system na najnowszą wersję Subiekta 123 na 12 miesięcy.

    Read More Zamiana mikroSubiekta na Subiekta 123 za darmo! Continue

    serwis

    Wymiana Ekranu w Doogee V20

    ByTadeusz 2023-03-22

    Do naszego serwisu Smartfonów wjechał potężny Doogee V20 – ale z uszkodzonym ekranem. Nasze zadanie polegało na wymianie uszkodzonego elementu na nowy W sumie wszystko zakończyło się powodzeniem, i klient może już korzystać z pełni sprawnego urządzenia 🙂 I kolejny Doogee V20 przysłany od klienta. Usterka niepozorna, na pierwszy rzut oka niewidoczna. Ale pod odpowiednim…

    Read More Wymiana Ekranu w Doogee V20Continue

    serwis

    Wymiana ekranu w Hammer Energy 2

    ByTadeusz 2021-10-17

    Klient dostarczył do mnie Hammer Energy II z uszkodzonym ekranem. Ekran został oczywiście wymieniony na nowy. Poniżej kilka zdjęć.

    Read More Wymiana ekranu w Hammer Energy 2Continue

    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