php include und trotzdem individuelle Funktionen
#1
Hallo zusammen

Da ich momentan eine grössere Homepage aufbaue, komme ich zwangsläufig nicht um php includes herum. Nun habe ich aber ein Problem.

Ich möchte das Menü includen. Nun soll aber bei jeder Rubrik zur Vereinfachung der Navigation immer die angewählte Rubrik und Unterrubrik fett angezeigt werden. Wie kriege ich das hin wenn ich das nicht auf jeder einzelnen Seite einstellen möchte, sondern eben die Seite dynamisch gestalten möchte?

Ich hoffe ihr versteht was ich meine.

Cloverleaf
Zitieren
#2
Hi,

wenn Du dein Menü so gestaltest das Du die Menüitems z.B. in einer Schleife durchlaufen kannst, und dann jenen Menüeintrag auf fett stylst der dem der Seite entspricht, ist das leicht zu lösen.

Du könntest die Menüeinträge z.B. in einer Datei ablegen

Code:
[B]MENÜ-ID|MENUE_LINK|MENUE_TEXT[/B]
1|?seite=index|Startseite
2|?seite=forum|Forum
usw.

Wird jetzt index.php?seite=forum aufgerufen hat der Link die MENÜ-ID 2 die Du per CSS/Programmlogik fett ausgeben lässt.

Cu Helmut
Zitieren
#3
Hmm. Hab mir das jetzt ca. 10mal durchgelesen und verstehs nicht so ganz. *schäm*

Ich lege den von dir geposteten Code in z.B. einer Datei .dat ab, richtig?
Und was genau definiere ich dann im CSS-File und in der entsprechenden Datei dass das was ich will fett ist? Weil das ist ja auf jeder Seite wieder anders.

Diese Datei nehme ich dann auch per include rein? Ein Beispiel wäre hilfreich, kanns mir nicht so gut vorstellen.

Es geht um folgende Seite: http://kc-web.ch/krapf/stinah (Links funktionieren absichtlich noch nicht. Wenn man jetzt z.B. auf News klicken würde, sollen oben "home" und links "news" fett sein.

Danke schon im Voraus für deine Hilfe!
Zitieren
#4
Hi,

Zitat:Hmm. Hab mir das jetzt ca. 10mal durchgelesen und verstehs nicht so ganz. *schäm*
...ich vermutete es Wink

Das ganze geht auch etwas weiter in die Materie als "schnödes" includen von ein paar Dateien. Ihr sind einige Zeilen PHP Code nötig... und warscheinlich auch ein etwas anders geartetes Homepagegesamtkonzept (vom Techn Aufbau her). Das Includen von Contentdateien aller Art ist meist auch eine Behelfskrücke die auch Grenzen hat, und wenn man nicht aufpasst eine Sicherheitslücke sein kann.

Zitat:Diese Datei nehme ich dann auch per include rein? Ein Beispiel wäre hilfreich, kanns mir nicht so gut vorstellen.

Nein hier wird mal nichts includet, zumindest nicht direkt. Der Idealfall (zumindest aus meiner Sicht) sieht etwa so aus:
  • Deine Webseite besteht aus einzelnen Dateien, die ohne die includiererei auskommen, so z.B. index.php, news.php usw.
  • Um die Sache Pflegeleicht zu halten wird das Layout der Seite mittels Header & Footer Dateien realisiert
  • Die Funktionen kommen in eine extra/mehrere Datei(en) und können in jeder Datei per Funktionsaufruf geholt werden.


Eine solche Seite würde im einfachsten Fall so aussehen:

PHP-Code:
<?php

include("includes/globale_funct.inc.php");

// Seitenheader fuer alle Seiten bis Body
// Wert 1 = Seitentitel, 
// Wert 2 = Zusaetzliche Headerdaten (z.B. Metarefresh.)
// Wert 3 = Zusaetzliche Headerdaten (z.B. Javascript.)

