Zum Inhalt springen

RO in Menu funktioniert nicht

Erstellt am 13. September 2006 · 13 Antworten · letzte Antwort am 16. Januar 2007

Tags: HTML & CSS, Frage

-June- ·

Hallo liebe Typo3ler,

dies ist mein erstes eigenes typo3 projekt und ich hänge an einem nicht funktionierenden rollover.
das template setup schaut folgendermaßen aus:

# Configuring the Auto-Parser for main template:

plugin.tx_automaketemplate_pi1 {

    # Read the template file:

  content = FILE

  content.file = fileadmin/template/index.html

 

    # Here we define which elements in the HTML that 

    # should be wrapped in subpart-comments:

  elements {

    BODY.all = 1

    BODY.all.subpartMarker = DOCUMENT_BODY

 

    HEAD.all = 1

    HEAD.all.subpartMarker = DOCUMENT_HEADER

    HEAD.rmTagSections = title

 

    TD.all = 1
    TR.all = 1
    DIV.all = 1
    SPAN.all = 1
  }

 

    # Prefix all relative paths with this value:

  relPathPrefix = fileadmin/template/

}

 
# Menu-1 cObject

temp.menu_1 = HMENU

temp.menu_1.wrap = <td width="100%" class="menu-1"><table width="100%" cellspacing="0" cellpadding="0"><tr> | </tr></table></td>


# First level menu-object level 1, textual

temp.menu_1.1 = TMENU
temp.menu_1.1 {

   # Normal state properties
    
  NO {
  allWrap = <td class="menu-1-1-no" id="menu_1_{elementUid}" style="background-color: #FFFFFF"> | </td>
  subst_elementUid=1
  RO_chBgColor = #431874 | #FFFFFF | menu_1_
  RO = 1
  }

   # Enable active state and set properties:

  ACT = 1
  ACT {
  allWrap = <td class="menu-1-1-act" id="menu_1_{elementUid}" style="background-color: #431874"> | </td>
  subst_elementUid=1
  }
}

# Second level menu object, textual

temp.menu_2 = HMENU
temp.menu_2.entryLevel = 1


# Second level menu-object level 1, textual

temp.menu_2.1 = TMENU
temp.menu_2.1.wrap = <br><table width="110" cellspacing="0" cellpadding="0" class="menu-2-1"> | </table>

temp.menu_2.1 {

    # Normal state properties 

  NO.allWrap = <tr><td class="menu-2-1-no"><br> | </td></tr> |*| <tr><td class="menu-2-1-no"><br><hr width="60" size="1" color="#434343" noshade><br> | </td></tr> |*| <tr><td class="menu-2-1-no"><br><hr width="60" size="1" color="#434343" noshade><br> | </td></tr>

    # Enable active state and set properties:

  ACT = 1

  ACT.allWrap = <tr><td class="menu-2-1-ACT"><br> | </td></tr> |*| <tr><td class="menu-2-1-ACT"><br><hr width="60" size="1" color="#434343" noshade><br> | </td></tr> |*| <tr><td class="menu-2-1-ACT"><br><hr width="60" size="1" color="#434343" noshade><br> | </td></tr>
  
}

# Second level menu-object level 2, textual

temp.menu_2.2 = TMENU

temp.menu_2.2 {

    # Normal state properties 

  NO.allWrap = <tr><td class="menu-2-2-no"><br> | </td></tr> |*| <tr><td class="menu-2-2-no"><br><hr width="60" size="1" color="#434343" noshade><br> | </td></tr> |*| <tr><td class="menu-2-2-no"><br><hr width="60" size="1" color="#434343" noshade><br> | </td></tr>

    # Enable active state and set properties:

  ACT = 1

  ACT.allWrap = <tr><td class="menu-2-2-ACT"><br> | </td></tr> |*| <tr><td class="menu-2-2-ACT"><br><hr width="60" size="1" color="#434343" noshade><br> | </td></tr> |*| <tr><td class="menu-2-2-ACT"><br><hr width="60" size="1" color="#434343" noshade><br> | </td></tr>

}

# Main TEMPLATE cObject for the BODY

