Forum » TYPO3 » Menu
Tematy bez nowych odpowiedzi

Menu drzewiaste


Autor Wiadomość
Napisane: 18.11.2009 [16:34]
zbycho
Twórca tematu
zarejestrowany: 06.11.2009
Posty: 77
Witam...
Chce zrobic takie menu:
Na samej gorze glowne menu (Home | O mnie | Kontakt)
Nastepnie zaleznie od wyboru chce wygenerowac nastepujace menu z lewej:
(Home> Witaj | Zdjecia | ...)
lub
(O mnie> Hobby | Osiagniecia | ...)
lub
(Kontakt> Adres | Telefon | ...)

Zrobilem tak:
W podstronach umiescilem mniej wiecej taki HTML kod:
<div id="fahban">
<div id="fb_menu> ###FB_MENU###</div>
<div id="fb_cont> ###FB_CONT###</div>
</div>

i TypoScript:
FB_MENU = HMENU
FB_MENU.special = directory
FB_MENU.special.value = 137
(...)
ale zadnych efektow nie widac banghead.gif ... ma ktos moze jakis pomysl?
Napisane: 18.11.2009 [16:40]
artur2000
zarejestrowany: 09.12.2008
Posty: 30
W czym jest teraz problem? Nie widzisz zadnego menu czy tylko to glowne?
JEsli tylko to glowne to problem w tym ze HMENU typu special.directory nie obsluguje hierarchii czyli ze otrzymasz pierwzy poziom (strony z pid=137) ale reszty juz nie.

czyli musisz to rozbic na dwa menu w TS

TYPOSCRIPT
FB_MENU = HMENU
FB_MENU.special = directory
FB_MENU.special.value = 137
FB_MENU.1 = TMENU
FB_MENU.1 {
[...]
}
 
FB_MENU_SUB = HMENU
FB_MENU_SUB {
  entryLevel = 1
  1 = TMENU
  1 {
    [...]
  }
}


tak nie powinno byc problemow

[Ten temat był edytowany 2 razy. Ostatnio 18.11.2009 o 16:47.]

Certified Level 2 TYPO3 Night Crew Member
Napisane: 18.11.2009 [16:58]
zbycho
Twórca tematu
zarejestrowany: 06.11.2009
Posty: 77
Dzieki artur2000! ale nadal nie dziala...
Nie chce rozwijalnego menu tylko chce na podstronie wygenerowac nowe za pomoca TS.
Jako zawartosc podstrony wstawilem HTML:

HTML
<div id="fahban">
<div id="fb_menu> ###FB_MENU###</div>
<div id="fb_cont> ###FB_CONT###</div>
</div>


i teraz chce tam zamiast tego: ###FB_MENU### chce miec menu...
Napisane: 18.11.2009 [17:05]
artur2000
zarejestrowany: 09.12.2008
Posty: 30
Cos mi sie wydaje, ze brakuje ci jeszcze podstaw budowania templatek i mapowania objektow z szablonu HTML. W tym wypadku poczekaj az ktos inny pokieruje cie troche w tym kierunku bo ja osobiscie na coszien pracuje z TemplaVoila.

Certified Level 2 TYPO3 Night Crew Member
Napisane: 19.11.2009 [09:45]
artur2000
zarejestrowany: 09.12.2008
Posty: 30
Jesli to FB_MENU to ma byc twoje sub menu calkowicie nie powiazane z glownym (nie rozwijane) z lewej strony to juz to co napisalem wczesniej powinno ci pomoc. W TS potrzebujesz cos takiego

TYPOSCRIPT
[...]
FB_MENU = HMENU
FB_MENU {
  entryLevel = 1
  1 = TMENU
  1 {
    [...]
  }
}
[...]


entryLevel = 1 powoduje ze menu zaczyna sie od drugiego poziomu i wlasnie tego ktory zostal wybrany w menu glownym. Pod warunkiem, ze prawidlowo zmapowales templetke bo jeszcze tego nie potwierdziles. Jesli masz jeszcze jednak problemy z mapowaniem to odsylam do dokumentu "modern template building" bo to nie jest cos co mozna wytlumaczyc w kilku zdaniach.

http://typo3.org/documentation/document-library/tutorials/doc_tut_templselect/current/
http://typo3.org/documentation/document-library/tutorials/doc_tut_templselect2/current/


Bedac dokladnym trzeba powiedziec, ze ten TS-Code nie moze tak wisiec sam dla siebie w twoim setupie tylko powinien byc mniej wiecej w takim kontekscie zeby to w ogole dzialalo.

TYPOSCRIPT
page.20 = TEMPLATE
page.20.template = FILE
page.20.template.file = sciezka/do/template.html
 
page.20.marks{
 
[...]
FB_MENU = HMENU
FB_MENU {
  entryLevel = 1
  1 = TMENU
  1 {
    [...]
  }
}
[...]
 
}


[Ten temat był edytowany 3 razy. Ostatnio 19.11.2009 o 09:58.]

Certified Level 2 TYPO3 Night Crew Member
Napisane: 19.11.2009 [11:14]
biesior
admin
zarejestrowany: 20.03.2008
Posty: 1338
Hej Zbycho

