Joomla Mootools Suckerfish Tutorial - Teil 3

Montag, 20. August 2007

Sie erinnern sich noch? Suckerfish, Mootools und Extended Menü? Wenn dem so ist, sollten Sie nun das vorhandene Menü um weitere, beliebige Unterpunkte erweitern. Wir möchten ja schließlich sehen, was unser Menü so zu Stande bringt.

Haben Sie ausreichend neue Unterpunkt eingefügt, können Sie nun den Code der jsm.js JavaScript Datei ersetzen durch:

window.addEvent('domready', function() {
var list = $$('div.moduletable-jsm li');
list.each(function(element) {
if ($(element).getElement('ul')) {
el = $(element).getElement('ul')
var fx = new Fx.Styles(el, {duration:200, wait:false, transition: Fx.Transitions.Expo.easeOut});
el.setStyle('left', 0);
el.setStyle('margin-left', 150);
el.setStyle('opacity', 0);
el.setStyle('display', 'none');
element.addEvent('mouseenter', function(){
fx.clearChain();
fx.element.setStyle('display', 'block');
fx.start({'margin-left': 159,'opacity': 1});
});
element.addEvent('mouseleave', function(){
fx.clearChain();
fx.start({'margin-left': 150,'opacity': 0}).chain(function(){fx.element.setStyle('display', 'none');});
});
var lista = $(el).getElements('li');
lista.each(function(element) {
element.setStyle('opacity', 0.8);
var lifx = new Fx.Styles(element, {duration:500, wait:false, transition: Fx.Transitions.Expo.easeOut});
element.addEvent('mouseenter', function(){
lifx.start({'opacity': 1});
});
element.addEvent('mouseleave', function(){
lifx.start({'opacity': 0.8});
});                
});            
}     
});
}); 

Nun werden die Submenüs recht elegant ein- und ausgeblendet. Die genaue Funktionsweise hierfür wird für Menschen, welche etwas von Javascript verstehen, leicht aus dem jsm.js erkennbar sein. Wer keine Ahnung von JS hat, kann trotzdem die wesentlichen CSS Parameter darin erkennen und sie wenn nötig manipulieren.

Wir bohren das jsm.js noch etwas auf. Und zwar folgendermaßen:

window.addEvent('domready', function() {
var list = $$('div.moduletable-jsm li');
list.each(function(element) {
if ($(element).getElement('ul')) {
el = $(element).getElement('ul')
var fx = new Fx.Styles(el, {duration:200, wait:false, transition: Fx.Transitions.Expo.easeOut});
el.setStyle('left', 0);
el.setStyle('margin-left', 150);
el.setStyle('opacity', 0);
el.setStyle('display', 'none');
element.addEvent('mouseenter', function(){
fx.clearChain();
fx.element.setStyle('display', 'block');
fx.start({'margin-left': 159,'opacity': 1});
});
element.addEvent('mouseleave', function(){
fx.clearChain();
fx.start({'margin-left': 150,'opacity': 0}).chain(function(){fx.element.setStyle('display', 'none');});
});
var lista = $(el).getElements('li');
lista.each(function(element) {
element.setStyle('opacity', 0.8);
var lifx = new Fx.Styles(element, {duration:500, wait:false, transition: Fx.Transitions.Expo.easeOut});
element.addEvent('mouseenter', function(){
lifx.start({'opacity': 1});
});
element.addEvent('mouseleave', function(){
lifx.start({'opacity': 0.8});
});				
});			
}	 
});
});

 

Nun blenden die Submenüpunkte bei Eintreten des Mauszeigers weich ein und aus. Dies soll nur die Flexibilität des Prinzips verdeutlichen.

Nebenbei

Falls Sie sich gefragt haben, ob dieses Menü auch mehrere Hierarchiestufen unterstützt, schlage ich vor, Sie probieren es einfach aus. Theoretisch sollte es beliebig viele Stufen umsetzen können. Sie sollten nur überlegen, bei einem weit verzweigtem Menüsystem das CSS entsprechend anzupassen.

jsm_cascade.jpg

Abgesehen davon, sind meiner Meinung nach zwei Hierarchiestufen aus ergonomischen Gründen das Maximum für gewöhnliche Internetsurfer.

Nachspiel

Nun haben wir eine jsm.js Javascript Datei welche verschiedene Funktionen des Mootools Frameworks nutzt. Wir haben in Teil II des Tutorials das gesamte Mootools Framework in das Javacript Verzeichnis kopiert, obwohl wir ja nur ein paar Funktionen des Frameworks nutzen. Um den Usern nicht unötigen Balast aufzuhalsen, schrumpfen wir nun unsere Mootools Datei auf die nötigsten Funktionen zusammen. Sollten Sie viel mit Mootools arbeiten, werden sie in Ihrer Joomla Installation wohl das ganze, komprimierte Mootools Framework liegen haben und den folgenden Schritt nicht benötigen.

