2017-09-07 1 views
-3

Ich habe eine Frage zu meinem php-Projekt Templating.PHP - Strukturieren von Ordnern, Pfaden, Vorlagen

Derzeit meine Ordnerstruktur sieht wie folgt aus:

/Root 
|index.php 
|_footer.php 
|_header.php 
|_nav.php 
| 
|site_1.php 
|site_2.php 
| 
|css/ 
|js/ 
|images/ 
|subfolder1 
    |site_3.php 
    |site_4.php 
    |subfolder2 
     |site_5.php 

ich in der Regel „_header“ enthalten und „_footer.php“ in meiner Datei index.php, aber ich habe Probleme mit Unterordner Seiten. Zum Beispiel hat meine _header.php ein Include "_nav.php". Aber wenn ich _header.php in die site_4.php einfüge, bekomme ich Probleme mit den Assets und der Navigation.

Ich lese, um eine Konfigurationsdatei zu machen, um Website-URL, Asset-Pfade usw. zu definieren, aber es ist mir nicht so klar. Idealerweise hätte ich gerne einen Ordner "Assets" mit Unterordnern für css, js etc.

Ich würde auch gerne wissen, wer kann ich mit "_nav.php" mit site_url() aufnehmen. Ich habe das ausprobiert, aber ich bekomme immer Fehler. Die Hauptfrage ist, wie man die site_url, Basis-URL (an diesem Punkt bin ich immer noch verwirrt über diese Begriffe und wie man sie verwendet) Vielen Dank.

+1

eine Datei im Stamm hat, die hat Eine Definition, die den Pfad zur ROOT Ihres Projekts enthält und Ihnen wird nichts passieren. Aber wenn Ihre Frage den besten Weg zur Strukturierung Ihrer Projekte verlangt, die definitiv als * primär eigensinnig * eingestuft werden. – Script47

+1

Lies eine frühere Antwort, die ich gestellt habe - https://stackoverflow.com/questions/46009282/why-is-not-being-recognized-as-current-directory-in-my-php-file/46011261#46011261 –

Antwort

0

Da Sie reines PHP verwenden (kein Framework verwendet wird), ist dies ein bisschen schwierig. Es gibt mehrere Möglichkeiten, dies zu lösen, würde ich folgendes vorschlagen:

in Ihrem Root-Ordner, erstellen Sie neue Datei, machen wir es nennen „base.php“, die den Inhalt hat:

<?php 
// This is base.php 
define('ROOT_PATH', realpath(dirname(__FILE__))); 

nun, in jedem Ihrer Site-Seiten wie (site_1.php, subfolder1/site_3.php, etc.) umfassen die base.php Datei:

<?php 
// This is site_1.php 
require_once 'base.php'; 
// ... 

in Unterordner Site-Seiten, sind es wie folgt aus:

<?php 
// This is subfolder1/site_3.php 
require_once '../base.php'; 
// ... 

Wenn tiefere Website Seite, dass es wie folgt aus:

<?php 
// This is subfolder1/subfolder2/site_5.php 
require_once '../../base.php'; 
// ... 

nun in jeder PHP-Datei, wenn Sie (wie _nav.php) eine andere PHP-Datei aufnehmen möchten, können Sie es wie folgt umfassen kann:

<?php 
// This is _header.php 
require_once ROOT_PATH . '/_nav.php'; 
// ... 
?> 
<!-- to include any css/js/images files, it would be like this: --> 
<link rel="stylesheet" type="text/css" href="/css/my_css.css"> 
<script src="/js/my_js.js"></script> 
<img src="/images/my_image.jpg"> 

Ich habe den Code nicht getestet, aber es sollte funktionieren.

0

Was Sie suchen, ist das HTML-Basis-Tag. Dadurch wird jeder relative Link die angegebene Basis verwenden.

dh. mit dieser im Kopf:

<head> 
    <base href="http://www.yoursite.com/assets/" /> 
</head> 

... wird die folgenden Code lädt das Bild aus dem Vermögen Ordner machen:

<img src="image.jpg" /> 

See: https://www.w3schools.com/tags/tag_base.asp