【问题标题】:Dynamic Titles question动态标题问题
【发布时间】:2009-12-28 21:33:02
【问题描述】:

如何通过此设置获得动态(我认为就是这个词)标题?例如,当我查看个人资料时,我希望它在<title> 中显示正在查看 USERNAME 的个人资料。如果不在每个单独的页面上放置 html 顶部,我怎么能做到这一点?

非常感谢。

请不要开始谈论 mvc,我不需要那个

<html>
<head>
<title>KALASHNIKOV - $??</title>    
</head>
<body>

<?php

switch($area) {

// The default page
default:
include_once('pages/main.php');
break;  

// This is for registering an account
case 'register':
include_once('pages/register.php');
break;

// This is to log in!! (obviously)
case 'login':       
include_once('pages/login.php');
break;

// This is for logging out
case 'logout':
logout();
break;

}

?>

</body>
</html>

【问题讨论】:

    标签: php include switch-statement


    【解决方案1】:

    好吧,如果您不想将 HTML 放在每个页面的顶部,我假设您将它放在一个单独的文件中,例如 header.php,它应该看起来像这样:

    <html>
    <head>
    <title><?= $page_title ?> - My Site</title>
    </head>
    

    然后在你的每个页面上,你只需要在包含它之前设置$page_title,就像

    $page_title = 'My Page';
    include 'header.php'
    

    无论如何,这是解决问题的一种方式。

    【讨论】:

      【解决方案2】:

      每个子页面都应该执行以下操作:

      <?php require('header.php') ?>
      

      header.php 会有类似的东西:

      <title>KALASHNIKOV - <?php echo $GLOBALS['pageTitle'] ?></title>
      

      或者使用支持模板和sn-ps的zend framework

      【讨论】:

        【解决方案3】:

        我会在你的 php 文件的顶部创建一个这样的数组(可能太复杂但随着你的网站可能变得更大,这样解决它会更容易):

        <?php
        error_reporting(E_ALL); // that's always good
        
        $sites = array(
            'default' => array(
                'pages/main.php',
                'Main title'
            ),
            'register' => array(
                'pages/register.php',
                'Register'
            ),
            'login' => arary(
                'pages/login.php',
                'Login'
            }
        );
        
        $title = array_key_exists($area,$sites) ? $sites[$area][1] : $sites['default'][1];
        ?>
        <html>
        <head>
        <title>KALASHNIKOV - <?=$title?></title>    
        </head>
        <body>
        <?php
        if (array_key_exists($area,$sites))
            require $sites[$area][0];
        else
            require $sites['default'][1];
        ?>
        

        【讨论】:

          【解决方案4】:

          把它放在你页面的任何地方:

          <script language="JavaScript">document.title ="KALASHNIKOV - blablabla";</script>
          

          【讨论】:

            【解决方案5】:

            看起来您可以从额外的层中受益。与其让您的内容页面使用 switch 来包含内容,不如使用一个单独的脚本,使用 switch 来设置内容和标题(以及您可能认为必要的任何其他内容)。

            $title = "KALASHNIKOV - "
            $include_page = "content.php"
            $content_page = "pages/404.php";
            switch($area) {
            
            // The default page
            default:
                $content_page = 'pages/main.php';
                break;  
            
            // This is for registering an account
            case 'register':
                $content_page = 'pages/register.php';
                break;
            
            // This is to log in!! (obviously)
            case 'login':       
                $content_page = 'pages/login.php';
                break;
            
            // This is for logging out
            case 'logout':
                $include_page = 'logout.php';
                break;
            
            }
            
            require_once $include_page;
            

            content.php:

            <html>
            <head>
            <title><?php echo $title; ?></title>    
            </head>
            <body>
            
            <?php require_once $content_page; ?>
            
            </body>
            </html>
            

            然后 logout.php 会调用logout() 并在那里做任何事情,我不知道你是如何处理的。

            这种方法也更好地支持逻辑与表示的分离,这总是一个好主意。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-05-14
              • 2021-10-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-01-02
              相关资源
              最近更新 更多