Polskie wsparcie PrestaShop
PrestaShop => Konfiguracja => Wątek zaczęty przez: 1q2w3e4r w Luty 06, 2015, 01:44:54 pm
-
Witam
Wersja Prestashop 1.6.0.11
Potrzebuję przenieść menu (blocktopmenu) w inne miejsce w tym celu utworzyłem w bazie nowy HOOK o nazwie: displayNavMenu i przypisałem do niego blocktopmenu, następnie utworzyłem w blocktopmenu obsługę tego hooka:
public function hookDisplayNavMenu($params)
{
return $this->hookDisplayTop($params);
}
Niby wszystko jest ok bo wyświetla się menu w odpowiednim miejscu ale jest bez CSS i JS. Nie dołączają się te pliki w kodzie strony i menu jest jako lista nieostylowana, dlaczego tak się dzieje?
Pozdrawiam
-
"utworzylem w bazie hook" ? po co sobie utrudniac zycie? wystarczylo przeczytac tutka http://prestashopforum.pl/index.php/topic,11377.0.html (ten do 1.5 ale analogocznie dziala pod 1.6
a co do tego, ze nie ma css, ze nie ma js... a hook jest rejestrowalny w Header? ma przypisane funkcje dla headera z zagniezdzeniem js i css? a css ma odpoweidnie klasy teraz? nie odnosi sie gdzies do jakiegos glownego #id ?
-
Zrobiłem tak jak w tym z Twojego linka i niestety dalej tak samo.
a hook jest rejestrowalny w Header? ma przypisane funkcje dla headera z zagniezdzeniem js i css? a css ma odpoweidnie klasy teraz? nie odnosi sie gdzies do jakiegos glownego #id ?
Tak, jest rejestrowalny w header ponieważ oryginalny hookDisplayTop działa normalnie.
Ja korzystałem z innego tutka dla wersji 1.6:
http://tomasznicieja.com/blog/jak-w-prestashop-przeniesc-koszyk-do-menu
Tak wygląda dla HOOK_TOP:
public function hookDisplayTop($param)
{
$this->user_groups = ($this->context->customer->isLogged() ? $this->context->customer->getGroups() : array(Configuration::get('PS_UNIDENTIFIED_GROUP')));
$this->page_name = Dispatcher::getInstance()->getController();
if (!$this->isCached('blocktopmenu.tpl', $this->getCacheId()))
{
if (Tools::isEmpty($this->_menu))
$this->makeMenu();
$shop_id = (int)$this->context->shop->id;
$shop_group_id = Shop::getGroupFromShop($shop_id);
$this->smarty->assign('MENU_SEARCH', Configuration::get('MOD_BLOCKTOPMENU_SEARCH', null, $shop_group_id, $shop_id));
$this->smarty->assign('MENU', $this->_menu);
$this->smarty->assign('this_path', $this->_path);
}
$this->context->controller->addJS($this->_path.'js/hoverIntent.js');
$this->context->controller->addJS($this->_path.'js/superfish-modified.js');
$this->context->controller->addJS($this->_path.'js/blocktopmenu.js');
$this->context->controller->addCSS($this->_path.'css/blocktopmenu.css');
$this->context->controller->addCSS($this->_path.'css/superfish-modified.css');
$html = $this->display(__FILE__, 'blocktopmenu.tpl', $this->getCacheId());
return $html;
}
Ja potrzebuje nowy hook ale o takiej samej treści i konfiguracji więc obsługuję go tak:
public function hookDisplayNavMenu($params)
{
return $this->hookDisplayTop($params);
}
Problem w tym, że nie ładuje do headera styli:
$this->context->controller->addJS($this->_path.'js/hoverIntent.js');
$this->context->controller->addJS($this->_path.'js/superfish-modified.js');
$this->context->controller->addJS($this->_path.'js/blocktopmenu.js');
$this->context->controller->addCSS($this->_path.'css/blocktopmenu.css');
$this->context->controller->addCSS($this->_path.'css/superfish-modified.css');
-
ale3 z tego co widze to nie widze ladowania do displayHeader tylko pliki js i css ladowane sa (niepoprawnie) do top. stworz sobie nowego kontenera (public function) dla headera, dodaj go w czsie instalacji i tam przenies te pliki styli i skryptow, wyrzuc je z top.
-
hookDisplayTop to domyślny hook modułu blocktopmenu więc musi być dobrze zrobione - nawet działa.
Jak możesz to zerknij go niego na chwilę. Dzięki.
public function hookDisplayNavMenu($params)
{
return $this->hookDisplayTop($params);
}
-
Może nieco temat odświeżę, mam podobny problem, stworzyłem Hook dla pozycji menu, niestety nie ładuje mi js i styli, tzn nagłówki strony normalnie, a potem jest pusta strona i błąd js_def ma ktoś pomysł jak to rozwiązać?
-
"błąd js_def" za wiele nie mowi... pomysly? podaj linka do sklepu zeby mozna bylo podgladnac zrodlo i konsole albo opisz dokladnie co dodawales, w jaki sposob, gdzie. jak i gdzie umeisciles hook, jak go zaimplementowales w kontroelrze modulu, gdzie i w jaki sposob dodajesz pliki CSS, JS.... no, moze lepiej podaj linka d sklepu ;)
-
Niestety sklep na localhost, ale sprawa ma się tego typu, muszę dla menu mieć inną pozycję dlatego że chce by znajdowało się poza kontenerem, by móc na całej szerokości dać tło, oczywiście korzystam z podstawowego tematu Bootstrap, wszystkie pliki CSS oraz JS dodane do header nie były ruszane przez mnie. W bloku modułu topmenu.php dodałem
public function hookDisplayMenug($params)
{
return $this->hookDisplayMenug($params);
}
następnie w header.tpl dodałem w miejscu które chciałem, by menu było umieszczone {hook h="displayMenug"}
korzystałem z jednego tutoriala który był umieszczony powyżej, czy coś mogłem pominąć? Konsola pokazuje błąd 500 po załadowaniu górnej części strony. Poniżej biało
-
tylko jeszcze pytanie w ktorym dokladnie miejscu dodales tego hook? czy aby nie w <head> ?