Laden Sie die zustande gekommene Javascript Datei (jsm.js) auf einen online verfügbaren Server. Um herauszufinden, welche Funktionen aus dem gesamten Mootools Framework wir brauchen, nutzen wir das Analysetool Packito von Icebeat.

http://icebeat.bitacoras.com/mootools/packito/

Geben Sie in das Eingabefeld den Pfad zur jsm.js Datei an. Also beispielsweise : http://www.bohacek.de/temp/jsm.js

Sobald Sie bestätigt haben, erscheint eine Liste aller nötigen Mootools Klassen.

Diese können Sie nun ohne weiteres im Download-Bereich von Mootools zusammenstellen und, ganz wichtig, die Packer Komprimierung aktiviert lassen. Wenn Sie nun auf Download klicken, erhalten sie eine schnittige Javascript Datei.

Nachteile und Verbesserungsvorschläge

User, welche JavaScript deaktiviert haben und den IE einsetzen, werden Schwierigkeiten haben das Submenü zu erreichen. Dies ist jedoch bei allen (mir bekannten) Suckerfish Lösungen der Fall und liegt an der nicht vorhandenen Unterstützung der :hover Pseudoklasse des IE.

Ich hoffe Sie konnten das Tutorial gut und erfolgreich nachvollziehen und rechne fest damit da draußen bald ein paar schicke Joomla!-Navigationen zu entdecken.

Halleluja!
Nun wird auch die, lang versprochene, horizontale Verion, im vierten Teil des Tutorials erklärt. Zu finden ist das horizontale Joomla Ausklapp-Menü hier.

 

feed33 Kommentare
Webbie
September 23, 2007
Stimmen: +1

Hallo,
erstmal vielen Dank für die sehr gute Schritt-für-Schritt Anleitung. Das Menue sieht wirklich sehr sehr gut aus !!

Eine Frage: du erwähnst mal beiläufig, dass bei einer Nutzung in anderen Tmplates diverse Anpassungen nötig sind, und genau das versuche ich seit Stunden ..

Was genau müsste denn abgepasst weden? Beim Muster-Template funktionierte alles ..

Danke

report abuse
vote down
vote up
smaxx
September 23, 2007
Stimmen: +0

Hallo,
tolles HowTo!
leider habe ich das Problem, dass der IE die Submenues grundstzlich _unter_ den Content schiebt:
Als Beispiel: wenn ich hier auf der Seite auf "Referenzen" gehe, sind die Subs nur die ersten 2 Buchstaben zu sehen, also genau bis zum Text der Seite.
Ich benutze das wasserandstone.template.
mit z-index hab ich schon rumprobiert: ohne Erfolg. Der FF macht - wie immer - alles richtig ;-)

report abuse
vote down
vote up
Tom
September 23, 2007
Stimmen: +1

Hmm, das habe ich auch noch nicht gehrt. Welcher IE und welches Betriebssystem sind das denn? Das Men wurde soweit auf allen g漤ngigen Systemen getestet.

report abuse
vote down
vote up
smaxx
September 23, 2007
Stimmen: +0

IE 7.0.6000.16512 @ Vista32
Btw: Vielleicht ist das jetzt falsch rübergekommen: Diese Seite hier funktioniert tadellos, ich hab das nur als Beispiel aufgeführt.

unter www.schatten.cc > ExtendetMenü > markisen ist es zu sehen. Die falsche optische Darstellung ist nur temporär, da ich das Menü nur zum Test nochmals eingebaut habe, und nicht das ganze css angepasst habe.

report abuse
vote down
vote up
Tom
September 23, 2007
Stimmen: +1

Hallo,
hauptsächlich sind das die Selectoren in der div.moduletable Klasse. Also Links, Listenelemente usw. Eben alles, was in Teil II des Tutorials so an rhuk CSS angepasst wurde.

report abuse
vote down
vote up
Andreas
September 25, 2007
Stimmen: +0

Ich habe ein Problem mit dem
Template HTML Editor
index.php is : Unwriteable

Was kann ich dagegen tun?

MFG
Andreas

report abuse
vote down
vote up
Tom
September 25, 2007
Stimmen: +0