temp.mainTemplate = TEMPLATE

temp.mainTemplate {

    # Feeding the content from the Auto-parser to the TEMPLATE cObject:

  template =< plugin.tx_automaketemplate_pi1

    # Select only the content between the <body>-tags

  workOnSubpart = DOCUMENT_BODY

 

    # Substitute the ###menu_1### subpart with some example content:

  subparts.menu_1 = TEXT

  subparts.menu_1 < temp.menu_1
  
    # Substitute the ###menu_2### subpart with some example content:

  subparts.menu_2 = TEXT

  subparts.menu_2 < temp.menu_2



    
    # Substitute the ###content### subpart with some example content:

  subparts.content = TEXT

  subparts.content < styles.content.get

}

 

 

# Main TEMPLATE cObject for the HEAD

temp.headTemplate = TEMPLATE

temp.headTemplate {

    # Feeding the content from the Auto-parser to the TEMPLATE cObject:

  template =< plugin.tx_automaketemplate_pi1

    # Select only the content between the <head>-tags:

  workOnSubpart = DOCUMENT_HEADER

}

 

 

 

 

# Default PAGE object:

page = PAGE

page.typeNum = 0

 

# Copying the content from TEMPLATE for <body>-section:

page.10 < temp.mainTemplate

 

# Copying the content from TEMPLATE for <head>-section:

page.headerData.10  < temp.headTemplate

der link zur zugehörigen noch IM AUFBAU befindlichen seite:
http://eishockey.provencefahrt-wls.de

wenn ihr nun mit der maus über das horizontale menu über den aktiven menupunkt fahrt, so wird er breiter!

und ich hab keine ahnung wieso!
bitte habt etwas nachsicht ... ich bin noch nicht wirklich html/css/typoscript-sicher.

ach ja ...ums zu vervollständigen hier noch die stylevorlage:

BODY {  
margin           : 0px 0px 0px 0px;
background-color : #FFFFFF;
color            : #000000;
font-family      : Verdana, Arial, Helvetica, sans-serif;
}
td, tr, p, div {
font-family      : Verdana, Arial, Helvetica, sans-serif;
font-size        : 11px;
color            : #333333;
}
ul {
margin           : 0px 0px 0px 0px;
}
hr {
background       : #CCCCCC;
height           : 1px;
width            : 100%;
}

.menu-1 {
margin: 0px 0px 0px 0px;
width: 100%; 
border-left: solid 1px #431874;
border-right: solid 1px #431874;
border-top: solid 0px #000000;
border-bottom: solid 1px #431874;
}
.menu-1-1-no {
width: 801px;
text-align: center;
height: 24px;
}
.menu-1-1-no a:link, .menu-1-1-no a:active, .menu-1-1-no a:visited {
color: #431874;
text-decoration: none;
}
.menu-1-1-no a:hover {
color: #FFFFFF;
text-decoration: none;
}
.menu-1-1-act {
width: 801px;
text-align: center;
height: 24px;
}
.menu-1-1-act a:link, .menu-1-1-act a:active, .menu-1-1-act a:visited, .menu-1-1-act a:hover {
color: #FFFFFF;
text-decoration: none;
}
.menu-2-1 {
margin-right: 20px;
border: solid 1px #431874;
text-decoration: none;
}
.menu-2-1-no a:link, .menu-2-1-no a:active, .menu-2-1-no a:visited {
margin-right: 20px;
text-decoration: none;
color: #431874
}
.menu-2-2 {
margin-right: 20px;
text-decoration: none;
}
.menu-2-2-no a:link, .menu-1-1-no a:active, .menu-1-1-no a:visited {
margin-right: 20px;
text-decoration: none;
color: #431874;
}
.menu-2-2-no a:hover {
color: #FFFFFF;
text-decoration: none;
}
.menu-2-2-act a:link, .menu-1-1-act a:active, .menu-1-1-act a:visited, .menu-1-1-act a:hover {
margin-right: 20px;
text-decoration: none;
color: #431874;
}
.csc-header {
line-height: 100%;
}
.spacer-gif {
height: 5px;
}
.bodytext {
padding-top: 0px;
}

