私はコンテンツを配信するためにテンプレートベースのシステムを作ろうとしていますが、私は解決できないような問題に遭遇しました。インクルードからのデータを持つ変数をエコーアウトしようとすると、HTMLの間違ったセクションに出力されます。PHPがHTMLの間違った場所にエコーする
以下は、ブラウザ上で実行されるマイページである 'newstuff.php'です。違反する変数は、$php $head $content
です。
<?php
$php = include "templates/content/newstuff/phpCode.php";
$head = include "templates/content/newstuff/head.html";
$content = include "templates/content/newstuff/content.php";
include realpath(dirname(__FILE__)).'/templates/templateMain.php';
?>
以下は「tempalteMain.php」です。これは私のtempalteです。エコーの場所は$php $head $content
であることに注意してください。以下
<?php
echo $php;
?>
<!DOCTYPE html>
<html>
<head>
<?php echo $head; ?>
</head>
<body class="body1" onload="inputBlur2()">
<div class="borderLine"></div>
<div class="banner"></div>
<div class="mainContent1" >
<div class="header1" >
<div class="headerContainer" >
<ul class="navList1">
<li><a id = "B0" href="index.php">New Stuff</a></li>
<li><a id = "B1" href="MainPage.php">Products</a></li>
<li><a id = "B2" href="ProjectsPage.php">Projects</a></li>
<li><a id = "B3" href="AOrdering.php">About Ordering</a></li>
<li><a id = "B4" href="ContactMe.php">Contact Us</a></li>
<li><a id = "B5" href="FAQPage.php">FAQ</a></li>
<li><a id = "B6" href="SCart.php">My Cart</a></li>
</ul>
</div>
</div>
<div class="content1">
<?php echo $content; ?>
</div>
</div>
</body>
</html>
この$head
PHP変数によって送達されるコードを提供「head.html」です。以下
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="/../StylePR.css">
<title>KickUp Electronics</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
この$content
PHP変数によって送達されるコードを提供「content.php」です。
<p>Welcome to the new stuff page!!!</p>
最後に、これはchrome DOMエディタから出力されるページソースです。 content.phpからの情報の場所が間違っていて、奇妙な '1'がエコーアウトされていることに注意してください(また、ページソースを見ると、head.htmlの情報はhtmlタグの外に置かれます)。
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="/../StylePR.css">
<title>KickUp Electronics</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
</head>
<body class="body1" onload="inputBlur2()">
<p>Welcome to the new stuff page!!!</p> <!--Wrong Location!-->
1
1
<div class="borderLine"></div>
<div class="banner"></div>
<div class="mainContent1">
<div class="header1">
<div class="headerContainer">
<ul class="navList1">
<li><a id="B0" href="index.php">New Stuff</a></li>
<li><a id="B1" href="MainPage.php">Products</a></li>
<li><a id="B2" href="ProjectsPage.php">Projects</a></li>
<li><a id="B3" href="AOrdering.php">About Ordering</a></li>
<li><a id="B4" href="ContactMe.php">Contact Us</a></li>
<li><a id="B5" href="FAQPage.php">FAQ</a></li>
<li><a id="B6" href="SCart.php">My Cart</a></li>
</ul>
</div>
</div>
<div class="content1">
1 </div>
</div>
</body></html>
無駄な解決策を何度も試してみました。これは、HTMLが完全に読み込まれる前にエコーが実行されているという問題ですか?どんな助けも高く評価されるでしょう!
これは機能しません。あなたが考える方法で。 $ php = include "templates/content/newstuff/phpCode.php"; すぐにインクルードするだけです。 TBO私はPHPのための適切なテンプレートエンジンを見ています - 小枝は本当に良いと簡単に開始することです。 –
ファイルを保存する場所に含めます。 'include'は、ファイルの内容ではなく真/偽を返します。 – aynber
@リチャード・ハウスハムは、おなじみの小枝に言いましたが、私はそれを試してみましたが、PHPコードを含めることができませんでした:( – DiscreteTomatoes