HTML标签问题

时间:2011-03-19 10:52:56

标签: php html

我不明白的基本内容:

我的网站有导航栏header.php。在其中,有一个<head>...</head>部分。

现在,在我网站的每个其他页面中,我正在使用require_once 'header.php',以便每个页面都会显示导航栏。 但是,我还需要特定的<head>...</head>部分到不同的页面。

例如,在页面customers.php中,我使用<script>...</script>来包含jQuery库。我不需要将其包含在其他页面中。

现在,在网上搜索我发现多个头标记是错误的语法

那么,任何人都可以:

  1. 避免多个“头”标签
    WHILE
  2. 将他的作品分成不同的PHP文件并包含它们?

4 个答案:

答案 0 :(得分:1)

您必须更改页面结构并使用模板 而不是在代码的顶部加载标题,你必须在底部执行! 并且页面代码不应输出单词,而是收集变量中的所有数据。 只有在输出后才能通过调用模板启动。

示例布局将如下所示:

首先。页面本身。
它输出,但只收集所需数据并调用模板:

<?
//include our settings, connect to database etc.
include dirname($_SERVER['DOCUMENT_ROOT']).'/cfg/settings.php';
//getting required data
$DATA=dbgetarr("SELECT * FROM links");
$pagetitle = "Links to friend sites";
//etc
//and then call a template:
$tpl = "links.php";
include "template.php";
?>

接下来,template.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.php是实际的页面模板:

<h2><?=$pagetitle?></h2>
<ul>
<? foreach($DATA as $row): ?>
<li><a href="<?=$row['link']?>" target="_blank"><?=$row['name']?></a></li>
<? endforeach ?>
<ul>

简单,清洁和可维护。

这种方法有很多优点:

  • 根据要求,您可以使用实际页面相关数据填充标题。
  • 在任何输出之前,也可以发送HTTP标头。它包括cookie,会话,缓存控制等等。
  • 今天是2011年。 AJAX时代。您可能希望更改代码以返回JSONed数据而不是整个HTML页面。使用这样的布局会很容易。
  • 想象一下,您将使用不同的设计创建非常相似的网站。您只需更改模板,不要触摸引擎文件。这是使用模板的巨大优势。

答案 1 :(得分:0)

以下是一些您可以看到的简单方法。

  • 您可以在页面上使用jQuery 那不需要它;一旦它 下载它将被缓存,所以它 仍然不会使用更多的带宽。

  • 您可以移出结束</head> 从header.php标记并关闭 页面中的<head>标记包含在内 的header.php。

  • 您可以在任何地方添加javascript 在页面上,不仅在标题中。

您也可以这样做。 在执行require_once 'header.php';之前,您需要输入名为$jquery = true;

的变量

在header.php文件中,检查$jquery是否设置为true,如果是,则包含jQuery。

答案 2 :(得分:0)

在header.php中

你可以这样输入

<head>    
<?php echo $script; ?>
</head>

然后在您的customers.php中 你可以先分配变量

$script = '<script>...</script>'

然后

require_once 'header.php'

答案 3 :(得分:0)

一种可能的解决方案。

  1. 在包含header.php
  2. 之前创建一个全局变量
  3. 您在header.php
  4. 中测试此变量
  5. 如果是,则打印脚本或其他内容。像这样:

    <!-- Fragment of header.php -->
    <?php if ($i_want_jquery): ?>
    <script ...>
    ...
    </script>
    <?php endif; ?>
    
  6. 另一方面,模板可能是更好的解决方案。