我是PHP和web开发的新手,我正在努力找出如何用尽可能少的复制粘贴代码来设计我的网站。本质上,我希望每个页面都使用相同的布局、页眉菜单和页脚;每个页面之间的唯一区别是"contentcontainer"中的内容。这是我现在正在使用的简化版本:
<?php $content = htmlspecialchars($_GET["content_url"]);?>
<body>
<div id="main_container">
<?php require 'header.html';?>
<div id="content_container">
<?php include $content;?>
</div>
<?php require 'header.html';?>
</div>
</body>
网站的所有"内容"都存储在页面(about.html、social.html等)中,这些页面应该以某种方式加载到index.php"template"页面的"content_container"div中。这样,就可以很容易地维护和更新网站的内容,而无需接触模板。在此之前,我曾尝试使用AJAX异步加载内容,但无法通过该方法直接链接到各个页面,因此使用PHP$_GET似乎是一个更好的选择。
我很清楚我想做什么,但我对web开发和PHP语法的不熟悉现在对我来说是一个障碍。那么,如何使用PHP$_GET用另一个文件中的内容填充页面呢编辑1:或者,我处理这个问题的方式是错误的吗?我应该怎么做?
编辑2:为了学习,我更喜欢看看如何使用PHP(如果可能的话,甚至是JS)来完成这类工作。我知道可能有很多好的模板库/框架,但如果可以的话,我想了解如何自己实现这些东西。
所以,如果我理解你发送的是一个带有GET变量的url,如下所示:http://www.yoursite.com/?content_url=http://www.yoursite.com/pages/about.html
和您的计划是,您希望获取文件所在位置的url,然后将该文件内容包含到当前页面中。
我认为你误解了人们通常如何使用GET变量,我建议你不要按照目前的方式进行。这很糟糕,原因有几个。用Ajax加载所有内容也是非常糟糕的,因为Google将无法对这些内容进行索引。
现在回答:如果您仍然想使用$_GET将内容加载到页面中。我会这样做:
示例URL:http://www.yoursite.com/?page=about
PHP代码:
<?php
//Check if the get variable "page" is set to "about", then load about.html
if($_GET['page'] == "about"){
$content = file_get_contents("http://www.yoursite.com/pages/about.html");
}
?>
您可以在此处阅读有关file_get_contents的信息http://php.net/file_get_contents
请注意,这不是解决网站URL的"最佳"方法。这只是你如何实现你所要求的答案。如果你想要一个更高级的解决方案,你应该研究mod_rewrite和.htaccess.