Uwaga! Od sierpnia 2017 forum jest w trybie tylko do odczytu.

Dlaczego? Dlatego, że społeczność TYPO3 przeniosła się na slack'a i stackoverflow:
  • Przeczytaj artykuł wprowadzający do slacka, w którym dowiesz gdzie i jak się zarejestrować.
  • Jeżeli masz pytania odnośnie Polskiej Społeczności TYPO3 zapraszamy na kanał slack'a #community-pl. Rozmawiamy tam w języku polskim.
  • Pytania dotyczące samego TYPO3 zadawaj po angielsku na stackoverflow oznaczając je tagiem "typo3". Następnie posługując się linkiem do tego pytania postaraj się zachęcić ludzi z kanału slack'a #typo3-cms lub bardziej pasujących kanałów tematycznych, żeby na nie odpowiedzieli.
  • Możesz też oczywiście zadawać pytania na slacku bez zakładania wątków na stackoverflow, ale wówczas wiedza ta nie jest indeksowana przez googla i część osób nie będzie chciała Ci z tego powodu pomagać.
  • Dla części osób dzielących się wiedzą ważne jest też budowanie reputacji na stackoverflow. Jest to kolejny powód dla którego powinieneś zadawać pytania na stackoverflow by zwiększyć swoje szanse na znalezienie odpowiedzi. Pamiętaj, żeby oceniać odpowiedzi!
Forum » TYPO3 » Menu
Tematy bez nowych odpowiedzi

Niezmienne menu na stronie


Autor Wiadomość
Napisane: 13.04.2011 [11:29]
Imp
Twórca tematu
zarejestrowany: 13.04.2011
Posty: 170
Witam

"zbiłem" się z następującym problemem. Mam 3 menu na stronie w postaci:

HTML
Strona Główna
  Pozycja1_poziom1
     Pozycja1_poziom2
     Pozycja2_poziom2
  Pozycja2_poziom1
     Pozycja3_poziom2
        Pozycja1_poziom3
        Pozycja2_poziom3
     Pozycja4_poziom2
  Pozycja3_poziom1


