将内容拆分为布局的最佳方法是什么?

时间:2012-12-20 21:12:14

标签: php

最近,我编写了一个小型的功能CMS,没有OOP逻辑,并且使用着名的不良做法来包括标题,内容和页脚:

<?php
     require_once("header.php");

     //Content

     require_once("footer.php");
?>

现在,我正在尝试根据模板引擎设置新的CMS。我读了很多关于 Smarty&amp; amp; CO 。但我认为这不是完全清楚的,因为你需要学习这种特定的语言。 那我该怎么做呢? 我一直在寻找这个,似乎无法找到任何适合该法案的东西......

感谢 in adavance!

2 个答案:

答案 0 :(得分:0)

让所有内容都转到带有重写的单个路由文件,然后像这样拉出正确的文件:

ob_start();
include('page_you_need_to_load.php');
$html = ob_get_contents();
ob_end_clean();

include('header.php');
echo $html;
include('footer.php');

答案 1 :(得分:0)

您需要做的是分离生成内容的数据的代码位和显示数据的代码位。在MVC-land中,数据部分将由Model / Controller处理,并由View显示。用你的代码来解释:

<?php
require('data.php');
require('header.php');
require('display.php');
require('footer.php');

逻辑上简化为:

<?php
require('data.php');
require('display.php');

您的data.php将不会执行任何操作,只会将您的display.php生成的特定变量数据生成并转换为可显示的内容。在输出任何内容之前,最好先完成所有与内容相关的工作,以防您想要返回并更改HTML标题中的内容[即:页面标题]或执行HTTP重定向或其他header()操作。

对于类似这样的事情来研究MVC风格是一个好主意,我发现以下两个页面在理解,创建MVC应用程序时非常有用。

http://www.onextrapixel.com/2012/03/14/a-detailed-overview-of-the-model-view-controller-mvc-coding-structure/

http://www.phpro.org/tutorials/Model-View-Controller-MVC.html