Antworten auf deine Fragen:
Neues Thema erstellen

folder path und php include

AdioRockt

Nicht mehr ganz neu hier

Hallo Leute,
ich arbeite gerade an einem größeren Projekt und nachdem ich meine root directory aufgeräumt und neu strukturiert habe, bin ich leider auf ein Problem gestoßen.

Ich habe zb.: folgende root directory:
-css
-js
-img
-include
-pages
index.php


Ich verwende für index.php und alle Unterseiten (gespeichert in "pages") den selben Header, welchen ich via php include einfüge.

Und da entsteht auch schon mein Problem.
Wenn der Header ein Logo hat, müsste der path so aussehen: ../img/logo.svg

Das funktioniert aber nur bei den pages und nich bei der index.php, dort müsste es img/logo.svg heißen.

Gibt es da eine andere Möglichkeit? Ohne in der index.php auf den include des Headers verzichten zu müssen?
Der Header war jetzt nur ein Beispiel, es gibt auf einer index durchaus auch andere Sachen die man mit php include einfügen möchte, und auf den anderen pages auch verwendet.

Der Sinn von php include ist für mich atm, dass ich bestimmte abschnitte einer Seite nur einmal bearbeiten muss und sie auf allen pages geändert werden, was mir die Arbeit sehr erleichtert. Das Problem mit der index.php stört mich sehr und ich hoffe es gibt dafür eine Lösung :)



Danke im voraus

lg
 

mwxx

Nicht mehr ganz neu hier

Hi AdioRockt,

ich löse das Problem immer so, dass ich z.B. in der Funktion, die den Header zusammensetzt eine Weiche stelle:

if (basename($_SERVER['PHP_SELF']) == "index.php") { /* Code für Startseite */ } ELSE { /* Code für Pages */ }
 

Dagobert68

Nicht mehr ganz neu hier

Moin :)

Ich löse das so, dass ich in jeder Seite (meistens auch per php include zusammen mit anderen Dingen, die auf allen Seiten gleich sind) ein base href setze (). Dann sind alle Pfadangaben für Links, Bilder etc. immer gleich.

Wenn man in der include-Datei (also hier im Header) dann auch noch weitere Dateien includen möchte (z.B. eine Breadcrumb-Navi), kann man das mit "include dirname(__dir__) . "/pfadzumbreadcrumb.php" machen. Dann werden auch die per PHP include in der Header-Datei eingebundenen Dateien gefunden - unabhängig davon, wo / in welchem Verzeichnis die Seite mit dem Header-include liegt.

Ob das jetzt 100%ig elegant ist oder ob vielleicht auch etwas gegen "base href" spricht, kann ich nicht sagen. Für mich funktioniert's so jedoch sehr zuverlässig und es ist absolut pflegeleicht. :)

Grüßli,
Tina
 

lachender_engel

Aktives Mitglied

Liegt das Projekt im root Verzeichnis Deiner Webseite, dann gibst Du an
Code:
/img/Bild.jpg
Das reicht. Damit geht der Pfad immer von root aus, egal wo die Datei, die aufruft, liegt.
Funktioniert nicht, wenn das Projekt komplett in einem Unterverzeichnis liegt.
 
Zuletzt bearbeitet:

AdioRockt

Nicht mehr ganz neu hier

Huhu :)
vielen Dankt für die Antworten.

Das base href funst bis jetzt am besten, nur kann ich dann nicht mehr wirklich an meiner Seite arbeiten.

<base href="">

Wenn ich das so schreibe, funst alles super solange ich mit dem localhost arbeite, wenn ich die Seite aber auf meinen Testserver lade, stimmt ja die url nicht mehr und ich müsste die <base> umschreiben.

Kann man das auch irgendwie umformulieren, so das der path immer da startet, wo die index.php ist?



/img/logo.svg wäre wohl am besten, doch leider liegt das Projekt nicht immer im root Verzeichnis.




ich löse das Problem immer so, dass ich z.B. in der Funktion, die den Header zusammensetzt eine Weiche stelle:

if (basename($_SERVER['PHP_SELF']) == "index.php") { /* Code für Startseite */ } ELSE { /* Code für Pages */ }

Meinst du das so?

<?php
if (basename($_SERVER['PHP_SELF']) == "index.php") { include ("include/header.html"); } ELSE { include ("../include/header.html"); }
?>

Bei der index.php klappt alles, bei allen anderen Seiten leider nicht.
Aber am ende würde das ja auch nix bringen, da die Seiten unter pages ja dann immer noch keinen richtigen path fürs Logo usw. haben. Oder verstehe ich das komplett falsch gerade?


lg
 

mwxx

Nicht mehr ganz neu hier

Hi AdioRockt,

Bei der index.php klappt alles, bei allen anderen Seiten leider nicht.
Aber am ende würde das ja auch nix bringen, da die Seiten unter pages ja dann immer noch keinen richtigen path fürs Logo usw. haben. Oder verstehe ich das komplett falsch gerade?

also klar, Du musst natürlich je nachdem alle notwendigen Pfade ggf. mit einer entsprechenden Weiche ausstatten!
Ich bin bei meinem letzten Projekt mit hunderten von Skripten in einer ziemlich hierarchischen Ordnerstruktur mit einer handvoll Weichen ausgekommen.



Wenn ich das so schreibe, funst alles super solange ich mit dem localhost arbeite, wenn ich die Seite aber auf meinen Testserver lade, stimmt ja die url nicht mehr und ich müsste die <base> umschreiben.

Hierzu z.B. habe ich mir einen globalen Parameter IS_LOCAL gebaut, der am Anfang jedes Skriptes abgefragt wird und der sich so ergibt:
if (($_SERVER["SERVER_ADDR"] == "::1") || ($_SERVER["SERVER_ADDR"] == "127.0.0.1")) { define("IS_LOCAL", "1"); } else { define("IS_LOCAL", "0"); };
 

lachender_engel

Aktives Mitglied

Warum kompliziert, wenn es auch einfach geht?! ;-)
Lege über eine Variable in Deiner config.php (sofern Du die hast, wenn nicht, lege eine an ;-) ) das Root-Verzeichnis Deines Projektes fest.
PHP:
$folder='/subfolder/';
und nutze den dann beim Aufruf Deiner Links.
Je nach dem, wo Du die Installation betreibst änderst du an zentaler Stelle den Pfad und alles läuft, wie Du es brauchst.
 

AdioRockt

Nicht mehr ganz neu hier

Warum kompliziert, wenn es auch einfach geht?! ;-)
Lege über eine Variable in Deiner config.php (sofern Du die hast, wenn nicht, lege eine an ;-) ) das Root-Verzeichnis Deines Projektes fest.
PHP:
  1. $folder='/subfolder/';
und nutze den dann beim Aufruf Deiner Links.
Je nach dem, wo Du die Installation betreibst änderst du an zentaler Stelle den Pfad und alles läuft, wie Du es brauchst.

Hab vor paar Wochen erst angefangen HTML und CSS zu lernen, von PHP hab ich leider noch keine Ahnung, daher weiß ich damit nicht wirklich was anzufangen. Könntest du das bitte genauer erklären oder einen Link schicken wo ich mich belesen kann?

lg
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
118.564
Beiträge
1.538.064
Mitglieder
67.487
Neuestes Mitglied
MichaelSEivy
Oben