2016-07-14 4 views
0

私はウェブサイト上で働いている、と私のファイル構造の関連部分は次のとおりです。include()で相対ファイルのパスを使用するにはどうすればよいですか?

  • サイト
    • クラス
      • class1に
    • JS

jsには、同じフォルダ内の他のスクリプトを使用するスクリプトが含まれています。私がPHPページで適切に読み込むためのスクリプトを取得する唯一の方法は、jsフォルダ全体を関連するサブフォルダにコピーするか、ページをサイトフォルダに移動することです。これらのオプションのどちらも良いことではありません。
私はこの問題がファイルのパスにあることを知っています。したがって、jsスクリプトのインクルードファイルを、PHPページの場所ではなく、パスの相対パスにするにはどうすればよいですか?

例:
class1にはclass1home.phpというページがあります。
script.jsというjsスクリプトを呼び出します。
script.jsには、jsフォルダにあるinclude(script2.js)を含む関数が含まれています。
パスのため、includeはsite/classes/class1/script2.jsを探しています。
サイト/ js/script2.jsに移動します。

script2.jsを使用する複数のフォルダとスクリプトがあるため、インクルード内のファイルパスをその特定のページとの相対的なものに変更することはできません。 script.js内

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

(script.js以内)それが使用される1つの場所:

/** 
* @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

質問が分かりますか? – Lekhnath

+0

私はいくつかのサンプルコードがわかりやすく役立つかもしれないと思っています。有用な答えを提供するのに役立ちます – RiggsFolly

+0

私は例を使って質問を更新しました –

答えて

0

Iは、通常、それがどこにあるページを特定有することにより、この種の問題を解決しますサーバーへの呼び出しで呼び出されます。

$callingPageURL =$_SERVER['SCRIPT_FILENAME']; 

次に、explode関数を使用して、その文字列を解析してファイルとフォルダを判別します。

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

これは、値の配列をcallingPageURLHolderにロードします。そこから、私はプログラムに関連すると思うURLの部分に到達するために、配列ポップのような共通のデータ構造メソッドを使用します。それは次のようになります。

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

あなたが戻ってサーバから来る配列を解析することができたら、あなたは単にあなたがあなた含めるに呼び出すURLに連結する必要がある変数を読み込むことができます。

これらの抽出された値をテストするフローコントロールを追加することで、同じ種類のテクニックを使用して、テンプレートページが含まれていた場所に基づいて小さな変更を加えることができます。例えば

、そのようなロジックを使用して

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

、私は私が予想されるURLの部分に応答する例チェーンを構築することがあります。このタイプのコードは、PHPページを少しカスタマイズしたいときに使用します。これらのテクニックといくつかの計画を使用すると、コードをさまざまな場所に移植するという考えに対応することができます。

関連する問題