我目前有一个非常简单的页面,有一些更复杂的后端。我总是以同样的方式做到这一点,但我觉得这不对。但我对我没有多大帮助。
我有我的index.php,header.php和function.php。 index.php包含header.php,它调用function.php中的函数。我不确定的主要问题是如何使网站足够动态,以便可以轻松编辑页面,而且易于编辑是需要编辑的重要部分。
的index.php
<?php
session_start();
include_once 'header.php';
?>
// Page content
</body>
</html>
的header.php
<!DOCTYPE HTML>
<html lan="en">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<?php
require_once 'functions.php';
getBar(); // Top of page bar with menu/login etc
?>
我不认为显示functions.php会增加那么多。我知道我不应该在我的文件中使用2 <head>
,所以如果我想在每个页面上都有描述,我该怎么办?我以前的文件设置如下:
的index.php
<?php
session_start();
include_once 'header.php';
?>
// extra page specific stuff here, such as description or JS
</head>
<body>
<?php
require_once 'functions.php';
getBar(); // Top of page bar with menu/login etc
?>
// Page content here
</body>
</html>
的header.php
<!DOCTYPE HTML>
<html lan="en">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css" type="text/css" />
但是,我认为文件是“碎片化的”。我不知道是否有一种普遍接受的做法,但如果有,我很乐意听到它!
答案 0 :(得分:11)
您正在寻找模板。
虽然你几乎把它钉了下来,但是你正在混合一些事情。只需将“设计部件”与“代码部件”分开即可。不要让标题完成实际代码的工作,一切都变得像淡水一样清晰
我建议您进行以下设置:
网站包含
主要思想是让PHP脚本在所有数据准备就绪之前不进行输出 - 这样您就可以立即获得页面标题问题的解决方案。 (考虑一下):
一旦php脚本完成数据准备,它就会调用主站点timplate,而后者将包含实际的页面模板。
因此,您将得到您所要求的 - 网站动态足以让它可以轻松编辑页面,而且易于编辑是需要编辑的重要部分 - 以及更多其他好处。
模板我说的是一个典型的PHP脚本,但是,主要由纯HTML组成,只有一些PHP代码才能显示动态生成的数据。
这里有一些基本但有效的例子
页面:
<?
//include our settings, connect to database etc.
include dirname($_SERVER['DOCUMENT_ROOT']).'/cfg/settings.php';
//getting required data
$DATA=dbgetarr("SELECT * FROM links");
// setting title for using in the main template
$pagetitle = "Links to friend sites";
//etc
//set page template filename
$tpl = "links.tpl.php";
//and then finally call a template:
include "main.tpl.php";
?>
其中main.tpl.php
是您的主要网站模板,包括常见部分,如页眉,页脚,菜单等:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My site. <?=$pagetitle?></title>
</head>
<body>
<div id="page">
<? include $tpl ?>
</div>
</body>
</html>
和links.tpl.php
是实际的页面模板:
<h2><?=$pagetitle?></h2>
<ul>
<? foreach($DATA as $row): ?>
<li><a href="<?=$row['link']?>" target="_blank"><?=$row['name']?></a></li>
<? endforeach ?>
<ul>
答案 1 :(得分:9)
我认为最有经验的程序员会告诉您尽可能少地混合代码和HTML。这意味着完成所有计算,然后将视图所需的任何变量传递给视图。
他们还会告诉您调查MVC设计模式。在PHP中,这是Controller类接受初始请求,在正确的业务Model类和&amp ;;上执行正确操作的地方。然后将所需的数据传递给View类,这将呈现您的HTML。
MVC可以从非常简单的3类变体转变为极其复杂的“框架”,如Zend Framework。如果您自己构建,请查看PHP类自动加载,因为它将使您的生活更轻松。
答案 2 :(得分:4)
小网站 中普遍接受的方法 是这样的:
<?php $title = 'Title'; ?>
<?php require_once('header.php'); ?>
<title><?php echo $title; ?> - MyWebsite</title>
我认为这应该对你有用,同时仍然保留K.I.S.S原则。
答案 3 :(得分:2)
我所做的是制作以数组作为参数的页眉和页脚函数,并且数组可能包含可选元素,因此您可以将标题等传递给标题函数。
我认为你会发现“被普遍接受”的一件事就是越来越多地使用PHP作为一个程序,而当你只需要动态内容时,就不再需要使用PHP了。换句话说,将所有内容编写为输出html的程序,而不是混合使用html和php(打开和关闭PHP标记)。
在这个模型中,许多网站只有一个“index.php”,实际上生成所有页面(通常来自数据库)。但是,如果你只有少量页面,那么每个页面都有自己的php页面,共享页眉和页脚功能是一个很好的方法,恕我直言。