Temat z wieloma odpowiedziami

Problem z menu


Autor Wiadomość
Napisane: 15.01.2010 [14:44]
dpacholczyk
Twórca tematu
zarejestrowany: 17.09.2008
Posty: 1006
Witam mam sporty problem z wygenerowaniem menu, a raczej odpowiednim przepisywaniem klas. Chodzi o to, że pewien genialny grafik wpadł na pomysł utrudnienia mi życia.

Menu ma 6 pozycji, które wygenerowane są na za podstanie list <ul>

mniej więcej tak

CSS
<ul>
<li class="first active">1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>


teraz potrzebuje żeby active przechodził po aktywną pozycję.

menu generuje mniej więcej tak

TYPOSCRIPT
NO.allWrap = <li class="first active">|</li> |*||*|


Teraz jak na to patrzę to widzę, że tak naprawdę wymuszam tą klasę zawsze dla pierwszej pozycji. Nie mniej jednak nie wiem w jaki sposób zmieniać klasę w tagu <li>

gdyby to był link to wiem, że wystarczyłoby dać ATagParams, ale tu się gubię.

Certified Level 2 TYPO3 Night Crew Member.
Napisane: 15.01.2010 [18:08]
biesior
admin
zarejestrowany: 20.03.2008
Posty: 1338
TYPOSCRIPT
NO.allWrap = <li class="first">|</li>|*|<li>|</li>|*|
ACT.allWrap = <li class="first active">|</li>|*|<li class="active">|</li>|*|


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

T3CI
Certified Level 2 TYPO3 Night Crew Member.
KO System enthusiast
Napisane: 15.01.2010 [22:32]
dpacholczyk
Twórca tematu
zarejestrowany: 17.09.2008
Posty: 1006
dzięki to pomogło. trzeba tylko dopisać

TYPOSCRIPT
ACT = 1


Po dalszych modyfikacjach otrzymałem coś takiego
TYPOSCRIPT
temp.main_menu = COA
temp.main_menu {
  # ---------------------------------------
  # Typoscript implementation of the DHTML
  # menu found at http://www.brainjar.com
  # ---------------------------------------
  wrap = <ul class="navi-main navi-long">|</ul>
  10 = HMENU
  10 {
    entryLevel = 0
    special = list
    special.value = 1,2,11,15,31,19
  }
  10.1 = TMENU
  10.1 {
 
NO.allWrap = <li class="first">|</li>|*|<li>|</li>|*|
 
    #[global]
    IFSUB = 1
    IFSUB.doNotLinkIt = 0
    IFSUB.subst_elementUid = 1
    IFSUB.allWrap = <li class="first">|</li>|*|<li>|</li>|*|
    IFSUB.ATagParams = class="menuButton" onmouseover="buttonMouseover(event, 'menu{elementUid}');"
 
    ACTIFSUB = 1
    ACTIFSUB.doNotLinkIt = 0
    ACTIFSUB.subst_elementUid = 1
    ACTIFSUB.allWrap = <li class="first active">|</li>|*|<li class="active">|</li>|*|
    ACTIFSUB.ATagParams = class="menuButton" onmouseover="buttonMouseover(event, 'menu{elementUid}');"
  }


Problem tkwi że ani domyślnie ani po kliknięciu pierwsza pozycja nie robi się aktywna

[Ten temat był edytowany 3 razy. Ostatnio 15.01.2010 o 22:47.]

Certified Level 2 TYPO3 Night Crew Member.
Napisane: 15.01.2010 [23:21]
biesior
admin
zarejestrowany: 20.03.2008
Posty: 1338
dpacholczyk napisał/a

dzięki to pomogło. trzeba tylko dopisać
TYPOSCRIPT
ACT = 1



Cóż podałem Ci przykład optionSplit, reszta menu jest po Twojej stronie ;]

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

T3CI
Certified Level 2 TYPO3 Night Crew Member.
KO System enthusiast
Napisane: 16.01.2010 [20:19]
dpacholczyk
Twórca tematu
zarejestrowany: 17.09.2008
Posty: 1006
no masz rację icon_smile.gif

tylko szkoda, że nie mogę tego ogarnąć.