Wprowadzenie: wszystko co chcesz osiągnąć wynika z podstawowych zasad tworzenia szablonów, nie mogę wywnioskować na jakim etapie utknąłeś i co de facto jest Twoim problemem, stworzenie odrębnych menu, podpięcie ich do szablonu, czy cokolwiek innego.

Ogólne zasady opisane są dość przejrzyście kroko po kroku w prezentacji:
http://dev.typo3.pl/uploads/media/T3UG_01_Szablony.pdf
oraz dokumentacji TSref:
http://typo3.org/documentation/document-library/references/doc_core_tsref/4.2.1/view/

Jeśli po lekturze tego wątku nadal będziesz miał problemy, prześlij (jako załczniki do posta) szablon HTML, swój kod TS oraz screenshot z drzewa strony w BackEndzie wraz z komentarzem, ktore strony jak chcesz potraktować...

Artur pokazał Ci poprawne rozwiązanie: stworzenie dwóch odrębnych menu, pierwsze renderuje wyłącznie linki do stron znajdujących się na najwyższym poziomie drzewa, drugi renderuje linki wyłącznie do stron będących podstronami pierwszego poziomu (przy czym ten przykład również renderuje wyłacznie 1 poziom menu, oczywiście możesz sobie to rozbudować, pod spodem kod, który odpowiada Twoim nazwom znaczników wraz z komentarzem. Prefix lib. nie jest wymagany, choć porządkuje nieco TS i ułatwia pracę parserowi)

TYPOSCRIPT
// deklaracja menu 1 poziomowego zaczynającego się na szczycie strony (tam gdzie szablon TypoScript ma zaznaczoną opcję RootLevel) 
//Zauważ, że NIE musi to być special = directory, wystarczy prsoty zapis, chyba, że chcesz wybrać pozycje z innej gałęzi niż główna
 
lib.FB_MENU = HMENU
lib.FB_MENU {
 
//ilość renderowanych poziomów wynika z ilości zadeklarowanych indeksów typu TMENU
 
  // pierwszy poziom:
  1 = TMENU
  1.NO {
    allWrap = <li>|</li>
  }
 
}
 
 
// Deklaracja DRUGIEGO menu (niezależnego od pierwszego) 
 
 
lib.FB_CONT = HMENU
lib.FB_CONT {
 
  //Ważne, żeby to menu nie renderowało się od poziomu pierwszego (indeks 0):
  entryLevel = 1 
 
  // pierwszy poziom:
  1 = TMENU
  1.NO {
    allWrap = <li>|</li>
  }
 
  // drugi poziom:
  2 = TMENU
  2.NO {
    allWrap = <li>|</li>
  }
 
  // trzeci, czwarty itd...
}


Oczywiście te przykłady są spłycone i dla lepszego działania powinny być wyposażone w klasy CSS dla różnych poziomów, oznaczenia aktywnych pozycji (ACT) obecnej strony (CUR) itd, etc. wszystko można wyczytać w dokumentacji:
http://typo3.org/documentation/document-library/references/doc_core_tsref/4.2.1/view/1/8/#id4379921

OK, masz już zadeklarowane dwa menu, ale nie masz ich jeszcze podpiętych do szablonu (albo jak kto woli, nie masz ich zmapowanych do odpowiednich znaczników w szablonie HTML). Zakładam, choć mogę się mylić, że masz już przygotowany cObject typu TEMPLATE, w największym skrócie powinien on wyglądać jakoś tak:

TYPOSCRIPT
// ... kontynuacja kodu...
 
temp.mojSzablon = TEMPLATE
temp.mojSzablon {
  template = FILE
  template.file = fileadmin/szablon1/wersja1.html
  // poniżej powinna się znaleźć nazwa faktycznie istniejącego w HTML subpartu głównego!
  workOnSubpart = DOCUMENT_BODY
 
  // teraz zmapuj stworzone menu do markerów w szablonie
  // lewa strona - nazwa istniejącego w HTML znacznika (baz hashe'ów!)
  // prawa strona - ścieżka do zdeklarowanego wcześniej w TS cObjectu
  // Znak: < kopiuje zawartość deklaracji do znacznika
 
  marks {
    FB_MENU < lib.FB_MENU
    FB_CONT < lib.FB_CONT
  }
}
 
// na zakończenie utwórz (o ile nie zrobiłeś tego wcześniej) cObject PAGE 
// i do jego indeksu zapakuj cały cObject TEMPLATE:
 
page = PAGE
page.10 < temp.mojSzablon
 
// będzie działać



Sesja wygasła, zaloguj się, żeby się wylogować.

T3CI
Certified Level 2 TYPO3 Night Crew Member.
KO System enthusiast
Napisane: 19.11.2009 [12:00]
zbycho
Twórca tematu
zarejestrowany: 06.11.2009
Posty: 77
Wielkie dzieki!
Postanowilem poprawic szablon HTML i powalczyc ze stylami CSS, najprostrze rozwiazanie okazuje sie najlepsze...
Jak mi sie juz uda zaladowac strone to wam ja pokaze... ale o tym w moim nowym watku.