Thread Dynamisches Menü mit sichtbarem selektiertem Submenü (Kein JS, kein CSS, nur HTML) (12 answers)
Opened by GwenDragon at 2009-01-16 17:18

GwenDragon
 2009-01-16 17:18
#118094 #118094
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
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 CPAN:HTML::Treebuilder und CPAN: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 CPAN:HTML::Template::Compiled eingebunden werden.

folgendes Menü als Beispiel:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Home
Projekte
Perl
CGI
Module
Javascript
Übersicht
Dynamische Menüs
Entwickeln
Theorie
Tools
Verwaltung
Testing
Codegenerierung
Kontakt
Impressum


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):
Code: (dl )
1
2
3
4
5
6
7
8
9
Home
Projekte
Perl
CGI
MODULE
Javascript
Entwickeln
Kontakt
Impressum

View full thread Dynamisches Menü mit sichtbarem selektiertem Submenü (Kein JS, kein CSS, nur HTML)