a takie pytanie do optionsplit`a

załóżmy, że jest 6 pozycji.

czy za pomocą optionsplita mogę ustawić dla każdej pozycji oddzielną klasę? coś w rodzaju:

TYPOSCRIPT
opcja1 |*| opcja2 |*| opcja3 |*| opcja4 |*| opcja5 |*| opcja6


oczywiście to nie działą bo sprawdzałem, ale daje pogląd

Certified Level 2 TYPO3 Night Crew Member.
Napisane: 16.01.2010 [20:58]
biesior
admin
zarejestrowany: 20.03.2008
Posty: 1338
dpacholczyk napisał/a

czy za pomocą optionsplita mogę ustawić dla każdej pozycji oddzielną klasę?


zobacz przykład dot. option split: http://typo3.org/documentation/document-library/references/doc_core_tsref/4.3.0/view/1/3/

ogólnie podstawowy split odbywa się wg 3 sekcji: POCZĄTEK |*| ŚRODEK |*| KONIEC

i NIE ma więcej opcji, więc jeśli użyjesz np.

ATagParam = class="P" |*| class="Ś" |*| class="K"

to jeśli będzie 5 linków to wygeneruje kolejno klasy P, Ś, Ś, Ś, Ś, K (czyli 1 początkowa, 4 środkowe i jedna końcowa)

dla ATagParam = class="P" |*| class="Ś" |*|
jedna początkowa i reszta środkowe: P, Ś, Ś, Ś, Ś, Ś

a dla ATagParam = class="P" |*| |*| class="K"
5 początkowych i jedna końcowa...

Dodatkowo masz możliwość użycia optionSplit w optionSplit, które rozdziela się || (a nie |*| !) i ta właśnie opcja działa tak jak chcesz, czyli nie odnajduje P, Ś i K, tylko podstawia KOLEJNO (nieograniczona ilość) do kazdej następnej pozycji, jeśli pozycji jest więcej niż deklaracji używana jest ostatnia deklaracja z danego segmentu:

P1 || P2 || P3 || Pn... |*| Ś1 || Ś2 |*| K1 || K2 || K3




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

T3CI
Certified Level 2 TYPO3 Night Crew Member.
KO System enthusiast
Napisane: 16.01.2010 [21:00]
biesior
admin
zarejestrowany: 20.03.2008
Posty: 1338
PS. uczyłem się na podstawie tego: http://castironcoding.com/resources/typo3-admins-corner/typo3-admin-corner-article/article/understanding-optionsplit/index.html

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

T3CI
Certified Level 2 TYPO3 Night Crew Member.
KO System enthusiast
Napisane: 17.01.2010 [11:01]
dpacholczyk
Twórca tematu
zarejestrowany: 17.09.2008
Posty: 1006
Gdyby ta klasa aactive była na linku nie byłoby z tym problemu

optionsplit tu wiele nie daje bo za jego pomocą nie da się ustawić dla pierwszej i ostatniej pozycji active.

chyba, że można dać allWrap w instrukcję warunkowe w zależności od id strony

da się coś takiego zrobić ? pytam bo do wieczora nie będę miał jak sprawdzić

Certified Level 2 TYPO3 Night Crew Member.
Napisane: 17.01.2010 [13:37]
biesior
admin
zarejestrowany: 20.03.2008
Posty: 1338
dpacholczyk napisał/a

Gdyby ta klasa aactive była na linku nie byłoby z tym problemu

optionsplit tu wiele nie daje bo za jego pomocą nie da się ustawić dla pierwszej i ostatniej pozycji active.

chyba, że można dać allWrap w instrukcję warunkowe w zależności od id strony

da się coś takiego zrobić ? pytam bo do wieczora nie będę miał jak sprawdzić


Nie rozumiem, czemu active dla pierwszej i ostatniej pozycji, przecież z definicji active jest active dla jednej pozycji na każdym poziomie menu.

Po drugie nie rozumiem, coś się tak uczepił tego ATagParams... ten przykład, który Ci podałem na wstępie ma za zadanie manipulację klasami dla LI a nie dla A !
TYPOSCRIPT
NO.allWrap = <li class="first">|</li>|*|<li>|</li>|*|
ACT.allWrap = <li class="first active">|</li>|*|<li class="active">|</li>|*|


Odczep się od ATagParams i przeanalizuj / dostosuj ten przykład na spokojnie

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

T3CI
Certified Level 2 TYPO3 Night Crew Member.
KO System enthusiast
Napisane: 17.01.2010 [19:49]
dpacholczyk
Twórca tematu
zarejestrowany: 17.09.2008
Posty: 1006
Ja cię rozumiem, ale...

1. jak zaimplementowałem to najszybciej i najprościej czyli tak:
TYPOSCRIPT
#wrap = <div class="menuBar" style="width:80%;">|</div>
    #NO.ATagParams = class="first" |*||*|
 
    NO.allWrap = <li class="first">|</li>|*|<li>|</li>|*|
#ACT.allWrap = <li class="first active">|</li>|*|<li class="active">|</li>|*|  
#ACT = 1
    IFSUB = 1
    IFSUB.doNotLinkIt = 0
    IFSUB.subst_elementUid = 1
    IFSUB.allWrap = <li class="first">|</li>|*|<li>|</li>|*|
    IFSUB.ATagParams = class="menuButton" onmouseover="buttonMouseover(event, 'menu{elementUid}');"
 
    ACTIFSUB = 1
    ACTIFSUB.doNotLinkIt = 0
    ACTIFSUB.subst_elementUid = 1
    ACTIFSUB.allWrap = <li class="first active">|</li>|*|<li class="active">|</li>|*|
    ACTIFSUB.ATagParams = class="menuButton" onmouseover="buttonMouseover(event, 'menu{elementUid}');"


to wszystko działa dobrze prócz tego, że pierwsza pozycja NIGDY nie jest active.

2. po dodaniu
TYPOSCRIPT
ACT = 1
ACT.allWrap = <li class="first active">|</li>|*|<li class="active">|</li>|*|


pierwsza pozycja ZAWSZE jest aktywna

Nie za bardzo wiem jak to skomponować


//edit

teraz pomyślałem, że waznym może być dodać przeze mnie, że pierwsza pozycja nie ma podstron żadnych więc ACTIFSUB nie dotyczy

[Ten temat był edytowany 1 razy. Ostatnio 17.01.2010 o 19:53.]

Certified Level 2 TYPO3 Night Crew Member.