Ich nehme an die Frage ist ernst gemeint.
Falls die Datei index.php schreibgeschtzt ist, muss dieser Schreibschutz aufgehoben werden. Rechtsklick auf die Datei und unter "Eigenschaften" Schreibschutz entfernen.

report abuse
vote down
vote up
smaxx
September 30, 2007
Stimmen: +0

zur Info: Hab das Problem gefixt:

Template.css:
#content_main {
...
...
z-index: 1;
}

nun funktioniert das Menu auch im IE, allerdings ist der Content im FF nun verschwunden (irgendwo im Hintergrund).
...also folgende nderung in der jsm.css:
div.moduletable-jsm ul {
...
...
z-index: 10;
}


IE 7.0 und FF laufen beide...

report abuse
vote down
vote up
Herminchen
November 15, 2007
Stimmen: +0

Glückwunsch!
Gute Anleitung, die man auch nachvollziehen kann.

Ich möchte das Menü jedoch horizontal auf der Position USER3 haben.
Also als suckerfish.
Was muss ich ändern, damit das funktioniert?

Gruß.

report abuse
vote down
vote up
Carsten
November 29, 2007
Stimmen: +0

Hallo,

feines Tutorial aber die Frage wre doch wie machen es die Clubs indem sie die Menus direkt in das zu installierende Template integrieren.

Httet Ihr die M䤶glichkeit sowas mal vorzustellen ?

Gr Carsten

report abuse
vote down
vote up
tom
November 29, 2007
Stimmen: +0

Es gibt bei den Clubs verschiedene Ansätze. Die einen nutzen ebenfalls das extended menu, der User muss dieses also installieren. Die anderen setzen auf das standard mod_mainmenu. Logischerweise ist die extended Variante die bessere.
Es gibt auch Clubs, die eigene Navigationsmodule mitliefern, wie z.B. das RokMooMenu von Rockettheme (Rockettheme Module).
Wenn ein Kunde eine gute Navigation haben möchte, muss er meiner Meinung nach auch ein gutes Navigationsmodul installieren....oder uns fragen!

report abuse
vote down
vote up
Markus
Dezember 07, 2007
Stimmen: +0

Hallo,

sehr schöne Arbeit, leider scheitere ich daran, dieses auf ein Horizontales Menü umfunktionieren. Es hatte fast funktioniert, nur war es mir nicht möglich die 2. Ebene unter dem jeweiligen Menüpunkt zu plazieren und dann die 3. Ebene neben der 2. Ebene...

Viele Grüße

report abuse
vote down
vote up
Bruno
Dezember 15, 2007
Stimmen: +0

so geht es!

