[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • Klasse nav42 - eine erweiterte rex_navigation
Seite 1 von 5

Klasse nav42 - eine erweiterte rex_navigation

Verfasst: 16. Apr 2013, 14:01
von RexDude
UPDATE: 18.11.2015
Die Klasse nav42 ist nun in das Navigation Factory Addon eingeflossen :)

Download: http://www.redaxo.org/de/download/addons/?addon_id=1255
(oder über Installer)

Kommentare/Diskussion hier: http://www.redaxo.org/de/forum/addons-f ... 20770.html

Re: Vorstellung der Klasse rex_navigation_ex

Verfasst: 16. Apr 2013, 14:13
von ralf.schlott
Ganz tolle Sache. Nur den Aufruf kapier ich einfach nicht... Kann man nicht die Klassen einfach austauschen?

Re: Vorstellung der Klasse rex_navigation_ex

Verfasst: 16. Apr 2013, 14:17
von Peter.Bickel
Ich vermute, dass Rudi das erweitert hat, nicht ersetzt. Habs aber noch nicht genauer verglichen.
Und man verliert durchs Ersetzen die leichte Update-Fähigkeit von Redaxo.

Re: Vorstellung der Klasse rex_navigation_ex

Verfasst: 16. Apr 2013, 14:20
von RexDude
Du meinst patchen? :P Das wollte ich ja gerade damit vermeiden...

Die Einbindung ist doch ganz einfach:

1. Klasse ins Template packen irgendwo vor dem <html> tag
2. rex_navigation_ex::getMenuByLevel(...) und/oder rex_navigation_ex::getMenuByCategory(...) nutzen

@peter: genau :)

Re: Vorstellung der Klasse rex_navigation_ex

Verfasst: 16. Apr 2013, 16:27
von ralf.schlott
Super klasse. Für einen relativen Programmierlegastheniker zuerst schwer zu verstehen.

Für alle, die es auch nicht sofort verstehen, hier meine Einbindung:

1. Template mit dem Inhalt von rex_navigation_ex angelegt.
2. Im Haupttemplate ganz oben eingebunden: REX_TEMPLATE[4].
3. Alle Anpassungen im Template rex_navigation_ex machen.
4. Einbindung der Navigation mit

Code: Alles auswählen

<?php echo rex_navigation_ex::getMenuByCategory(0,3,TRUE,TRUE) ?>
Dank RexDude hier noch ein Trick für die Beeinflussung der ul-Klasse.
Zeile 53

Code: Alles auswählen

if (count($navObj) > 0) {
$return .= '<ul>';
}
ändern in z.B.

Code: Alles auswählen

if (count($navObj) > 0) {
	if ($depth == 0) {
		$return .= '<ul class="sf-menu" id="nav">';
	} else {
		$return .= '<ul>';	
	}
}
Danke für diese neue flexible Methode!

Ralf

Re: Vorstellung der Klasse rex_navigation_ex

Verfasst: 21. Apr 2013, 21:21
von Joachim.Dörr
Addcode würde sich alternativ zum includen der Classe eignen: https://github.com/joachimdoerr/addcode

lg
Joachim

Re: Vorstellung der Klasse rex_navigation_ex

Verfasst: 21. Apr 2013, 21:37
von RexDude
@joachim: danke für den hinweis :)

@ingo: kannst du mir bitte noch genau aufzeigen, wo ich in meinem code redundanz drin hab und das dry prinzip missachte?

Re: Vorstellung der Klasse rex_navigation_ex

Verfasst: 22. Apr 2013, 18:53
von Peter.Bickel
Trotzdem äußert sich Professionalität u.a. auch in einer angemessenen und respektvollen Diskussionskultur.

Lg, Peter.

Re: Vorstellung der Klasse rex_navigation_ex

Verfasst: 11. Sep 2013, 18:17
von jorgos
Hallo zusammen,

jetzt muss mir nochmal einer helfen.
Wenn ich die Klasse über
include(....) einbinde und folgendes aufrufe
<?php echo rex_navigation_ex::getMenuByCategory(0,3,TRUE,TRUE) ?>

passiert bei mir nix. Da bricht alles komplett zusammen.

Hat jemand eine Idee?

Vielen Dank im Voraus

Jorgos

Re: Vorstellung der Klasse rex_navigation_ex

Verfasst: 11. Sep 2013, 18:42
von Peter.Bickel
Hast Du mal 'nen Link oder den genauen Wortlaut der Fehlermeldung?
Redaxo-Version? PHP-Version?

Re: Klasse rex_navigation42 (ehemals rex_navigation_ex)

Verfasst: 21. Sep 2013, 19:35
von RexDude
Zur Info:

Klasse ist jetzt Bestandteil von SEO42 (ab 2.1.0). Der erste Beitrag dieses Threads wurde dahingehend abgeändert. Desweiteren wurden die Methoden `getMenuByLevel()` in `getNavigationByLevel()` und `getMenuByCategory()` in `getNavigationByCategory()` umbenannt.

Wenn man SEO42 nutzt braucht man nichts weiter ins sein Template einzufügen. Erst wenn man spezielle Geschichten machen will, muss man seine eigene Klasse ableiten und diese dann in ein Template packen. Genaueres Vorgehen hab ich im ersten Beitrag dieses Threads geschrieben.

Re: Klasse nav42 - eine erweiterte rex_navigation

Verfasst: 22. Okt 2013, 14:22
von RexDude
Und noch ein Update:
- Klasse heisst jetzt nav42
- Es wurden noch einige zusätzliche Parameter ergänzt. Damit sollten sich so ziemlich alle Anforderungen, die in der Praxis vorkommen abdecken lassen, ohne das man die Klasse überschreiben braucht. Folgendes geht jetzt:

