代码之家  ›  专栏  ›  技术社区  ›  kilrizzy

使用模板include file/Process include和save in变量的标题(“位置”)

  •  0
  • kilrizzy  · 技术社区  · 16 年前

    我在想办法:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <?php include_once(NAKIDROOT."includes/head.php"); ?>
    </head>
    <body>
    <div id="all">
      <div id="page">
        <?php include_once("includes/header.php"); ?>
        <div id="main">
          <div id="left">
            <?php include_once("includes/left.php"); ?>
          </div>
          <div id="content">
          <?php include_once("includes/messages.php"); ?>
          <?php include_once("includes/page.php"); ?>
          </div>
          <?php include_once("includes/footer.php"); ?>
        </div>
      </div>
    </div>
    </body>
    </html>
    

    如果需要的话,我希望includes能够运行header(Location),所以我似乎需要让php读取每个includes文件。

    有没有一种方法来呈现include,先检查标题和内容,然后将其内容放入变量中,这样我的结构文件就会变成这样

    <div id="page">
        <?php echo($header); ?>
        <div id="main">
          <div id="left">
            <?php echo($left); ?>
          </div>
          <div id="content">
          <?php echo($messages); ?>
          <?php echo($page); ?>
          </div>
          <?php echo($footer); ?>
        </div>
      </div>
    
    1 回复  |  直到 16 年前
        1
  •  4
  •   Daniel Egeberg    16 年前

    在HTTP响应主体上启动后,不能发送头(即,在输出某些内容后,这包括外部的内容) <?php 标签)。一个快速解决方法是使用输出缓冲 ob_start() 以及相关功能。不过,这只是一个创可贴;您应该尝试重新构造代码,以便尽可能不必依赖输出缓冲。

    使用 ob\u start() ob_end_flush()