Thread Dynamisches Menü mit sichtbarem selektiertem Submenü (Kein JS, kein CSS, nur HTML)
(12 answers)
Opened by GwenDragon at 2009-01-16 17:18
Wie würdet ihr ein Menü mit Perl kreieren, das selektiert nur ein Submenü anzeigt?
Das Menü selbst kann ja aus einer verschachtelten HTML-Liste erzeugt werden Ich habe mir gedacht, das Ganze mit HTML::Treebuilder und HTML::Element zu parsen und dann bei einer aktuellen Seite den Link rauszunehmen und nur den Inhalt des Links in bold stehen zu lassen. Testskript: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 #!/usr/bin/perl $| = 1; use strict; use warnings; use HTML::TreeBuilder; my $url = '/intern/proj'; # URL des ausgewählten Menüeintrags, bzw. geladene Webseite my $tree = HTML::TreeBuilder->new; # empty tree $tree->implicit_tags(0); $tree->store_comments(1); $tree->parse_file(*DATA); foreach my $t ($tree->look_down( '_tag' , 'a' )) { if ($url eq $t->attr('href')) { my $s = HTML::Element->new('b', 'class' => 'selected'); $s->push_content($t->content_list); $t->replace_with( $s ); last; } } my $html = $tree->as_HTML; $html =~ s/<html>//g; $html =~ s/<\/html>//g; print $html; $tree->delete; 1; __DATA__ <!-- ul ist immer / --> <ul> <li><a href="/">Startseite</a></li> <li><a href="/intern/proj">Projekte</a> <ul> <li>Perl</li> <li>PHP <ul> <li><a href="/php/templating_all.html">Templating</a></li> <li>Module</li> <li>CGI-Test</li> </ul> </li> <li>Blog</li> </ul> </li> <li>Devshed</li> <li>Kontakt</li> </ul> Dann könnte diese Liste auf der eigentlichen Seite per Templatesystem wie HTML::Template::Compiled eingebunden werden. folgendes Menü als Beispiel: Code: (dl
)
1 Home Nur wie traversiere ich den Baum des Menüs und lösche alle unnötigen Submenüs raus? Beispiel als gewählter Menüpunkt Also dass es nur so aussieht (Groß bei selektiertem Menüpunkt): |