Jump to content
  • 0

Problem Z Tworzeniem Nowego Hook-A


tomputer

Question

Witam

Mam problem z dodaniem własnego zaczepu do pliku category.tpl

Chciałbym w pliku z widokiem wszystkich produktów z danej kategorii umieścić pewien moduł.

 

Zrobiłem tak:

Ręcznie dodałem nowy hook do bazy do tabeli ps_hook

INSERT INTO `ps_hook` (`name`, `title`, `description`) VALUES ('displayFooterCategory', 'displayFooterCategory', 'Description');

Następnie w pliku php modułu dopisałem wpis

 
public function install()
{
return parent::install() &&
$this->registerHook('displayHeader') &&
$this->registerHook('displayFooterCategory');
}
 
oraz
 
public function hookDisplayFooterCategory()
{} 
 
Następnie do pliku category.tpl dodałem wpis
{hook h='displayFooterCategory'}
 
Niestety Moduł nie pojawia się w oczekiwanym miejscu. W zapleczu presty tez nie widze tej pozycji.
 
Proszę o podpowiedź gdzie popełniłem błąd.
Edited by tomputer (see edit history)
Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

a gdzie jest podczepiony jakiś widok do tego hooka żeby było cokolwiek widać?

 

W głównej klasie modułu:

public function hookDisplayFooterCategory() 
	{		
		return $this->display(__FILE__, 'TwojWidokModulu.tpl', $this->getCacheId());
	}

 

Link to comment
Share on other sites

  • 0

Wygląda na to że coś robię nie tak nawet po umieszczeniu w pliku .php modułu wpisu jak poniżej, moduł się nie wyświetla

 

public function hookDisplayFooterCategory()
    {        
        
return $this->display(__FILE__, 'category.tpl', $this->getCacheId());
    }

Edited by tomputer (see edit history)
Link to comment
Share on other sites

  • 0

OK opisze jeszcze raz dokładniej o co chodzi.

 

Korzystam z modułu proinstagramcarousel który wyświetla ostanie wpisy z konkretnego kanału na instagramie.

 

Sam moduł skonfigurowany jest poprawnie bo działa w innej pozycji mianowicie w widoku product.tpl w zapleczu przypięty do pozycji DisplayFooterProduct 

 

Chciałbym ten sam moduł umieścić również w widoku category.tpl  a wiec w pliku .php tego modułu dopisałem pogrubione wpisy

 
public function install()
{
return parent::install() &&
$this->registerHook('displayHeader') &&
$this->registerHook('displayHome') &&
$this->registerHook('displayFooterProduct') &&
$this->registerHook('displayFooterCategory');
 }
 
oraz  w końcowej części pliku 
 
public function hookDisplayHeader()
{
 $this->context->controller->addCSS($this->_path.'css/proinstagramcarousel.css', 'all');
 $this->context->controller->addJS($this->_path.'js/proinstagramcarousel.js', 'all');
public function hookDisplayFooterProduct()
{
 $this->context->controller->addCSS($this->_path.'css/proinstagramcarousel.css', 'all');
 $this->context->controller->addJS($this->_path.'js/proinstagramcarousel.js', 'all');
public function hookDisplayFooterCategory()
{
 $this->context->controller->addCSS($this->_path.'css/proinstagramcarousel.css', 'all');
 $this->context->controller->addJS($this->_path.'js/proinstagramcarousel.js', 'all');
 
Teraz chciałbym wyświetlić ten moduł w widoku category.tpl więc w pliku category.tpl w odpowiednim miejscu umieszczam wpis {hook h='displayFooterCategory'}.
 
Pozycja 'displayFooterProduct' była już w szablonie po zainstalowaniu i jest widoczna na liście pozycji z widoku zaplecza Moduły-Pozycje
Moduł jest widoczny w karcie produktu choć ręcznie nie dopisywałm hooka do pliku product.tpl
 
Chciałbym mieć możliwość wyświetlenia tego samego moduły również w widoku category.tpl 
 
Pozycja 'displayFooterCategory' którą chciałbym utworzyć nie jest widoczna na tej liści. Nie mogę wiec wskazać tej pozycji dla tego modułu więc próbuję dopisać ją ręczeni.
 
 
 
 
 
 
Link to comment
Share on other sites

  • 0

Ja bym nie robiła w takiej sytuacji nowego hooka tylko do modułu, który chcesz wyświetlać w category.tpl dodała możliwość zaczepienia go do hooka który jest już w szablonie category.tpl 

żeby tego dokonać do głównego pliku modułu musisz dodać wpis:
 

 public function hook[jakisistniejacyhook] ($params)
{
return $this->hookDisplayFooterProduct($params);
}

zakladam przy tym, że DisplayFooterProduct jest zdefiniowany oryginalnie w module bo mówiłeś, że oryginalnie działa w tym zaczepie.

 

Jak dodasz tą metodę do głównej klasy twojego modułu to w zapleczu w pozycjonowaniu zaczepów będziesz miał możliwość podczepić hooka moduł do nowego hooka

 

jeżeli mimo to chcesz użyć swojego nowego hooka to dopisz do głównej klasy swojego modułu:
(zakładam przy tym, że dsiplayFooterCatetory to twój utworzony hook.

public function hookDisplayFooterCategory($params)
{
return $this->hookDisplayFooterProduct($params);
}

a następnie w pozycjonowaniu zaczepów w backoffice podczep swój moduł pod nowego hooka

 

(Mała uwaga zauważyłam w ps 1.6.1.3, że czasami trzeba odpiąć ze wszystkich zaczepów i przypiąć w innej kolejności bo pomimo, że niby się zaczepiło to nie zapisuje zmian, ale to jak będzie jakiś problem)

Edited by addd (see edit history)
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...