php - PHP 中 HTML head 的最佳实践

标签 php html

我目前有一个非常简单的页面,有一些更复杂的后端。我一直都是这样做的,但我觉得这样不对。但是我还没有想出对我有用的东西。

我有我的 index.php、header.php 和 function.php。 index.php 包含 header.php,它调用了 function.php 中的一个函数。我不确定的主要事情是如何使网站足够动态以使其具有易于编辑的页面,但也很容易编辑是它需要编辑的很大一部分。
索引.php

<?php
session_start();
include_once 'header.php';
?>
// Page content
</body>
</html>

标题.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> s 在我的文件中,那么如果我想在每个页面上都有描述怎么办?我以前的文件设置如下: 索引.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>

标题.php

<!DOCTYPE HTML>
<html lan="en">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css" type="text/css" />

但是,我认为这些文件是“碎片化的”。我不知道这样做是否有普遍接受的方法,但如果有,我很想听听!

最佳答案

我认为您正在寻找模板。

虽然您几乎搞定了,但您还是有些混杂。只需将“设计部分”与“代码部分”分开即可。不要让标题来完成实际代码的工作,一切都变得像淡水一样清澈

让我建议您进行以下设置:
一个站点包含

  • 主配置文件(假设它类似于您的 functions.php)
  • 主站点模板
  • 实际页面(或部分)- 不同用途的实际 php 脚本。每个由两部分组成:
    • 脚本本身,进行所有数据挖掘和准备工作,初始化所有变量
    • 一个模板,只做数据输出的工作。

主要思想是让 PHP 脚本在所有数据准备好之前不输出 - 这样您就可以立即解决页面标题问题。此外(想想看):

  • 您将能够发送任何 HTTP header 、cookie、启动 session 等。
  • 您还可以即时更改整个输出外观:例如 XML 或 JSON 而不是 HTML
  • 您将能够为不同的站点使用相同的代码库,仅更改模板

一旦 php 脚本完成数据准备,它会调用主站点模板,而主站点模板又将包含实际页面模板。

因此,您将得到您想要的——网站足够动态,可以拥有易于编辑的页面,而且易于编辑是它需要编辑的很大一部分——以及更多其他好处。

我说的模板是一个典型的 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>

关于php - PHP 中 HTML head 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8247001/

相关文章:

php - 具有特定用户权限的 Cakephp ACL

php - MySql 适合大型数据库吗?

php - 抱歉,无法找到您要查找的页面。硅胶错误

html - 底部 overflow hidden 的 CSS HTML Angled Div

PHP 401 状态返回 -1

php - 在 jQuery 中收集复选框值并在提交时将其发布

javascript - Div 在 Chrome 和 Safari 中不显示,但在 Firefox 中显示

javascript - 为图像提供信息

jquery - 在 jquery 进度条末尾加载一个 div 或 href 链接

html - 将一个 div 拆分为网格或多个 div 的任何方法