echo globaler_header("Startseite"'''');
?>

<h1>Seiteninhalte</h1>


<?php
// Seitenfooter fuer alle Seiten
echo globaler_footer();
?>

Das was bei <h1>Seiteninhalte</h1> steht kann dann alles mögliche sein, "normaler" HTML Code oder Content aus Datenbankabfragen.

Die Funktionen liefert die Datei globale_funct.inc.php auf Abruf zu. Das könnte das Menü sein oder vieles andere. Diese von mir vorgestellte vorgehensweise ist zumindest sehr gut erweiterbar und auch Pflegeleicht. Dieerste einrichtung macht etwas mehr Arbeit und setzt PHP Kenntnisse vorraus die über das Includen hinaus gehen.

Das Menü könnte man dann in etwa so bauen:

Menüdatei:


Code:
1|home|Homepage|
2|news|News|
3|forum|Forum|

PHP Code
PHP-Code:
<?php

if(isset($_GET['los'])) { 
$los preg_replace ("/[^0-9a-zA-Z]/""",  $_GET['los']);
}

if(!isset(
$los) || $los == '') {
$los 'home';
}

// Datei lesen
$inhalte file("menuedaten.dat");

foreach (
$inhalte as $value) {
$zeile explode("|",$value);
if (
$los == $zeile[1]) {
echo 
"<a href=\"index.php?los=$zeile[1]\"><b>$zeile[2]</b></a><br>\n";
} else {
echo 
"<a href=\"index.php?los=$zeile[1]\">$zeile[2]</a><br>\n";
}
}

?>

Demo
http://inspire-net.de/phpweb/menuedemo/

Seh ich da wen schwitzen? ;-)

Cu Helmut
Zitieren
#5
Ooooh, ich liebe solche "Basteleien". Big Grin

Habe ja beruflich immer mal wieder mit Scripts zu tun. Mittlerweile kann ich sie "lesen" zu einem grossen Teil, aber (noch) nicht selbst im richtigen Aufbau konzipieren.

Das was du mir erklärst ist genau das was ich suche. Habe die Beispielseite die ich oben genannt habe einfach mal in html erstellt, dass ich den Aufbau nachher beibehalten kann.

Ich hoffe ich kriege das hin - sieht gar nicht so einfach aus. Aber irgendwann muss ich damit anfangen wenn ichs lernen will. *lach* Darf ich wieder fragen wenn ich nicht weiterkomme? *scheuguck* Würde am liebsten gleich anfangen, aber leider reichts zeitlich erst morgen wieder..

Ps. Danke auch für die Demo! Das funktioniert dann aber auch in meinem gegebenen Fall, dass zwei miteinander fett sind, ist das richtig? (Hauptrubrik und Unterrubrik) Ich denke, dass ich nun auch begriffen habe wie das mit dem Menü funktioniert. Jetzt muss ich aber erstmal den richtigen Seitenaufbau machen bevor ich ans Menü denke. Wink Cool - dann kriegt die Stiftung Tiere in Not / animal help doch endlich eine technisch bessere Seite. Smile

Schwitzen? Neee, ich freue mich schon endlich mal damit anzufangen. Big Grin Wollte ich schon lange! Das Schwitzen kommt dann erst wenn die ganzen php Fehler on line xy auftreten. *grins*

Was steht nochmal in der Datei globale_funct.inc.php? Und was hast du im CSS gemacht?
Zitieren
#6
Hi,

Zitat:Was steht nochmal in der Datei globale_funct.inc.php?
...ähm ja... da sind die eigentlichen "Schwitzkästen" drin MrGreen

Mein kleines Beispielscript für die Demo da ist ein angepasster, winziger Teil einer komplexeren Geschichte.

In der Datei bei mir sind so Routinen drin für die Datenbankanbindung, zum Seitenweisen blättern, ein Templateparser für HTML Templates, Header und Footer Ausgaben... Alles das halt was man in einer Programmiersauna so zum schwitzen braucht...;-)

Das alles hier zu erklären würde zu weit führen. Jürgen hat ja eigentlich keine PHP/PERL Programmierung Forenbereiche. Falls Du dahingehend mehr wissen willst solltest Du vielleicht dem Link in meiner Signatur folgen. Bei mir im Forum findest Du einige Sachen die deinen Bereich betreffen.

Zitat:Und was hast du im CSS gemacht?
...in der Demo garnix, ich hab die aktiven Links einfach auf <b>fett</b> gesetzt. Natürlich könnte/sollte man dafür auch eine CSS Klasse zuweisen.

Zitat:Das funktioniert dann aber auch in meinem gegebenen Fall, dass zwei miteinander fett sind, ist das richtig? (Hauptrubrik und Unterrubrik)
Das Beispielscript kann nur eine Rubrik fett darstellen. Für Deine Haupt und Unterrubrik Geschichte müsste man noch einiges mehr tun.

Zitat:Ich denke, dass ich nun auch begriffen habe wie das mit dem Menü funktioniert.
Freu dich nicht zu früh, es gibt da viele Wege die man gehen kann. Spätestens wenn das Kapitel MySQL Datenbanken ins Spiel kommt (Textdateien sind ja eher aus der Mode, bzw. nur für kleinere Geschichten gescheit händelbar) erhälst Du Möglichkeiten an Die Du jetzt noch nicht im Traum denkst.

Cu Helmut
Zitieren
#7
Mit Datenbanken kenne ich mich aus und kenne auch deren Möglichkeiten. Wink (oracle, mysql) Aber ich werde es in diesem Fall mit eine .dat-Datei lösen müssen. Dafür habe ich allerdings ein fertiges Script verwendet bisher - cms cutephp.

Was müsste ich denn machen, dass zwei Rubriken fett dargestellt werden können?

Mir gehts vor allem darum, den Seitenaufbau dynamisch gestalten zu können, dass der administrative Aufwand für mich kleiner wird. Der Rest wird noch vom CMS übernommen - wenn ich den Grössenwahn kriege kann ich das auch selbst machen. Wink Aber erstmal Schwergewicht dynamische Seite mit CMS und dann habe ich viel Zeit und kann immernoch das fertige CMS durch ein eigenes ersetzen. Wink

Kann man diese globalen Funktionen von irgendwo übernehmen? Oder hast du ein kleines Beispiel? *dortnichtsodrauskomme*
Zitieren
#8
So, habe mal das Menü geschafft. Smile *strahl* Jetzt muss ich bloss noch ausprobieren wie ich die Seiten verlinke. Wink

http://kc-web.ch/krapf/stinah/index.php?los=home

Allerdings hab ich header und footer per include hereingenommen, weil ich ja keine Funktionen definiert habe und deshalb auch die Datei global_functions weggelassen habe.
Zitieren
#9
Helmuuut? *liebguck*

Könntest du mir erklären wie ich die Seiten nun verlinke? Bzw. dass wenn ich auf einen anderen Link klicke auch eine andere Seite erscheint? *bisschenblödbin*

Danke schon im Voraus für deine Hilfe!

Cloverleaf
Zitieren
#10
Hi,

mit dem includen hast Du gerade den Weg gewählt der nicht so optimal ist.

Wenn Du hier eine neue Seite aufrufen willst musst Du diese im Link natürlich auch angeben. also z.B. news.php. Das hätte auch gereicht für den Fett parameter der Links.

Vielleicht komm ich nochmal dazu eine entsprechende Demo bereitzustellen. Das erklärt dann die Sache besser.

Cu Helmut
Zitieren



Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  2 Probleme mit PHP include benschy 1 985 31.07.2008, 19:09
Letzter Beitrag: Helmut