关于菜单和简单的PHP问题内容最佳实践

时间:2011-02-14 21:14:57

标签: php layout hyperlink include

好的,所以我第一次建立一个完整的网站并使用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的链接,那么该页面上的标题是否仍然存在?

℃。别的什么?也许是关于如何制作这类页面的好教程?

5 个答案:

答案 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();