好的,我有一个我朋友为我建的模板脚本。我将包含所有文件名。
确定无法正常工作的是file_get_contents没有抓住内容
(1我不知道应该在哪里放置内容。
(2我希望它放在一个目录中,以便IF我更改模板内容所在的区域是相同的。
(3我试图让file_get_contents加载链接?= about?= services等到我用#CONTENTS#
指定的内容div中的body.tpl(4 Dir Tree如下
htdocs>
classes> file.class.php
contents> where i want #CONTENTS# (file_get_contents) to grab data from
images> content (changing images)
templates> where the templates are hosted
clean>main template (Files are header.tpl, body.tpl, footer.tpl, styles.css, menu_style.css, and the images folder for images relating to the template itself.)
other templates>(to come)
请任何帮助表示赞赏。问题是现在的问题是脚本是否将所有内容放在正确的区域加载它只是不显示它?。
/ * file.class.php * /
<?php
$file = new file();
class file{
var $path = "templates/clean";
var $ext = "tpl";
function loadfile($filename){
return file_get_contents($this->path . "/" . $filename . "." . $this->ext);
}
function setcontent($content,$newcontent,$vartoreplace='#CONTENT#'){
$val = str_replace($vartoreplace,$newcontent,$content);
return $val;
}
function p($content) {
$v = $content;
$v = str_replace('#CONTENT#','',$v);
print $v;
}
}
if(!isset($_GET['page'])){
// if not, lets load our index page(you can change home.php to whatever you want:
ob_start();
include("contents/".'main.php');
$content = ob_get_contents();
ob_end_clean();
// else $_GET['page'] was set so lets do stuff:
} else {
// lets first check if the file exists:
if(file_exists($_GET['page'].'.php')){
// and lets include that then:
ob_start();
include("contents/". $_GET['page'] . '.php');
$content = ob_get_contents();
ob_end_clean();
// sorry mate, could not find it:
} else {
echo 'Sorry, could not find <strong>' . $_GET['page'] .'.php</strong>';
}
}
?>
如果有人可以减少它,那么JUST是模板所需的代码和文件获取内容。
/ * index.php * /
<?php
include('classes/file.class.php');
// load the templates
$header = $file->loadfile('header');
$body = $file->loadfile('body');
$footer = $file->loadfile('footer');
// fill body.tpl #CONTENT# slot with $content
$body = $file->setcontent($body, $content);
// cleanup and output the full page
$file->p($header . $body . $footer);
?>
/ * header.tpl * /
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-Transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<meta name="robots" content="index,follow"/>
<meta name="distribution" content="global"/>
<meta name="description" content=""/>
<meta name="keywords" content=""/>
<link href="templates/clean/style.css" rel="stylesheet" type="text/css" media="screen" />
<link rel="stylesheet" href="templates/clean/menu_style.css" type="text/css" />
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
</head>
<body>
<div id="header">
<div id="logo"><a href="index.php" style="height:30px;width:150px;"><img src="images/logo.png" border="0" alt=""/></a></div>
<div id="menuo">
<div class="menu">
<ul id="menu">
<li><a href="?page=home">Home</a></li>
<li><a href="?page=about">About Us</a></li>
<li><a href="?page=services">Services</a>
<ul>
<li><a href="?page=instore">InStore Repairs</a></li>
<li><a href="?page=inhome">InHome Repairs</a></li>
<li><a href="?page=website">Website Design</a></li>
<li><a href="?page=soon">Comming Soon.</a></li>
</ul>
</li>
<li><a href="?page=products">Products</a>
<ul>
<li><a href="?page=pchard">Computer Hardware</a></li>
<li><a href="?page=monitor">Monitor's</a></li>
<li><a href="?page=laptop">Laptop + Netbooks</a></li>
<li><a href="?page=soon">Comming Soon.</a></li>
</ul>
</li>
<li><a href="?page=contact">Contact</a></li>
</ul>
</div>
</div>
</div>
<div id="headerf">
</div>
/ * body.tpl * /
<div id="bodys">
<div id="bodt"></div>
<div id="bodm">
<div id="contents">
#CONTENT#
</div>
<div id="bodb"></div>
</div>
</div>
/ * footer.tpl * /
<div id="footer">
<div style="position:absolute; top:4px; left:4px;"><img src="images/ff.png" alt="ok"></div> <div style="position:absolute; top:4px; right:5px; color:#FFFFFF;">©2010 <a href="mailto:">Company Name</a></div>
</div>
</body>
</html>
答案 0 :(得分:2)
根据我的理解,您的内容位于 about.php 内(例如)。
此文件位于“contents”目录:contents / about.php
命令
include('about.php')
将加载并执行脚本 about.php 内联。因此,它将在 include 调用完成的位置打印其内容。您看到的内容必须如下:
(content of about.php) | header | body | footer
如果您希望$ content具有正确的值,请更改行
include($_GET['page'].'.php');
与
ob_start();
include("contents/". $_GET['page'] . '.php');
$content = ob_get_contents();
ob_end_clean();
这将使用对象缓冲技术使PHP理解它不应该内联呈现文件的内容,而是将其放在$ content变量中。
我希望这有帮助!
答案 1 :(得分:1)
您的朋友为您构建的模板脚本中充满了帮助您模拟网站的帮助程序功能。
目前,我认为你有两个问题:
目前,您朋友的脚本说明了
var $path = "templates/clean";
这意味着您应该在放置 index.php 的目录中创建 templates 文件夹和 templates / clean 文件夹,把你的模板(header.tpl,body.tpl,footer.tpl)放进去。
尝试使用
<?php
include('classes/file.class.php');
// load the templates
$header = $file->loadfile('header');
$body = $file->loadfile('body');
$footer = $file->loadfile('footer');
// fill body.tpl #CONTENT# slot with "Hello World!"
$body = $file->setcontent($body, "Hello World!");
// cleanup and output the full page
$file->p($header . $body . $footer);
?>
setcontent在预加载的body.tpl中找到#CONTENT#的出现,并将其替换为特定内容(在本例中为“Hello World”)
我希望这会让你走上正轨!告诉我它是否有效。 杰罗姆
答案 2 :(得分:0)
我认为你的问题可能就行了
if(file_exists($_GET['page'].'.php')){
应该阅读
if(file_exists('contents/'.$_GET['page'].'.php')){
希望这有帮助