Klappmenü Probleme

Klappmenü Probleme

am 17.07.2006 08:42:15 von Michael Mondan

Ich würde gerne ein Klappmemü mit php verwirkliches, leider komme ich da
nicht weiter.

Ich würde gerne die einzelnen Menüpunkte über require eifügen.

Kategorie1
unter1
unter2
unter3

Kategorie2
unter1
unter2
unter3


also über require/katergorie1 usw.

Dann müsste in der jeweiligen katergorie.php die Menüfunktionen ausgeführt
werden, so das eben entweder nur der
Kategorietitel ausgegeben wird oder eben alle Unterkategorien.


etwas, so, aber es funktioniert nicht so recht. Es müsste irgendwie eine
Abfrage rein, das wenn Kategorie1 aufgerufen ist,
die Unterpunkte angezeigt werden.



$menue = array();
$menue[] = array('text' => 'Kategeorie1');

$menue = array();
$menue[] = array('text' => '
' .
'
' .
'
' .
'');


Michael

Re: Klappmenü Probleme

am 17.07.2006 09:13:06 von Sebastian Wessel

Michael Modan schrieb:
> etwas, so, aber es funktioniert nicht so recht. Es müsste irgendwie eine
> Abfrage rein, das wenn Kategorie1 aufgerufen ist,
> die Unterpunkte angezeigt werden.

Sowas wie

if ($_GET['uebergebenermenuewert'] == 'kategorie1')
echo/print/require/include ...

?
Das eben in jeder Hauptmenüzeile und fertig (oder ich habs nicht
verstanden).


LG

Re: Klappmenü Probleme

am 17.07.2006 10:03:54 von do.not.REMOVETHAT

Michael Modan schrieb:

> $menue = array();
> $menue[] = array('text' => 'Kategeorie1');
>
> $menue = array();
> $menue[] = array('text' => '
' .
> '
' .
> '
' .
> '');


// $menue ist ein (leeres) Array
$menu = array();

// $menü bekommt ein Element mit dem Key "Kategorie1"
// und den Untermenüpunkten als Wert. Diesen Schritt
// Kann man für alle Untermenüs wiederholen
$menu['Kategorie1'] ='
' .
'
' .
'
' .
'');

// Und so gibt man das aus:
echo '
';

if (isset($menu['Kategorie1']) AND $foo) echo $menu['Kategorie1'];

echo '
';


....so. Und dann stellt sich die Frage, wie Du an $foo kommst....

Grüße, Matthias

Re: Klappmenü Probleme

am 17.07.2006 10:03:54 von Michael Mondan

Wo meinst du genau soll deine Zeile hin?

Michael

"Sebastian Wessel" schrieb im Newsbeitrag
news:e9fd9q$oao$1@online.de...
Michael Modan schrieb:
> etwas, so, aber es funktioniert nicht so recht. Es müsste irgendwie eine
> Abfrage rein, das wenn Kategorie1 aufgerufen ist,
> die Unterpunkte angezeigt werden.

Sowas wie

if ($_GET['uebergebenermenuewert'] == 'kategorie1')
echo/print/require/include ...

?
Das eben in jeder Hauptmenüzeile und fertig (oder ich habs nicht
verstanden).


LG

Re: Klappmenü Probleme

am 17.07.2006 10:18:21 von Michael Mondan

Die Frage ist gut, wie komme ich dann an $foo,

Michael

"Matthias P. Wuerfl" schrieb im Newsbeitrag
news:4i0ujlF1k5q2U1@individual.net...
Michael Modan schrieb:

> $menue = array();
> $menue[] = array('text' => 'Kategeorie1');
>
> $menue = array();
> $menue[] = array('text' => '
' .
> '
' .
> '
' .
> '');


// $menue ist ein (leeres) Array
$menu = array();

// $menü bekommt ein Element mit dem Key "Kategorie1"
// und den Untermenüpunkten als Wert. Diesen Schritt
// Kann man für alle Untermenüs wiederholen
$menu['Kategorie1'] ='
' .
'
' .
'
' .
'');