Problem jest następujący: Na stronie głównej struktura menu jest ok - wyświetla się cale drzewo jak należy, cała struktura strony, natomiast po kliknięciu w link strony 2-iego poziomu (np. "Pozycja2_poziom1"icon_wink.gif wyświetlają się elementy znajdujące się w danej gałęzi menu w poziomach poniżej poziomu strony. Zależy mi na wyświetleniu pełnego drzewa menu na każdej ze stron oraz na tym, aby wykonywane to było z jednego pliku szablonu "podpiętego" do strony głównej.

Przeglądałem forum w dziale menu i nie znalazłem odpowiedzi.
Szablon został zmapowany za pomocą TV, element w którym zawarte jest menu to TypoScript Object Path. Menu w szablonie statycznym zdefiniowane jest w następujący sposób:

HTML
<ul class="navMenu">
 <li>xxx</li>
 <li>xxx
   <ul>
     <li>xxx</li>
     ...
   </ul>
 </li>
 ...
</ul>


Fragment TypoScript (nie działający prawidłowo) odpowiadający za generowanie menu wygląda następująco:

TYPOSCRIPT
lib.field_topmenu = HMENU
lib.field_topmenu {
  entryLevel = 0
  wrap = <ul class="navMenu">|</ul>
  1 = TMENU
  1 {
   noBlur = 1
    expAll = 1
    NO = 1
    NO {
      wrapItemAndSub = <li>|</li>
    }
   ACT = 1
    ACT {
      wrapItemAndSub = <li>|</li>
    }
  }
  2 < .1
  2.wrap = <ul>|</ul>
  3 < .2
  4 < .2
}


i tak samo wygląda to dla pozostałych dwóch menu; różnią się jedynie odwołaniem do odpowiedniego obiektu zmapowanego za pomocą TV.

Jak zmodyfikować typoscript aby uzyskać wyświetlanie całego menu na każdej stronie i podstronach serwisu. Funkcjonalność szablonu:

-statyczny: LINK

-aktualny efekt zabaw z TYPO3: LINK


Z góry dzięki za pomoc.


[Ten temat był edytowany 2 razy. Ostatnio 13.04.2011 o 11:46.]
Napisane: 13.04.2011 [12:12]
biesior
admin
zarejestrowany: 20.03.2008
Posty: 1709
Witaj na forum,

TS tego menu jest poprawne i powinno działać tak jak chcesz, to wygląda tak jakbyś na tej stronie Pozycja2_poziom1 (i innych) miał wsadzony podszablon TS a w nim zaznaczoną opcję "RootLevel" (albo PoziomRoot po naszemu), ta flaga, jeśli zaznaczona ustawia entrylevel na 0 w miejscu wystąpienia. Mam na jednej ze stron bardzo podobną do Twojej składnię TS dla menu wielopoziomowego i to działa...

Co do mapowania w TV - tu jest OK.

Co do podpinania pliku szablonu, o ile masz poprawnie skonfigurowane cachowanie strony - nie kombinowałbym z podpinaniem niczego ze statycznego pliku - zasada jest prosta - cała nawigacja w TYPO3 MUSI renderować się dynamicznie, choćby po to, żeby obsłużyć przyjazne linki a także, żeby reagować na takie rzeczy jak fiszka "ukryj w menu" czy wyświetlaj stronę w określonym przedziale czasu (start - stop)

Dlatego tak czy inaczej musisz doprowadzić konfigurację menu w TS do porządku.

Jeśli cachowanie jest OK a stron w tym menu jest niezbyt wiele (np. tylko kilkadziesiąt) to nie powinien być problem - każda strona wyrenderuje odpowiednie menu i zapisze cache w DB i z głowy - do następnego czyszczenia cache nawigacja nie będzie re-renderowana.

Jeśli natomiast pozycji ma być więcej, może Cię zainteresować rozszerzenie COA_GO (ext:coago), które tworzy dany element raz i zapisuje jako plik (czyli tworzy dynamiczną wersję tego co Ty chcesz podpiąć jako "jeden plik szablonu"icon_wink.gif

Wady: tworzy jedną odmianę menu na wszystkie strony, więc jeśli chciałbyś zmienić styl pozycji w menu dla aktywnej strony - nie wykorzystasz stanów ACT czy CUR z TypoScript - musisz klasy podmienić zwykłym JS'em - jest to robialne, jeśli każda pozycja menu, będzie miała unikatowe ID

Zalety: przede wszystkim czas - przy standardowym cachowaniu TYPO3 tworzy menu dla każdej strony osobno, więc jeśli np. menu zawiera 500 pozycji i renderuje się 5 sek. - każda strona będzie się renderować 5 sek + czas na renderowanie treści. W COA_GO, tylko pierwsza strona będzie się renderować 5sek. + treść - pozostałe wyrenderują się o te 5 sek. szybciej

TYPO3 Certified Integrator | TYPO3 Społeczność Polska

prv: ['] waiting for the miracle, for the miracle to come
Napisane: 13.04.2011 [12:51]
biesior
admin
zarejestrowany: 20.03.2008
Posty: 1709
BTW: ładna ta strona, natomiast coś nie halo ze strukturą, wrzuć screenshot z backendu drzewa stron z rozwiniętymi gałęziami.

TYPO3 Certified Integrator | TYPO3 Społeczność Polska

prv: ['] waiting for the miracle, for the miracle to come
Napisane: 13.04.2011 [14:17]
Imp
Twórca tematu
zarejestrowany: 13.04.2011
Posty: 170
Dzięki za szybka odpowiedź, ale nie załapałem o co Ci chodziło we wstępie:

...to wygląda tak jakbyś na tej stronie Pozycja2_poziom1 (i innych) miał wsadzony podszablon TS a w nim zaznaczoną opcję "RootLevel" (albo PoziomRoot po naszemu), ta flaga, jeśli zaznaczona ustawia entrylevel na 0 w miejscu wystąpienia. Mam na jednej ze stron bardzo podobną do Twojej składnię TS dla menu wielopoziomowego i to działa...

Sęk w tym że jedyny template record jaki stworzyłem to ten dla Strony Głównej (mój RootPage) i on właśnie ma ustawioną opcję Root Level.

http://www.strateg-z4.imp.gda.pl/pic/main%20page_template%20options.JPG

Dla strony pierwszego poziomu (np O Instytucie) nie tworzyłem szablonu,(może to błąd?).

http://www.strateg-z4.imp.gda.pl/pic/1st%20level_template%20options.JPG

W ustawieniach strony, (zakładka Apparence), wybrałem jedynie szablon który zmpowałem za pomocą TV. (Page Template Structure i Template Design) dla bieżącej oraz podstron.

http://www.strateg-z4.imp.gda.pl/pic/1st%20level_apparence.JPG

Jeszcze długa i kręta droga zanim wszystko będzie działo jak należy.
Obrazek załączony.

Dzięki.

Załącznik

tree.jpg (Typ pliku: image/jpeg, Rozmiar: 45.57 kilobajty) — 254 pobrania
Napisane: 13.04.2011 [15:55]
tomkraw1
admin
zarejestrowany: 14.07.2008
Posty: 530
Zaznacz w szablonie strony Main Page także clear constants i setup oraz wyczyść pole Template on next level jeśli to to samo template co w gównej stronie bo szablony konfiguracji dziedziczą się wgłąb witryny. Chyba przez to masz na niższym poziomie znów root witryny.

pozdrawiam
Tomek
Napisane: 13.04.2011 [16:52]
Imp
Twórca tematu
zarejestrowany: 13.04.2011
Posty: 170
Problem rozwiązany.

Trzeba tylko było wyczyścić setup w ustawieniach szablonu, jak pisał przedmówca. Pierwsze menu w TYPO3 zrobione, właściwe trzy menuicon_smile.gif


Piękne dzięki.

[Ten temat był edytowany 1 razy. Ostatnio 13.04.2011 o 22:29.]