Jump to content
  • 0

Górne Menu Poziome - Ten moduł nie może zostać przeniesiony do tego zaczepienia.


mastek

Question

Witam,

 

Próbuje przenieść górne menu w inne miejsce, tj. pod ($HOOK_TOP)}{$HOOK_TOP}.

Cel: Chce aby menu było na całą szerokość strony, aby potem z niego zrobić menu pływające.

Ogólnie robimy migracje tego sklepu http://www.rowery-colex.pl/  z geko 2.0.x na prestashop 1.6.x

 

1. Dodałem w bazie hook

INSERT INTO `ps_hook` (`id_hook`, `name`, `title`, `description`, `position`, `live_edit`) VALUES (NULL, 'displayMenuHeader', 'Page Menu', 'This hook displays menu of the store', 1, 1);

2. Teraz chce go podpiąć panelu ale wyskakuje mi komunikat: Ten moduł nie może zostać przeniesiony do tego zaczepienia.

 

3. Kombinowałem jeszcze w szablonie takimi wpisami, ale ciągle nie mogę przyczepić modułu odpowiedzialnego za wyświetlanie menu, oraz przyczepić go do dodanego hook-a.

a) {hook h='displayMenuHeader' mod='blocktopmenu'}
 {hook h="displayMenuHeader" mod="blocktopmenu"}
c) {hook h="displayMenuHeader"}

Z góry bardzo dziękuje za jakąkolwiek pomoc.

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

w 1.5 czy 1.6 nie musisz sie juz bawic z dodawaniem do bazy itp. wszystkie dane odnosnie zaczepienia modulu w tym rowniez tworzenie nowego, indywidualnego hook wykonujesz w kontrolerze modulu (plik.php - funcjka install() oraz odpwiedznia fukcja wykonawcza dla hook) tutaj musisz mu dopisac odpowiedniego hook, pozniej przeinstalowac modul, zeby zaczytal sie z tym hook i ewentuanie wypozycjonowac mijece modulu w zaczepie.

 

blizsze info obrazowe na http://prestashopforum.pl/index.php/topic,11377.0.html