// Und so gibt man das aus:
echo '
';

if (isset($menu['Kategorie1']) AND $foo) echo $menu['Kategorie1'];

echo '
';


....so. Und dann stellt sich die Frage, wie Du an $foo kommst....

Grüße, Matthias

Re: Klappmenü Probleme

am 17.07.2006 10:28:30 von Tammi Muckler

Sorry das ich mich da einmische. Mich interessiert das nämlich auch.

Wenn ich das richtig verstehe, du hast für jeden Hauptmenuepunkt eine eigene
php datei.
Also theoretisch menue1.php menue2.php und in jeder Datei steht der
untenstehende Code drin!

// $menue ist ein (leeres) Array
$menu = array();

// $menü bekommt ein Element mit dem Key "Kategorie1"
// und den Untermenüpunkten als Wert. Diesen Schritt
// Kann man für alle Untermenüs wiederholen
$menu['Kategorie1'] ='
' .
'
' .
'
' .
'';
// Und so gibt man das aus:
echo '
';

if (isset($menu['Kategorie1']) AND $foo) echo $menu['Kategorie1'];

echo '
';

?>

Dann soll er über die Menuehautpseite ausgegeben werden.

ungefähr so oder

....
require/menue1.php
require/menue2.php
....


Ist das so ok?

"Matthias P. Wuerfl" schrieb im Newsbeitrag
news:4i0ujlF1k5q2U1@individual.net...
Michael Modan schrieb:

> $menue = array();
> $menue[] = array('text' => 'Kategeorie1');
>
> $menue = array();
> $menue[] = array('text' => '
' .
> '
' .
> '
' .
> '');


// $menue ist ein (leeres) Array
$menu = array();

// $menü bekommt ein Element mit dem Key "Kategorie1"
// und den Untermenüpunkten als Wert. Diesen Schritt
// Kann man für alle Untermenüs wiederholen
$menu['Kategorie1'] ='
' .
'
' .
'
' .
'');

// Und so gibt man das aus:
echo '
';

if (isset($menu['Kategorie1']) AND $foo) echo $menu['Kategorie1'];

echo '
';


....so. Und dann stellt sich die Frage, wie Du an $foo kommst....

Grüße, Matthias

Re: KlappmenüProbleme

am 17.07.2006 12:32:59 von Lorenz Haas

Hallo,

abgesehen davon, dass ich die Lösung mit eigenen Dateien für jeden
Hauptpunkt nicht gerade prickelnd finde:


// Aufbau der kategorieX.php
$main = '
';
$sub = ' ...';

echo $main;
if ($expand == true)
echo $sub;



// Aufbau der Datei, in der Du das Menü anzeigenlassen willst.
// $pos enthält die gewählte Kategorie

$expand = ($pos == 1) ? true : false;
require('kategorie1.php');

$expand = ($pos == 2) ? true : false;
require('kategorie2.php');

....



Lorenz

Re: Klappmen Probleme

am 17.07.2006 12:57:18 von Tammi Muckler

Wie würdest du es denn besser machen?


"Lorenz Haas" schrieb im Newsbeitrag
news:44bb675b$0$26254$9b4e6d93@newsread2.arcor-online.net...
Hallo,

abgesehen davon, dass ich die Lösung mit eigenen Dateien für jeden
Hauptpunkt nicht gerade prickelnd finde:


// Aufbau der kategorieX.php
$main = '
';
$sub = ' ...';

echo $main;
if ($expand == true)
echo $sub;



// Aufbau der Datei, in der Du das Menü anzeigenlassen willst.
// $pos enthält die gewählte Kategorie

$expand = ($pos == 1) ? true : false;
require('kategorie1.php');

$expand = ($pos == 2) ? true : false;
require('kategorie2.php');

....



Lorenz

Re: Klappmen Probleme

am 17.07.2006 15:19:13 von Lorenz Haas

Tammi Muckler wrote:
> Wie würdest du es denn besser machen?

