好的,所以我第一次建立一个完整的网站并使用php。现在我遇到了一个问题:
让我们说我的网站只是一个带有菜单和内容区域的标题。当然,我想有一个header.php和几个内容文件,例如content1.php content2.php和content3.php。这样您只需按照您的理解更改1个文件中的菜单。
如何构建网站最佳:
一个。在每个内容文件中添加这样的内容:
<?php include 'header.php'; ?>
here the content of the content page 1
B中。制作一个索引文件,如:
<?php include 'header.php'; ?>
<?php include 'content1.php'; ?>
如果在菜单中点击了指向content2.php的链接,那么该页面上的标题是否仍然存在?
℃。别的什么?也许是关于如何制作这类页面的好教程?
答案 0 :(得分:5)
如果您希望最大化重用代码/元素的好处,那么您的第二个选项就在正确的轨道上:
B中。制作一个索引文件,如:
<?php include 'header.php'; ?>
<?php include 'content1.php'; ?>
如果在菜单中点击了指向content2.php的链接,那么该页面上的标题是否仍然存在?
以下是(简单示例):
使用查询字符串 - index.php
通过mod_rewrite
脚本路由所有类似请求(content1,2,3)可以使这一点变得漂亮。然后根据请求提供主要内容部分。
例如链接:
<a href='index.php?page=content1'>Content 1</a>
检测要服务的内容:
<php
$pages['content1'] = 'content1.php';
$pages['content2'] = 'content2.php';
$pages['default'] = $pages['content1']; //set default content
$page = 'default';
if(isset($pages[$_GET['page']]){
$page = $pages[$_GET['page']]; //make sure the filename is clean
}
?>
<?php include 'header.php'; //header here?>
<?php include $page; //correct content here?>
不仅有一个地方可以更改标题,但现在只有一个地方可以更改整个布局。
当然这只是一个简单的例子,有很多PHP框架可以为你做这一切(使用MVC)。
答案 1 :(得分:3)
简单而不是包含内容文件的index.php,您可以:
的header.php:
<a href="content1.php">content 1</a><br />
<a href="content2.php">content 2</a><br />
content2.php:
<?php
include('header.php');
?>
This is the page with 'content 1'
content2.php:
<?php
include('header.php');
?>
This is the page with 'content 2'
答案 2 :(得分:2)
但如果我有1000个内容页面,是不是有办法以不同的方式做到这一点?就像它是10年前的框架。
简短的回答,没有。小型网站的最快捷方式是使用@mark b描述的标题方法。它不仅速度快,而且还允许您依赖可能有利于SEO的URL路径。
很长的答案,也许吧。框架基本上已经被使用dom取代,其中一个将内容分配给div并进行更新。它比旧帧更快,更容易控制,并且可以异步完成(通过AJAX)但是,与旧的target =功能相比,它还需要处理更多的工作。客户喜欢它,但它需要时间来编码。事实上,如果你处理大量的网页和大量的内容,那么重要的时间。
另一种选择是使用像Zend Framework这样的模板系统将您的视图构建到统一的模板中进行显示。但是,它会增加框架的开销,这可能是相当大的。
最后,由于您可以随意使用PHP,因此您可以从数据库中提取所有内容,并在一个“页面”上运行整个站点。 URL字符串将包含一个参数,该参数告诉它从DB中提取哪些内容并替换为通用的“getter”页面。一个真正的CMS系统。
祝你好运。答案 3 :(得分:0)
选项A会减少您的文件数量,但是当您在网站设计中变得越来越复杂时,您可能需要查看Smarty,因为这会将“视图”与“数据”完全分开“页面的。此外,它非常强大,并作为一个框架建立。
答案 4 :(得分:-1)
您可以使用phps __autoload()。这听起来很脏,但是你的内容周围是类包装器,然后是每个文件末尾的一个访问器。
每个文件看起来都像:
class header
{
public static function getContent() {
//return your content
}
header::getContent();