Edited by deejay3 (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 0

dziękuje, zaczynam kombinować:

 

1. rozumiem że kontroler modułu który chce przenięść to blocktopmenu.php z katalogu /modules/blocktopmenu/ - czy powinienem gdzieś przenieść ten plika aby aktualizacja go nie nadpisała? override?

 

2. dodaje public function z nazwą hooka i metodą

- możesz wyjaśnić mi proszę o jaką metodę chodzi w przypadku Górnego Menu, nagłówka header (podaje tutaj dowolnie, moja obojętnie jaka nazwa, czy może "hookDisplayTop")

 public function hookdisplayMenuHeader2($params)
    {
       return $this->hookDisplayTop($params);
    }

3. dodaje do funkcji install (około 69linii) - np. na samym dole jako ostatnia

if (!parent::install() ||
!$this->registerHook('displayTop') ||
!$this->registerHook('actionObjectCategoryUpdateAfter') ||
!$this->registerHook('actionObjectCategoryDeleteAfter') ||
!$this->registerHook('actionObjectCategoryAddAfter') ||
!$this->registerHook('actionObjectCmsUpdateAfter') ||
!$this->registerHook('actionObjectCmsDeleteAfter') ||
!$this->registerHook('actionObjectCmsAddAfter') ||
!$this->registerHook('actionObjectSupplierUpdateAfter') ||
!$this->registerHook('actionObjectSupplierDeleteAfter') ||
!$this->registerHook('actionObjectSupplierAddAfter') ||
!$this->registerHook('actionObjectManufacturerUpdateAfter') ||
!$this->registerHook('actionObjectManufacturerDeleteAfter') ||
!$this->registerHook('actionObjectManufacturerAddAfter') ||
!$this->registerHook('actionObjectProductUpdateAfter') ||
!$this->registerHook('actionObjectProductDeleteAfter') ||
!$this->registerHook('actionObjectProductAddAfter') ||
!$this->registerHook('categoryUpdate') ||
!$this->registerHook('actionShopDataDuplication')) ||
!$this->registerHook('displayMenuHeader2')
return false;


$this->clearMenuCache();

Dodam ! przed $this i wcześniej jeszcze ||

 

 

EDIT: Niestety jak robie to tak jak opisałem wyżej to wchodząc w zaplecze w Modułu->Pozycje wyświetla mi się biała strona.

Parse error: syntax error, unexpected T_BOOLEAN_OR in /home/colex/domains/test.colex-rowery.pl/public_html/modules/blocktopmenu/blocktopmenu.php on line 86
Edited by mastek (see edit history)
Link to comment
Share on other sites

  • 0

jezeli wszystko wprowadziels porpawnie, bez jakiegos bledu "ortpgraficznego", to wszystko powinno dzialac porpawnie.

 

druga rzecz. wlasnie zagladanalem sobie w ten modul i masz tam mozliwosc zaczepienia menu rowniez do diplayNav. to hook poza page, czyli to co potrzebujesz - mozliwosc rozciagniecia na cala szerokosc. przerzuc sobie tyko w ustawieniach pozycji w ten hook caly modul i powinno dzialac bez kombinacji z nowymi hookami

  • Like 1
Link to comment
Share on other sites

  • 0

W sumie... dobry pomysł.

Będę musiał wtedy przenieść rzeczy które są displayNav do DisplayTop i jakoś to ostylować. Następnie displayNav przenieść pod HOOK_TOP.

 

Tylko:

1. I tak muszę rozwiązać ten problem z dodawaniem nowym miejsc pod różne moduły - po prostu chce się tego nauczyć.

2. Pojawił się mi kolejny problem, po przepisaniu modułu Górne Menu Poziome do displayNav nie wczytują mi się style:

<link rel="stylesheet" href="/themes/lexcom-bootstrap/css/modules/blocktopmenu/css/blocktopmenu.css" type="text/css" media="all" />
<link rel="stylesheet" href="/themes/lexcom-bootstrap/css/modules/blocktopmenu/css/superfish-modified.css" type="text/css" media="all" />

Pewnie da się to na stałe przypisać do header.tpl ale chciałbym wiedzieć jak to zrobić poprawnie.

Link to comment
Share on other sites

  • 0

1. w podanym wczensiej linku masz krok po kroku jak dodawac swojego hook. tutaj wiekszej filozofii sie nie stworzy... musisz jeszcze raz krok po kroku przeanalizowac, zrozumiec i zastosowac sie do tych wytycznych. raczej wiele wiecej nie da sie w tym temacie dodac.

 

2. ten modul jest akurat specyficzny pod wzgledem dodania JS czy CSS, ktore sa wyswitlane bezposrednio w hook docelowym dla TPL. zasadniczo patrzac pod katem optymalizacji strony jest to wrecz blad. powinien byc jeszcze zahaczony hook Header i to wlasnie w nim powinny byc przypisane te pliki. pogladanij sobie inne moduly jak to jest implementowane i mozesz sobie przerobic ten modul. kwestia dodania do instalacji hooka header i stworzenia dla niego odpowiedniej fukcji wyswietlania tych elementow.

Edited by deejay3 (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 0

Ad1 . Będę z tym walczył na pewno aż się uda. Wystarczy że raz mi wyjdzie i zapamiętam :)

- nie rozumiem tylko co to jest to "ciało funkcji(metody)" - jak z tego korzystać - jakie nazwy dawać.

 

Ad2. Za dużo dla mnie jak na początek, jeszcze nie znam tego silnika, dlatego dodam to na sztywno, w sumie menu zawsze i wszędzie będzie się wyświetlać.

Link to comment
Share on other sites

  • 0

1. no szczerze, tak z tego tekstu tez mi ciezko wyznioskowac bez zastanowienia o co z tym cialem chodzi ;) pierwszy raz jak znalazlem tego tutka to byl jeszce po angilsku, mysle,ze tutaj "pomagal" google translator i tak im wyszlo z "body function" czyli ogolnie.... nawet nie wiem jak to do konca nazwac, ale to czym ma sie wywolywac funkcja, jej parametry.... jezeli chodzi o zaczepy pod hooka to te w presta sa zawsze $params, w tej zmiennej jest zapisane wsyzstko czego potrzebuje hook. tutaj tez wiekszej filozofii sie nie napisze. czyli:

"ciało funkcji(metody)" == $params i to uznajemy za stala ;)

 

2. wlasnie od tego jest hookHeader, zeby wyswietlal sie w kazdej stornie  i to w nim powinny byc przechowane i wywloane wszelkie pliki CSS i JS (choc wg standardow te drugie powinny byc raczej na samym koncu calego zrodla, zasadnoczo w stopce, ale konstrukcja jest jaka jest i dziala, a to najwazniejsze ;) tak jak pisalem wczesniej, podgladnij sobie jakikolwiek modul np. jeden z najprostszych blockuserinfo i zobacz jak dodawane sa pliki styli do head storny. na tej samej zasadzie dodaje sie skrypty. to naprawde zadna filozofia nawet dla poczatkujacego a warto to poznac na przyszlosc ;) i dla zrozumeinia ogolnej budowy presta, poslugiwania sie hookami jak i przyda sie przy modyfikacji jak i pisaniu nowych modulow.

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...