So, vielen lieben dank erstmal,
Julia

toyde ·

Willkommen im Forum,

Tipp vorneweg: Lass RO bezgl. TMENU aus dem Spiel 😉 .
TMENU kannst Du als klassisches "HTML"-Text-Menü ansehen. Mit HTML/CSS kommst Du an dein Ziel. Korrekterweise hast Du für NO und ACT bereits eigene CSS-Klassen vergeben. Nun noch die Zustände korrekt in dieser Reihenfolge ansprechen (a:link, :visited, :hover, :active) - und es läuft wie's soll.

TYPO3 hat nix mit deinem Problem zu tun. Gewünschte Effekte einfach über CSS steuern. Schau auf http://www.css4you.de/, oder sonstigen Referenzen. An Nachschlagewerken mangelt es nicht.

grüsse

-June- ·

danke erstmal für die Antwort,
wie gesgat ich scheitere immer noch an den einfachsten Fehlern!
Zu deinem Tip. Was hab ich für Nachteile wenn ich den RO mit nem TMENU kombinier?
es läuft doch eigentlich alles ganz gut so!
Würde ich ein grafisches Menu nehmen müsste ich doch auch Hintergrundgrafiken etc mit einbinden und da läufts doch auf viel mehr Aufwand raus (korrigier mich bitte wenn ich hier mist rede!)
Und beides läuft ja auch auf JavaScript raus!?

beste grüße,
julia

toyde ·

Hello.

Ich fang unten an.

und schließlich läufts doch am ende bei beiden menus auf javascript raus!?

Ich dachte, ich hätte es mit HTML/CSS genügend ausführlich geschildert 😉 . Nein, bei diesem Zusammenspiel(HTML/CSS bezgl. TMENU) kommt kein JS (JavaScript) zum Zuge.

Und zum Rest:
RO ist ein Objekt von GIFBUILDER.
» https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/ContentObjects/Hmenu/Tmenu/Index.html.
Wenn Dich das allgemein interessiert, wirf einen Blick in die Referenz:
https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Index.html

Rollover- bzw. Hovereffekte bekommst Du mit CSS hin. CSS4you als Infoquelle habe ich oberhalb verlinkt.

wie gesgat ich scheitere immer noch an den einfachsten Fehlern!

Das ist nicht tragisch. Ein Tipp, der Dir jeder an's Herz legen wird: Solide Grundkenntnis von CSS und HTML ist bei eigenen TYPO3-Seiten empfohlen, teils Voraussetzung. Dann verstehst Du auch, was TMENU genau in deinem Frontend ausspuckt.

grüsse

-June- ·

mh,
also wie gesagt korrigiere mich wenn ich falsch liege aber die folgende zeile ist doch eindeutig JS! Die hab ich aus dem seitenquelltext und der zeigt was ausgegeben wird vom typo:

onmouseover="changeBGcolor('menu_1_3','#431874');" onmouseout="changeBGcolor('menu_1_3','#FFFFFF');">

Und wie gesagt danke das du geantwortet hast aber ich bin kein profi und es ist denk ich kein verbrechen vllt auch etwas dümmere fehler zu machen!??

toyde ·

Mein Tipp war der Bogen um das Ganze #paralyzed# .

RO_chBgColor ist ein TMENUITEM (und hat nichts mit deinem erwähnten RO zu tun), und berechtigt deinen Einwand bezüglich JavaScript. Da diese Syntax aber wirklich nur kompliziert ist, und ohnehin durch CSS ersetzt - und leichter verständlich ist - konformer auf Browsern läuft, sag ich's nochmals gerne: Ich würd RO und das RO_chBgColor sein lassen..
(Bei Interesse wie gesagt, die Referenz steht auch für offen.)

Arbeite mit HTML/CSS und deinem guten Anfang, für ACT/NO mit CSS-Klassen zu arbeiten. Damit wirst Du glücklich, und es gibt kein JS mehr, das Fragen aufwirft :p .

schönen Abend.

-June- ·

So, hab nun alles sehr gewissenhaftim css geändert ...also die reihenfolge!
leider ist immer noch alles so wie es vorher war. der fehler muss also woanders liegen.