Nun, eine kleine Klasse schreiben, in der die Menüpunkte in einem
multi-dimensionalen Array liegen. Eine Funktion würde daraus dann das
entsprechende HTML zusammenbasteln. Ihr kannst Du dann als Parameter den
Ober-Menüpunkt übergeben, dessen Untermenüs ausgeklappt werden sollen.

Derartige Klassen fliegen bestimmt zu Genüge im I-Net herum. Also suche Dir
am besten eine solche Klasse, schau sie Dir an, verusche sie zu verstehen,
und passe Sie Deinen Bedürfnissen an.


Ciao,
Lorenz

Re: Klappmen Probleme

am 17.07.2006 18:23:29 von do.not.REMOVETHAT

Lorenz Haas schrieb:

> Nun, eine kleine Klasse schreiben, in der die Menüpunkte in einem
> multi-dimensionalen Array liegen. Eine Funktion würde daraus dann das
> entsprechende HTML zusammenbasteln. Ihr kannst Du dann als Parameter den
> Ober-Menüpunkt übergeben, dessen Untermenüs ausgeklappt werden sollen.

Ich würde mir überlegen, was meine Anforderungen an die Website sind:

- URL-Design
- Menü-Struktur
- Wartbarkeit
- ...

....und dann strukturiert nach einer Lösung suchen (oder eine Entwerfen),
die auf meine speziellen Bedürfnisse passt. Ich halt nichts davon,
"Techniken" pauschal als Lösung für ein mehr oder weniger unbekanntes
Problem zu sehen.


Grüße, Matthias

Re: Klappmenü Probleme

am 17.07.2006 20:31:00 von do.not.REMOVETHAT

Michael Modan schrieb:

> Die Frage ist gut, wie komme ich dann an $foo,

Eben.

$foo ist die Antwort auf die Frage:

"Ist die Seite, die im Moment gerade angezeigt wird, die Hauptseite der
Kategorie1 oder eine ihrer Unterseiten?"

Also rate ich mal:

Du hast verschiedene Dateien. Das sind alles PHP-Dateien. Du machst
mittels "include" in alle PHP-Dateien das gleiche Menü rein. Das ist
zwar kein besonders eleganter Weg, aber es funktioniert gut und ist auch
für Nicht-Profis recht einfach zu häändeln.

Wenn ich richtig liege, dann machst Du folgendes:

Schreibe in der Hauptdatei von Katiegorie1 und in jede Unterdatei vor
die Zeile mit dem include des Menüs rein:

$foo = true;

....dann geht's. Wenn ich aber falsch geraten habe, dann musst Du erst
erzählen, wie die komplette Website funktioniert....

Grüße, Matthias

Re: Klappmenü Probleme

am 17.07.2006 20:57:06 von do.not.REMOVETHAT

Tammi Muckler schrieb:

> Wenn ich das richtig verstehe, du hast für jeden Hauptmenuepunkt eine eigene
> php datei.

Das wäre sehr unpraktisch.

Du musst einen Schritt zurückgehen und das Problem "Darstellung des
richtigen Menü" in die 3 Unterschritte aufteilen:

1. Wo liegen die Daten, die das festlegen, was ein "richtiges Menü" ist?
2. Wie suche ich mir die Daten zusammen?
3. Wie stelle ich sie dar?

Wenn Du den HTML-Code in den Verzeichnissen strukturiert vorliegen hast,
dann liegen die Daten in ihren entsprechenden Verzeichnissen am
geschicktesten. Dann kannst Du Teile der Website updaten/verschieben/...
Vielleicht willst Du in jedem Verzeichnis eine "menu.inc.php" haben, in
der die Menuitems drinstehen. Etwa so:

$menuitems = array(
'home' => 'Startseite',
'kontakt' => "Kontakt",
'impr' = 'Impressum',
'produkte' => 'Unsere Produkte'
);
?>

Für das Zusammensuchen der Daten brauchst Du dann eine Funktion, die Dir
anhand der übergebenen Daten (z.B. "produkte/dings") Die Menüdateien
zusammensucht und das Menü zusammenbaut. Du nimmst also "explode()" und
hast die beiden Teile "produkte" (in $parts[0]) und "dings" in $parts[1].