Alle Features
https://github.com/RexDude/seo42#featur ... asse-nav42

Vollständiges Codebeispiel

Code: Alles auswählen

// ausgabe der navigation mit startkategorie id = 42
// 2 level tief
// alle unterebenen werden angezeigt
// offline artikel werden nicht angezeigt
// startartikel der website wird nicht ausgeblendet
// li klasse für selektierte menüpunkte: "current"
// erste ul id: "nav"
// erste ul klasse "sf-menu"
// li id aus metainfo feld: "cat_css_id"
// li klasse aus metainfo feld: "cat_css_class"
// php funktion die den link zurückgibt (hier als beispiel: erste ebene ohne verlinkung)
echo nav42::getNavigationByCategory(42, 2, true, true, false, "current", "nav", "sf-menu", "cat_css_id", "cat_css_class", function($cat, $depth) {
    if ($depth == 1) {
        return htmlspecialchars($cat->getName());
    } else {
        return '<a href="' . $cat->getUrl() . '">' . htmlspecialchars($cat->getName()) . '</a>';
    }
}); 
EDIT: das gleiche gibts natürlich auch für getNavigationByLevel()

Re: Klasse nav42 - eine erweiterte rex_navigation

Verfasst: 23. Okt 2013, 10:31
von Peter.Bickel
Prima, danke!
Da dürften wirklich kaum noch Wünsche offen bleiben.

Re: Klasse nav42 - eine erweiterte rex_navigation

Verfasst: 25. Okt 2013, 10:22
von RexDude
Peter.Bickel hat geschrieben:Da dürften wirklich kaum noch Wünsche offen bleiben.
nav42::getLangNavigation() fehlt noch :lol:

EDIT: Ist jetzt drin ;)

Re: Klasse nav42 - eine erweiterte rex_navigation

Verfasst: 25. Feb 2014, 00:48
von ralf.schlott
Frage hierzu:

Gibt es irgendwo etwas zur Breadcrumb-Ausgabe?

Re: Klasse nav42 - eine erweiterte rex_navigation

Verfasst: 25. Feb 2014, 11:02
von RexDude
Ist geplannt, aber noch nicht realisiert.

Re: Klasse nav42 - eine erweiterte rex_navigation

Verfasst: 25. Feb 2014, 14:06
von ralf.schlott
Subba! Bin gespannt.

Re: Klasse nav42 - eine erweiterte rex_navigation

Verfasst: 25. Feb 2014, 15:17
von webghost
Dann schmeiss ich gleich noch eine Idee mit rein 8) Ein Breadcrumb welches nicht nur den Pfad darstellt, sondern gleich noch die Geschwister-Kategorien der jeweiligen Ebene enthält. Etwa um ein Breadcrumb mit Dropdown zu realisieren.

Muss demnächst sowas umsetzen, weiss noch nicht ganz wie ich es mache, aber wahrscheinlich wird etwas in der Art rauskommen

Code: Alles auswählen

    <ul>
        <li>Start</li>
        <li>
            Level1-1
            <ul>
                <li>Level1-2</li>
                <li>Level1-3</li>
                <li>Level1-4</li>
            </ul>
        </li>
        <li>
            Level2-1
            <ul>
                <li>...</li>
                <li>...</li>
                <li>...</li>
            </ul>
        </li>
    </ul>

Re: Klasse nav42 - eine erweiterte rex_navigation

Verfasst: 25. Feb 2014, 15:21
von RexDude
Eine flexible seo42::getBreadcrumbNavigation() wäre halt cool, die man für verschiedene Aforderungen nutzen kann :D

Re: Klasse nav42 - eine erweiterte rex_navigation

Verfasst: 25. Feb 2014, 15:34
von webghost
ja klar, welche aber auch sowas kann, also sowas per parameter aktivert werden kann :wink:

Noch was anderes, in nav42 gibt es keine Möglichkeit Kategorien die Kinder haben zu markieren? sowas wie <li class="hasChild">...

Re: Klasse nav42 - eine erweiterte rex_navigation

Verfasst: 25. Feb 2014, 15:38
von RexDude
Du hast eigentlich nur einfluß auf den Link, siehe letzten Parameter.
Vielleicht kannst du aber auch Parameter $liClassFromMetaField irgendwie nutzen um deine CSS Klasse einzuschleusen.
Und per jQuery könnte man auch solche Klassen vollautomatisch einbauen.

Re: Klasse nav42 - eine erweiterte rex_navigation

Verfasst: 25. Feb 2014, 15:47
von webghost
muss ich dann noch genau anschauen, danke. Bei meiner selbst geschriebenen Navigation habe ich eben das hasChild drin um direkt per jQuery darauf zugreifen zu können, etwa für Klick statt hover. Aber eigentlich kann ich ja auch mit jQuery schauen ob da noch ein ul drin ist.

Re: Klasse nav42 - eine erweiterte rex_navigation

Verfasst: 25. Feb 2014, 15:48
von RexDude
Aber eigentlich kann ich ja auch mit jQuery schauen ob da noch ein ul drin ist.
Eben :D

Re: Klasse nav42 - eine erweiterte rex_navigation

Verfasst: 24. Mär 2014, 12:08
von darwin
Hi RexDude,
hab mir mal erlaubt die nav42 etwas zu erweitern.
Zum testen freigegeben:

nav42extend

grz Chris

Re: Klasse nav42 - eine erweiterte rex_navigation

Verfasst: 25. Mär 2014, 08:37
von RexDude
Coole Sache Chris :)