【问题标题】:php templating header and footerphp模板页眉和页脚
【发布时间】:2014-02-19 06:00:16
【问题描述】:

对于网站上的每个页面,我都有一个页眉和页脚,因此我决定为两者创建一个模板,然后将它们包含在每个页面上。

<?php include_once("header.php")?>
   contents of the page...        
<?php include_once("footer.php")?>

header.php 包含:

<!DOCTYPE html>
<head>
<title>Items Page</title>
<link rel="stylesheet" href="assets/css/item.css">
<script src="assets/css/item.js"></script>
</head>
<body>
    <header>
        contains a navigation bar  
    </header>

footer.php 包含:

    <footer>...</footer>
</body>
</html>

以上代码用于项目页面,但我也有用户页面,它们都有相同的页脚和页眉标记,但链接的 CSS 和 JS 文件不同。如果用户导航到用户页面,如何更改 header.php 包含文件上的 &lt;head&gt; 标记内的 &lt;link&gt;&lt;script&gt;,例如:mysite.com/user/blabla

用户页面的正确链接应该是:

<link rel="stylesheet" href="assets/css/user.css">
<script src="assets/css/user.js"></script>

【问题讨论】:

  • 你有用户的登录页面,或者只是静态页面
  • 是的,我有登录名,有必要知道吗?

标签: php html php-include


【解决方案1】:

在所有页面中使用此格式

<?php    
    $page_title = "title_here";
    $cssfiles   = array("path/to/css1.css", "path/to/css2.css", ...);
    $jsfiles    = array("path/to/js1.js", "path/to/js2.js", ...);    
?>
<?php include_once("header.php")?>
   contents of the page...        
<?php include_once("footer.php")?>

而在 header.php

<head>
    <title><?php echo $page_title;?></title>
    <?php
    foreach($cssfiles as $css){
    ?>
        <link rel="stylesheet" href="<?php echo $css;?>">
    <?php
    }
    foreach($jsfiles as $js){
    ?>
        <script src="<?php echo $js;?>"></script>
    <?php
    }
    ?>
</head>

【讨论】:

    【解决方案2】:

    试试这个方法

    用户类型页面

    <?php
    $pageType = 2; // USER
    ?>
    <?php include_once("header.php")?>
       contents of the page...        
    <?php include_once("footer.php")?>
    

    在其他页面中

    <?php
    $pageType = 1; // OTHER
    ?>
    <?php include_once("header.php")?>
       contents of the page...        
    <?php include_once("footer.php")?>
    

    在标题中

    <!DOCTYPE html>
    <head>
    
    <?php if ( $pageType == 1 ) { ?>
        <title>Items Page</title>
        <link rel="stylesheet" href="assets/css/item.css">
        <script src="assets/css/item.js"></script>
    <?php } else if ( $pageType == 2 ) { ?>
        <title>User Page</title>
        <link rel="stylesheet" href="assets/css/user.css">
        <script src="assets/css/user.js"></script>
    <?php } ?>
    </head>
    

    【讨论】:

      【解决方案3】:

      拆分您的导航和标题包含。

      header.php

      <!DOCTYPE html>
      <head>
      <title>Items Page</title>
      <link rel="stylesheet" href="assets/css/item.css">
      <script src="assets/css/item.js"></script>
      

      导航.php

      </head>
      <body>
      <header>
          contains a navigation bar  
      </header>
      

      whatever.php

      <?php include_once("header.php")?>
      <link rel="stylesheet" href="assets/css/user.css">
      <script src="assets/css/user.js"></script>
      <?php include_once("nav.php")?>
      

      【讨论】:

        【解决方案4】:
        session_start();
        if($_SESSION['user'])
        {
        ?>
         <link rel="stylesheet" href="assets/css/item_user.css">
            <script src="assets/css/item_user.js"></script>
        <?php
        }
        else
        {
        ?>
        <link rel="stylesheet" href="assets/css/item.css">
            <script src="assets/css/item.js"></script>
        <?php
        }
        ?>
        

        【讨论】:

          【解决方案5】:

          尝试为每个页面设置一个用于 css 和 javascript 的变量,如下所示:

           $css        = 'assets/css/user.css';
           $javascript = 'assets/css/user.js';
          <?php include_once("header.php")?>
             contents of the page...        
          <?php include_once("footer.php")?>
          

          在标题页上你需要调用这些变量:

          <!DOCTYPE html>
          <head>
          <title>Items Page</title>
          <link rel="stylesheet" href="<?php echo $css; ?>">
          <script src="<?php echo $javascript; ?>"></script>
          </head>
          <body>
              <header>
                  contains a navigation bar  
              </header>
          

          【讨论】:

            【解决方案6】:

            你可以这样做

            header.php

            if(!isset($custom_css)) {
                echo '<link rel="stylesheet" href="assets/css/item.css">';
            }
            
            if(!isset($custom_js)) {
                echo '<script src="assets/css/item.js"></script>';
            }
            

            在您的用户文件中,在包含标题之前为 $custom_css$custom_js 赋值 用户.php

            $custom_css = '<link rel="stylesheet" href="assets/css/user.css">';
            $custom_js = '<script src="assets/css/item.js"></script>';
            <?php include_once("header.php")?>
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-08-17
              • 2016-08-28
              • 1970-01-01
              • 1970-01-01
              • 2020-01-02
              • 2014-02-17
              相关资源
              最近更新 更多