2011-01-08 9 views
1

こんにちは、File-AよりもFile-Bを優先させるソリューションを探しています。私に説明させてください。別のファイルでファイルのインポートを優先する方法

私はJoomlaを実行しています。私のテンプレートはすべてブロックでインポートされ、メインのindex.phpファイルに結合されています。

head.php 
header.php 
mainbody.php 
footer.php 

私がそれらを取得するには、以下の機能を使用しています:

は、私たちは、私が2つのフォルダFOLDER-FOLDER-B

FOLDER-内容を考えてみましょう私のindex.phpファイル:

function getBlock($filename){ 
require_once(YOURBASEPATH.DS.'FOLDER-A'.DS.$filename.'.php'); 
} 

と私はそれらを次のように呼んでいます:

<?php className::getBlock('head') ?> 

<?php className::getBlock('header') ?> 

<?php className::getBlock('mainbody') ?> 

<?php className::getBlock('footer') ?> 

ここで、これらのコアファイルを変更するオプションを作成して、元のファイルに影響を与えることなく作成します。

本体に変更を加えたい場合は、mainbody.phpというファイルをという名前のFOLDER-Bというファイルにコピーし、そこに変更を加えます。

それでは、私が探していますと、FOLDER-B最初にチェックし、それを同じ名前のファイルがFOLDER-のように、相手だ場合は、それはそれ以外の場合は、をロードする必要があることをロードする必要があり、存在している機能ですFOLDER-Aの正規ファイル。

答えて

1

同様:

function getBlock($filename){ 
    $fileB = YOURBASEPATH.DS.'FOLDER-B'.DS.$filename.'.php'; 
    if (file_exists($fileB)) { 
    require_once($fileB); 
    } else { 
    require_once(YOURBASEPATH.DS.'FOLDER-A'.DS.$filename.'.php'); 
    } 
} 

+0

@マダスコードのおかげで多くの。神のお恵みがありますように。 –

1
function getBlock($filename){ 

    $folders = array(
     YOURBASEPATH.DS.'FOLDER-B', 
     YOURBASEPATH.DS.'FOLDER-A', 
    ); 

    foreach ($folders as $folder) { 
     $file = $folder.DS.$filename.'.php'; 
     if (file_exists($file)) { 
      require_once ($file); 
      break; 
     } 
    } 

} 
+0

あなたはそれらの両方を含んでいる、休憩が必要です。 –

+0

もちろん、ありがとう –

+0

お返事ありがとうございました。うん、あなたのコードが動作し、@Madasのコードさえ正常に動作します。私はあなたの質問に投票していますが、@ Madasの回答も受け入れています。なぜなら、基本的にそれはあなたのものよりもコンパクトで、私は1つの答えしか受け入れることができないからです。 –

関連する問題