Das Menü der ersten Ebene zeigst Du immer an, dafür muss nix in $parts
drin sein. Du vergleichst jetzt "produkte" mit jedem Element aus
$menuitems (foreach()), und wenn Du es gefunden hast, dann guckst Du, ob
es eine "produkte.html" oder ein Unterverzeichnis "produkte" gibt. Wenn
es ein Unterverzeichnis gibt, dann öffnest Du die menu.inc.php in diesem
Verzeichnis und bindest die ein. Und so weiter und so fort.

Am Schluss solltest Du ein schönes Array haben, in dem alle benötigten
Daten drinne stehen. Das übergibst Du an eine Funktion, die Dir daraus
das Menü baut, mit allem Notwendigen, den richtigen teilbäumen
ausgeklappt, der "aktiven" Datei markiert.

Nachteil: So einfach wie das Konzept ist, so viele Fallstricke warten
auf Dich bei der Umsetzung. Deshalb teilen sich die etwas
fortgeschritterenen PHP-Programmierer in 2 Teile:

Der erste Teil nimmt irgendwas fertiges. Z.B. aus PEAR, da gibt es
alles. Ich glaube der Ulf Wendel(?) hat auch mal was schönes gemacht.
Das ist dann zwar "fertig programmiert" aber immernoch recht kompliziert
zu kapieren und einzurichten und auf die persönlichen Bedürfnisse
anzupassen.

Der zweite Teil (dazu gehöre ich) findet das alles zu kompliziert und
setzt sich eins, zwei Abende bei einem Bier hin und programmiert das
selbst. Wenn man immer die gleiche Art von Webstes zu machen hat, dann
lohnt sich das. Am Ende hat man mit wenig Code, wenig Abhängigkeiten ein
sehr performantes "Framework" mit dem man seine Websites schnell und
flexibel online bekommt.

So. Meine Frau ist gerade heimgekommen und hat Döner mitgebracht. Tschüss.

Grüße, Matthias

> Also theoretisch menue1.php menue2.php und in jeder Datei steht der
> untenstehende Code drin!
>
> > // $menue ist ein (leeres) Array
> $menu = array();
>
> // $menü bekommt ein Element mit dem Key "Kategorie1"
> // und den Untermenüpunkten als Wert. Diesen Schritt
> // Kann man für alle Untermenüs wiederholen
> $menu['Kategorie1'] ='
' .
> '
' .
> '
' .
> '';
> // Und so gibt man das aus:
> echo '
';
>
> if (isset($menu['Kategorie1']) AND $foo) echo $menu['Kategorie1'];
>
> echo '
';
>
> ?>
>
> Dann soll er über die Menuehautpseite ausgegeben werden.
>
> ungefähr so oder
>
> ...
> require/menue1.php
> require/menue2.php
> ...
>
>
> Ist das so ok?
>
> "Matthias P. Wuerfl" schrieb im Newsbeitrag
> news:4i0ujlF1k5q2U1@individual.net...
> Michael Modan schrieb:
>
>> $menue = array();
>> $menue[] = array('text' => 'Kategeorie1');
>>
>> $menue = array();
>> $menue[] = array('text' => '
' .
>> '
' .
>> '
' .
>> '');
>
>
> // $menue ist ein (leeres) Array
> $menu = array();
>
> // $menü bekommt ein Element mit dem Key "Kategorie1"
> // und den Untermenüpunkten als Wert. Diesen Schritt
> // Kann man für alle Untermenüs wiederholen
> $menu['Kategorie1'] ='
' .
> '
' .
> '
' .
> '');
>
> // Und so gibt man das aus:
> echo '
';
>
> if (isset($menu['Kategorie1']) AND $foo) echo $menu['Kategorie1'];
>
> echo '
';
>
>
> ...so. Und dann stellt sich die Frage, wie Du an $foo kommst....
>
> Grüße, Matthias
>
>