2016-07-14 10 views
0

Ich arbeite auf einer Website, und der relevante Teil meiner Dateistruktur ist:Wie mache ich relative Dateipfadierung mit include()?

  • Website
    • Klassen
      • class1
    • js

Jetzt enthält die js Skripte, die andere Skripte im selben Ordner verwenden. Die einzige Möglichkeit, die Skripts auf den PHP-Seiten korrekt zu laden, besteht darin, entweder den gesamten js-Ordner in den entsprechenden Unterordner zu kopieren oder die Seite in den Site-Ordner zu verschieben. Keine dieser Optionen ist gut.
Ich weiß, dass das Problem mit dem Dateipfad ist, also wie bekomme ich die Includes in den js-Skripten zu Pfad relativ zu ihrem Standort und nicht den Speicherort der PHP-Seite? Ein Beispiel dafür:
Ich habe eine Seite in class1 namens class1home.php.
Es ruft ein js-Skript namens script.js.
script.js enthält eine Funktion mit include (script2.js), die sich im Ordner js befindet.
Wegen des Pfades sucht das Include nach der Site/classes/class1/script2.js.
Ich möchte es auf die Website/js/script2.js gehen.

Da mehrere Ordner und Skripts script2.js verwenden, kann ich den Dateipfad innerhalb des Includes nicht einfach so ändern, dass er relativ zu dieser bestimmten Seite ist.

Innerhalb script.js:

/** 
* @function  Include 
* @description Includes an external scripts to the page 
* @param   {string} scriptUrl 
*/ 
function include(scriptUrl) { 
    document.write('<script src="' + scriptUrl + '"></script>'); 
} 

Ein Ort, es verwendet wird (innerhalb script.js):

/** 
* @module  ToTop 
* @description Enables ToTop Plugin 
*/ 
(function ($) { 
    var o = $('html'); 
    if (o.hasClass('desktop')) { 
     include('js/jquery.ui.totop.min.js'); 

     $(document).ready(function() { 
      $().UItoTop({ 
       easingType: 'easeOutQuart', 
       containerClass: 'ui-to-top fa fa-angle-up' 
      }); 
     }); 
    } 
})($); 
+0

Wer verstehen die Frage? – Lekhnath

+0

Ich denke, ein Beispielcode könnte uns helfen, jemanden zu verstehen und ihm auch eine nützliche Antwort zu geben. – RiggsFolly

+0

Ich habe die Frage mit einem Beispiel aktualisiert –

Antwort

0

ich normalerweise diese Art von Problem zu lösen, indem die Seite zu identifizieren, wo es ist mit einem Anruf zum Server. Es sieht wie folgt aus:

$callingPageURL =$_SERVER['SCRIPT_FILENAME']; 

Dann habe ich diese Zeichenfolge analysieren, um die Datei und den Ordner zu bestimmen, indem die Funktion explodieren werden. Es sieht so aus:

$callingPageURLHolder = explode("/", $callingPageURL); 

Dies lädt ein Array von Werten in CallingPageURLHolder. Von dort aus verwende ich gängige Datenstrukturmethoden wie Array-Pops, um zu dem Teil der URL zu gelangen, von dem ich denke, dass er für das Programm relevant ist. Es sieht wie folgt aus:

$callingPageFile = array_pop($callingPageURLHolder); 
$callingPageFolder = array_pop($callingPageURLHolder); 

Nachdem Sie das Array analysieren, kann die Rückseite von Server kommt, könnten Sie einfach Variablen laden Sie in eine URL verketten müssen, die Sie in Ihrem gehören nennen.

Derselbe Typ von Technik kann verwendet werden, um kleine Änderungen an einer Schablonenseite basierend darauf vorzunehmen, wo sie enthalten sind, indem eine Flusssteuerung hinzugefügt wird, die diese extrahierten Werte testet.

Zum Beispiel

switch ($callingPageFile){ 
    case "index.php": 
    // some response 
     break; 
} 

Mit Logik so, könnte ich Ketten der Fälle bauen, in denen ich auf erwartete URL Teile reagieren. Ich benutze diese Art von Code, wenn ich eine PHP-Seite leicht anpassen möchte. Mit diesen Techniken und einigen Planungen können Sie möglicherweise auf die Idee reagieren, dass Sie Ihren Code an verschiedenen Orten verpflanzen möchten.