Jump to content

Dodanie bloku promocji/bestsellerów do lewej kolumny w widoku kategorii


Fruitcake_Gary

Recommended Posts

Cześć

 

Tak jak w tytule. Chciałbym dodać osobny szablon dla produktów do lewej kolumny, tej z filtrami, produkty na promocji.

Edytowałem ps_specials.php dodając 

public function hookDisplayLeftColumn($params)
    {
        $this->_clearCache('*');
		$this->templateFile = 'module:ps_specials/views/templates/hook/ps_specials_left.tpl';
    }

public function install()
    {
        $this->_clearCache('*');

        Configuration::updateValue('BLOCKSPECIALS_SPECIALS_NBR', 8);

        return parent::install()
            && $this->registerHook('actionProductAdd')
            && $this->registerHook('actionProductUpdate')
            && $this->registerHook('actionProductDelete')
            && $this->registerHook('actionObjectSpecificPriceCoreDeleteAfter')
            && $this->registerHook('actionObjectSpecificPriceCoreAddAfter')
            && $this->registerHook('actionObjectSpecificPriceCoreUpdateAfter')
            && $this->registerHook('displayHome')
            && $this->registerHook('hookDisplayLeftColumn');
    }

Jednak to nic nie dało, Próbowałem też edytować w panelu admina zaczepy, ale nadal nic

ekran.png

Link to comment
Share on other sites

@endriu107

Dzięki za zainteresowanie się tematem

Wprowadziłem poprawki, zresetowałem moduł - odinstalowałem i zainstalowałem ponownie, jednak nadal się nie pojawia dodatkowo po lewej stronie na stronie z kategoriami

left.thumb.png.cf55edaed4f08d3aa44f9f5ceb898df6.png

 

Jednak nadal nie ma tych elementów po lewej stronie. Trzeba coś dodać to do któregoś z tych plików .tpl?

Zrzutekranu2024-09-04194337.png.7ca522113f846231a3c0eb4831e22b0a.png

Link to comment
Share on other sites

Masz na myśli tę funkcję?
 

public function hookDisplayLeftColumn($params)
    {
        $this->_clearCache('*');
//        $this->templateFile = 'module:ps_specials/views/templates/hook/ps_specials_left.tpl';
    }

Nie korzysta ona z tego samego renderWidget co pozostałe szablony które są ustawione w 

class Ps_Specials extends Module implements WidgetInterface
{
    private $templateFile;

    public function __construct()
    {
        $this->name = 'ps_specials';
        $this->tab = 'front_office_features';
        $this->author = 'PrestaShop';
        $this->version = '1.0.2';
        $this->need_instance = 0;

        $this->ps_versions_compliancy = [
            'min' => '1.7.0.0',
            'max' => _PS_VERSION_,
        ];

        $this->bootstrap = true;
        parent::__construct();

        $this->displayName = $this->trans('Specials block', [], 'Modules.Specials.Admin');
        $this->description = $this->trans('Provide information on your special offers in a specific block displayed on your homepage.', [], 'Modules.Specials.Admin');

        $this->templateFile = 'module:ps_specials/views/templates/hook/ps_specials.tpl';
    }
...

 

Link to comment
Share on other sites

Twoja funkcja hookDisplayLeftColumn praktycznie nic nie robi, jedynie czyści cache i przypisuje do zmiennej $this->templateFile ścieżkę do szablonu. To za mało, żeby wyświetlić produkty.

Spróbuj funkcję hookDisplayLeftColumn zdefiniować w ten sposób:
 

public function hookDisplayLeftColumn($params)
{
    $templateFile = 'module:ps_specials/views/templates/hook/ps_specials_left.tpl'; // Twój szablon dla lewej kolumny

    if (!$this->isCached($templateFile, $this->getCacheId('ps_specials_left'))) {

        $variables = $this->getWidgetVariables(null, []);
        if (empty($variables)) {
          return false;
        }
        $this->smarty->assign($variables);
    }
    return $this->fetch($templateFile, $this->getCacheId('ps_specials_left'));
}

Nie testowałem, nie wiem czy poprawnie to zadziała, sprawdź.

@endriu107 dobrze to opisał


 

Link to comment
Share on other sites

@atomek i @endriu107 Zadziałało. Dziękuję za pomoc i wytłumaczenie powodu dlaczego nic się nie wyświetlało :)

 

P.S. Pracowaliście kiedyś z CRON jobami w prestashop w customowych modułach? Takich które wykonywałyby się samoczynnie po zainstalowaniu modułu do sklepu? Mam napisany jeden moduł, który potrzebuje takiego mechanizmu, w zamian mógłbym się nim podzielić

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...