window.addEvent('domready', function() {
var list = $$('div.moduletable-jsm li');
list.each(function(element) {
if ($(element).getElement('ul')) {
el = $(element).getElement('ul')
var fx = new Fx.Styles(el, {duration:1000, wait:false, transition: Fx.Transitions.Expo.easeOut});

el.setStyle('opacity', 0);
el.setStyle('display', 'none');
element.addEvent('mouseenter', function(){
fx.clearChain();
fx.element.setStyle('display', 'block');
fx.start({'opacity': 1});
});
element.addEvent('mouseleave', function(){
fx.clearChain();
fx.start({'opacity': 0}).chain(function(){fx.element.setStyle('display', 'none');});
});
var lista = $(el).getElements('li');
lista.each(function(element) {
element.setStyle('opacity', 0.smilies/cool.gif;
var lifx = new Fx.Styles(element, {duration:1000, wait:false, transition: Fx.Transitions.Expo.easeOut});
element.addEvent('mouseenter', function(){
lifx.start({'opacity': 1});
});
element.addEvent('mouseleave', function(){
lifx.start({'opacity': 0.8});
});
});
}
});
});

report abuse
vote down
vote up
Bruno
Dezember 15, 2007
Stimmen: +0

Habe das gleiche Problem wie Markus. Alles funktioniert, nur die Positionen (Ausrichtung) der Meneintrge bekomme ich nicht hin. Gibt es schon einen L줶sungsansatz?

report abuse
vote down
vote up
kurt
Januar 28, 2008
Stimmen: +0

IE6 gibt bei mir folgenden Fehler:
Zeile: 3
Zeichen: 1
Fehler: 'document.getElemementByld(...)' ist Null oder kein Objekt
Code: 0

report abuse
vote down
vote up
FIKTOR
Februar 04, 2008
Stimmen: +0

Dankeschön für dieses einfaches Tuttorial war echt alles Simpel erklärt.

Danke für deine Zeit und Mühe

MfG FIKTOR

report abuse
vote down
vote up
Sascha
Februar 05, 2008
Stimmen: +0

Hi Leute,

hat denn schon einer eine Lsung fr die horizontale Ausrichtung?
Hab mich die letzten Tage dumm und d漤mlich probiert und komme einfach nicht weiter.

PLEASE HELP ME

report abuse
vote down
vote up
Tom
Februar 05, 2008
Stimmen: +0

Hallo Sascha,
sollte nicht so wild sein, allerdings relaunchen wir momentan zwei groe Seiten und die Zeit ist etwas knapp. Sobald ich etwas Luft habe mache ich mal ein CSS f߼r ein horizontales Men.

report abuse
vote down
vote up
Sascha
Februar 06, 2008
Stimmen: +0

Dank Dir schonmal im Voraus...

Gru
Sascha

report abuse
vote down
vote up
Markus
Februar 12, 2008
Stimmen: +0

Hi,

das Tut ist super, wenn ich es dann mal hinbekommen würde.

ICh habe das Tut jetzt 10 mal durch und finde den Fehler nicht!!!!

Im Rhuk Template funktioniert das Aufklappen des Menüs, versuche ich es jedoch mit den Mootools Effekten, keine Chance.

Meine Kentnisse sind nicht die schlechtesten aber irgendwas funzt hier nicht. Cache geleert, zig mal die .js Dateien neu eingebunden etc. nicht hilft.

Kann nicht mal einer sich die Mühe machen, dass ganze für eine horizontale Darstellung zu erklären?!? BITTE!

Ich bin am verzweifeln!

report abuse
vote down
vote up
Markus
Februar 12, 2008
Stimmen: +3

Hi,

das Tut ist super, wenn ich es dann mal hinbekommen würde.

ICh habe das Tut jetzt 10 mal durch und finde den Fehler nicht!!!!

Im Rhuk Template funktioniert das Aufklappen des Menüs, versuche ich es jedoch mit den Mootools Effekten, keine Chance.

Meine Kentnisse sind nicht die schlechtesten aber irgendwas funzt hier nicht. Cache geleert, zig mal die .js Dateien neu eingebunden etc. nicht hilft.

Kann nicht mal einer sich die Mühe machen, dass ganze für eine horizontale Darstellung zu erklären?!? BITTE!

Ich bin am verzweifeln!


Noch mal ich!

Also, es funzt nicht bei der vertikalen sowie horizontalen Darstellung. Das Aufklappen ist ja nur CSS abhängig!

GRuß
MArkus

report abuse
vote down
vote up
Tom
Februar 16, 2008
Stimmen: +0

Hallo Markus,
kannst Du mir einen Link zu Deinem Problemfall posten? Ich denke so kriegen wir das am schnellsten in den Griff.

report abuse
vote down
vote up
Chris
März 19, 2008
Stimmen: +1

Hi,

Versuche verzweifelt das css fr ein vertikales Men umzubauen. Leider ohne Erfolg :-( K켶nnte mir vielleicht wer weiterhelfen?brigends das Tut ist spitze!!!!

mfg
Chris

report abuse
vote down
vote up
Chris
März 19, 2008
Stimmen: +0

Meinte natürlich, das ich ein Horizontales Menü bauen will!!!

report abuse
vote down
vote up
Rhiasash
März 20, 2008
Stimmen: +0

Vielen Dank für das super Tutorial! Leider klappen bei mir die Untermenüs unabhängig vom Webbrowser nur sehr langsam oder Überhaupt nicht auf. Woran könnte das liegen?

report abuse
vote down
vote up
Akardian
Dezember 13, 2008
Stimmen: +1

Hallo und herzlichen Dank einmal für dieses tolle Tutorial. Leider habe ich ein Problem mit dem ganzen. Ich wollte es in beez Template einbauen und das Menü erweitert sich leider nicht nach rechts sondern nach unten und verschwindet hinter den anderen Menüs.. weiß jemand vielleicht Rat?

report abuse
vote down
vote up
Petra
September 10, 2009
Stimmen: +1

Hallo,
kann mich den anderen nur anschließen, ein tolles Tut.
Leider habe ich aber das gleich Problem wie Markus:
Im Rhuk Template funktioniert das Aufklappen des Menüs, versuche ich es jedoch mit den Mootools Effekten, keine Chance.
Beim IE funktioniert es mit Mootools gar nicht. Fehler scheint in beim jsm.js bei diesem Befehl zu sein
var fx = new Fx.Styles(el, {duration:200, wait:false, transition: Fx.Transitions.Expo.easeOut});


Meldet dann ein Fehler in der Mootools zeile 2908. Da steht:
window.fireEvent('domready');


Kann mir einer von euch helfen.

Viele Grüße
Petra

report abuse
vote down
vote up
Stephan Wergles
November 09, 2009
Stimmen: +0

Hallo zusammen,

ich weiß nich ob ich einfach zu blöd bin aber bei mir is nix von "schön ein- und ausblenden". Hab das gefühl das auf das eingebundene mootools framework und das javascript nicht zugegriffen wird?!? Was mach ich falsch????

Viele Grüße
Stephan

report abuse
vote down
vote up
treborxy
November 26, 2009
Stimmen: +1

@ Petra / Stephan: vielleicht geht es euch wie mir, und ihr habt die inzwischen aktuelle mootools-version 1.24 runtergeladen - die ist aber nicht abwärtskompatibel zum genannten jsm.js - Code. Lösung: mootools-version 1.1.2 beutzen, dann gehts.
http://mootools.net/download/version/1.1.2

Gruß

report abuse
vote down
vote up
pemue
Februar 27, 2010
Stimmen: +1

Hey und Hallo zusammen,
ersteinmal ein großes kompliment an Tom für dieses wirklich sehr ausführliche HowTo, auch wenn es schon einige Jahre "alt" ist, bin ich sehr gut damit zurecht gekommen.

Ein Problem habe ich jedoch noch.
Und zwar ist bei meinem Template anscheinend der Background der Menüpnkte transparent, somit kann man die Titel der Submenues sehr schlecht lesen.

Da ich mich leider sehr schlecht mit CSS auskenne, wollte ich wenigstens erstmal fragen an welcher Stelle ich dieses Beheben kann und den Menüpunkten (welche sich ausklappen) eine Hintergrundfarbe geben kann (es kann auch ein kleines gif oder png bild sein).

Ich habe ein vertikales Menü.

Ich hoffe mir kann geholfen werden, falls jemand dieses Phänomen nachvollziehen möchte, kann er es sich gerne einmal auf www.aresdata.de/cms anschauen.

Die Seite ist noch im Aufbau, und das Menü habe ich erstmal nur teilweise eingesetzt (das JSM ist also links unten in der Kategorie "Extended Menu" zu finden).


Vielen Dank schonmal für jede Hilfe.

report abuse
vote down
vote up
pemue
März 22, 2010
Stimmen: +0

Ich habe eine Lösung meines Problems gefunden.

In der jsm.js datei habe ich folgende Zeile hinzugefügt:
el.setStyle('background', 'url(../images/hintergrund.gif) repeat-x #EEE');

Diese habe ich nach der 10. zeile (also "el.setStyle('display', 'none');") eingefügt.

Vielleicht hilft es ja jemandem der auf der Suche nach dieser Problemlösung ist.

LG
pemue

report abuse
vote down
vote up
pemue
April 14, 2010
Stimmen: +0

Ich mal wieder smilies/wink.gif

Ich habe das Problem das im IE8 die ausklapp menüs "hinter einem wrapper verschwinden".
Ich lasse also z.B. ein PDF-file im Wrapper anzeigen, und wenn dem so ist und ich über mein menü fahre, dann werden die ausgeklappten nur soweit angezeigt bis dahin wo der wrapper anfängt.

Kann mir vielleicht jemand hierzu einen lösungsanatz oder ähnliches geben?

thx

report abuse
vote down
vote up
Heiko
Januar 19, 2011
Stimmen: +0

Ich bin begeistert!
Als Joomla-Neuling bin ich auf genau solche Tutorials angewiesen. So lerne ich nicht nur den Umgang mit Joomla, sondern kann auch mein mageres Grundwissen zum Thema css aufbessern.

Und wenn eine Anleitung so klar und deutlich geschrieben ist und auch noch diesen gewissen Witz bietet, macht das Ganze richtig Spaß!

Vielen Dank für diese Arbeit!!

report abuse
vote down
vote up

Kommentar schreiben
 
  kleiner | groesser
 

security image
Bitte den folgenden Code eintragen


busy
 

B01 realisiert zeitgenössische Online-Kommunikationsmittel.
Wir sind spezialisiert auf OSCMS und unterstützen unsere Kunden vom Konzept bis zum Launch mit Erfahrung und exklusiven Komponenten zur Umsetzung von Communitys, Shops, Portalen und Webseiten.

B01 Kunden

Unsere Ideen, unsere Produkte, unsere Kunden.

B01 empfiehlt:

ZOO Content Construktion Kit

ZOO CCK

Virtuemart Shopsystem

E-Commerce

Joomla SEO

SEO

Joomla Content Editor

Content Editor

Joomla Social Networking

JomSocial