toyde ·

der fehler muss also woanders liegen.

Kann Dir nicht helfen, sry. Wenn ich Dir was erkläre und vorbeirede, hat's wenig Sinn..

Lösch deine Zeilen mit RO/RO_chBgColor aus deinem TypoScript raus(steht noch immer in deinem Frontend-Quellcode). Danach solltest Du Dich einlesen, was CSS ist - dein CSS ist falsch, wenn es nicht greift.

grüsse

-June- ·

Wenn ich das mal kurz versuche zu verstehn dann kommt dabei raus:
RO ist keine TMENU Item eigenschaft?

wie löse ich dann mittels css ein hintergrund rollover?

und danke für den ratschlag aber ich weiss was css ist. das was ich ebnfalls weiss ist das man leider ur durch praxis lernt und das es normal ist fehler zu machen.

toyde ·
June schrieb

RO ist keine TMENU Item eigenschaft?

toyde schrieb

RO ist ein Objekt von GIFBUILDER.

Genau. Kein TMENU/TMENUITEM-Objekt.

June schrieb

wie löse ich dann mittels css ein hintergrund rollover?

und danke für den ratschlag aber ich weiss was css ist. das was ich ebnfalls weiss ist das man leider ur durch praxis lernt und das es normal ist fehler zu machen.

Habe Dir http://www.css4you.de als Tipp gegeben, da diese Thematik nichts mit TYPO3 zu tun hat. Das ist kein Vorwurf, sondern ein Schubs, in Richtung "bitte CSS-Referenz lesen".

Hovereffekt:
http://www.css4you.de/hover.html
Hintergrund:
http://www.css4you.de/background-color.html

toyde ·

Hi.

Stimmt. Bezgl. des TMENUITEM ist RO der Boolean für RO_chBgColor
. Was beachtet werden soll, über TMENU und RO keine Truetype-Schriftart, Schriftgrössen, etc. wie im GMENU zu definieren. Leider oft Stolperstein in einigen Threads gewesen.
Soviel als Ergänzung für künftige Leser.

grüsse

BastianBalthasarBux ·

Als weitere Ergänzung für alle zukünftigen Leser:

Grundsätzlich sind die CSS Effekte von mir bevorzugt. Ein Nachteil ergibt sich allerdings mit mehrstufigen tmenu_layers, da das 'triggerItem' mit einem normalen css-hover leider wieder die farbe in den ursprungszustand wechselt, wenn man in den darunterliegenden layer moused.

bei RO_chBgColor passiert das nicht, wenn man freezeMouseover=1 angibt.

Problem hierbei: eventuelle Background grafiken werden beim rein/rausmausen natürlich überschrieben.

Also wie man sieht, ein Menü ist sogar in typo3 immer wieder trickreich!

BastianBalthasarBux ·

Das mit dem Hintergrundbild hab ich aus gegebenem Anlass mal gleich rausgefunden.

Man kann in seine tmenu_layers.php die folgende funktion schreiben:

function addJScolorShiftFunction()	{
		$GLOBALS['TSFE']->additionalJavaScript['TMENU:changeBGcolor()']='
			function changeBGcolor(id,color) {	//
				if (document.getElementById && document.getElementById(id))	{
					var testUrl = "fileadmin";
					if ( testUrl == color.substring(0,9) ) {
						document.getElementById(id).style.backgroundImage = "url(" + color + ")";
					}
					else {
						document.getElementById(id).style.background = color;
					}
					return true;
				} else if (document.layers && document.layers[id]) {
			        document.layers[id].bgColor = color;
					return true;
			    }
			}
		';
	}

Die überschreibt dann die gleichnamige funktion in der Klasse tslib_tmenu

Hat zur Folge, dass wenn man RO_chBgColor im Typoscript Pfadangaben beginnend mit fileadmin übergibt, diese auch richtig per javascript in den style geschrieben wird.

Die derartige gemoddete tmenu_layers.php gibts dann in Kürze auf meiner Homepage (www.riccabona.info)

lg clemens

ps: keine garantie irgendwelcher art!!!!!!