2017-09-07 9 views
-3

私は私のPHPプロジェクトをテンプレート化について質問があります。PHP - 構造化フォルダ、パス、テンプレート

現在、私のフォルダ構造は次のようになります。

/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 

私は通常私のindex.phpファイルの「_header」と「_footer.php」が含まれるが、私は、サブフォルダページに問題があります。たとえば、私の_header.phpには "_nav.php"が含まれています。しかし、_header.phpをsite_4.phpに含めると、資産とナビゲーションに問題が発生します。

私は、資産のパスなど、サイトのURLを定義するために設定ファイルを作成するために読んで、それは私にはそれほど明確ではありません。理想的には、CSS、jsなどのサブフォルダを持つ「assets」フォルダを持っていたいと思います。

また、誰が私に "_nav.php"とsite_url()を含めることができるか知りたいと思います。私はそれを試しましたが、私はいつもエラーが出ます。 主な質問は ありがとう、SITE_URL、ベースURLを作成する方法(この時点で私はまだそれらの用語について混乱していて、それらを使用する方法)されます。

+1

https://www.w3schools.com/tags/tag_base.aspが持つルート内のファイルを持っていますあなたのプロジェクトのROOTへのパスを含む 'define'はあなたが大丈夫でしょう。しかし、あなたの質問が、あなたのプロジェクトを構造化する最善の方法を尋ねているのであれば、主に賛成*のクラスになることが間違いありません。 – Script47

+1

は私が入れた以前の回答の読み取りを持っている - https://stackoverflow.com/questions/46009282/why-is-not-being-recognized-as-current-directory-in-my-php-file/46011261#46011261 –

答えて

0

あなたは純粋なPHPを使用しているので(何のフレームワークを使用していない)、これは少しトリッキーです。

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

:の内容を持っている「Base.phpという」を、新しいファイルを作成し、あなたのルートフォルダに

のは、それを名前を付けてみましょう:、私は以下のことをお勧めしたい、これを解決するには、いくつかの方法があります。さて、(site_1.php、subfolder1/site_3.php、など)のようなあなたのサイトの各ページにBase.phpというファイルが含ま:サブフォルダサイトページで

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

を、このようにそれを含める:

<?php 
// This is subfolder1/site_3.php 
require_once '../base.php'; 
// ... 
深いサイトのページの場合

、このようにそれを含める:今すぐ

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

、任意のPHPファイルで、あなたは(_nav.phpのような)別のPHPファイルを含める場合、あなたはこのようにそれを含めることができます。

<?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"> 

私はコードをテストしませんでしたが、うまくいくはずです。あなたが探しているもの

0

は、HTMLベースのタグです。これにより、すべての相対リンクが指定されたベースを使用します。

ie。あなたの頭の中でこれを持つ:

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

...資産フォルダから次のコードのロードに画像を行います:

<img src="image.jpg" /> 

参照: