ich bastel grad mal wieder an dieser Seite http://delectare.square7.ch/ und hab dafür extra ein paar PHP Grundlagen gelernt. Nebenbei noch ganz ausversehen CSS.
Momentan häng ich mal wieder am Menü fest. Ich hab da ein Verzeichnis festgelegt, wo die Texte für die Seite als html vorliegen. Dieses Verzeichnis hab ich in eine menu.php eingebunden und mit explode() auflisten lassen. Soweit ich das verstanden hab, speichert explode das ganze als Array, stimmt das? Möchte es nämlich so einrichten, dass Dateien mit dem Namen „Index“; „Start“; „Home“ usw. an 1. Stelle im Menü stehen. Die anderen Punkte sind egal.
Hätte gedacht das ginge über eine if-Anweisung. Vom konzept her:
if($filename == "Index")
{
Und da hackts schon. xD
menu.php sieht momentan so aus:
[code]Navigation
<?php
/* Directory for your content files */
$dir = "sites/";
/* Open this directory */
$handle=opendir($dir);
while ($file = readdir ($handle))
{
if ($file != "." && $file != "..")
{
/* Remove file extension */
$filename = explode(".",$file);
$filename = $filename[sizeof($filename)-2];
/* Show link to site */
echo '
';
}
}
/* Close the directory */
closedir($handle);
?>[/code]
Im übrigen frag ich mich grade, wie ich das Menü dazu bringe die verlinkten Seiten in der index.php anzuzeigen. Also ich klicke auf einen Menüpunkt, und dann wird der Text dazu im Textbereich des Templates angezeigt. Geht das mit iframe oder gibt es dafür eine coole PHP Funktion?
Vielen Dank schonmal.
P.S.: Das ganze ist fast sowas wie ne eigenständige Webanwendung. Die Idee ist, dass man in einem Schreibprogramm (am besten html) einen Text schreibt und formatiert und dann einfach hochlädt. Das Programm erzeugt aus den Dateinamen Menüpunkte und zeigt den Inhalt an. Und man kann Themes einbinden. Hab ich mir als mein erstes Projekt vorgestellt, damit ich mehr über PHP lerne. Ausserdem hab ich kein CMS gefunden, das so arbeitet.
?
[In den Dateinamen dürfen dann keine Punkte vorkommen.]
Für das zweite Problem gibts auch eine Lösung. GET - Parameter.
Die Url sieht dann zum beispiel so aus example.com/?seite=impressum
das “impressum” kannst du dir so holen:
wie du das dann verarbeitest ist deine sache, du könntest ja dann die datei impressum.html einbinden [mit include() ]. Vorsicht aber, die Variable könnte böse Inhalte haben. Also zuerst absichern…
Die Dateinamen werden sowieso automatisch gekürzt und weitergegeben. Wenn ich jetzt aber das mit dem $filename = $filename[0] andwende, dann erscheint nur noch ein „i“ als Linkname. Anscheinend wird jeder Buchstabe einzeln gelistet und ich versteh nicht warum.
Ach.
Korrigiert mich, wenn ich falsch liege:
explode zerlegt den Dateinamen in einzelne Buchstaben. Daher zeigt er mir ein “i” an. Also hab ich mir jetzt gedacht, dass man mit implode() diese Liste wieder zusammensetzen könnte. Theoretisch. Wenn’s jetzt noch in der Praxis funktionieren würde, wär ich glücklich.
Wenn ich direkt implode($filename) mach, dann beschwert er sich, dass kein array angegeben wurde. Mach ich vorher $array = array($filename) und dann implode(array), dann macht der mir schon wieder ein “i” hin. Irgendwie bin ich zu blöd dafür…
Du solltest schon auf php.net im Manual nachschauen, welche Parameter eine Funktion erwartet.
mit explode zerlegst du anhand eines Trennzeichen und mit implode “klebst” du das array anhand eines Trennzeichen wieder zusammen.
bsp, wenn du einen Dateinamen anhand des Punktes trennst, und nur die Erweiterun nicht Ausgeben willst:
Ich hab jetzt sozusagen abgefragt, ob der Name z. B. „Index“ ist. Wenn ja, dann soll er das Ergebnis in die Variabl „$index“ packen. In der zweiten fragt er nun ob es keines der genannten Dateien ist. Wenn dem so ist, soll er den Rest in $pages packen.
Die beiden Variablen hab ich dann in die Templatedatei ausgeben lassen. Jetzt sollte die zweite Abfrage halt noch so funktionieren, dass wenn mehrere Dateien drin sind, er mir auch mehrere Menüpunkte macht. Derzeit hab ich die Dateien index.php, gallery,php und blabla.php drin. Und er ersetzt mir die gallery.php mit blabla.php bzw. gibt nur eines der beiden aus.
Sobald ich bei Default das Zeug in $pages einbinde und es im Template ausgebe, erscheint nur noch „blabla“ im Menü. Gallery ist nicht zu finden. Geb ich stattdessen gleich den Link in Menü.php aus, dann gibt es keine Probleme. Allerdings ist dann die „Sortierung“ wieder im Eimer.
Ich tüftel noch dran. Ich glaub, ich bin der endgültigen Lösung ganz nahe.
Die Fehlermeldung ist auch nicht mehr wichtig, nachdem das Menü jetzt vom Grundprinzip her funktioniert. Muss nur noch mit dieser GET Funktion rumspielen.
EDIT:
OK, Problem gelöst. Vielleicht hat noch jemand Lust, das Menü auszuprobieren. Könnte sein, dass noch der eine oder andere Fehler drin ist. Ich hab das jetzt mit einer if-else Formel eingebunden, die mit file_exists prüft ob’s die gewählte Datei gibt. Hoffe, dass das richtig ist.
Also vielen Dank für eure Hilfe und vor allem eure Geduld.