php中的动态标题

时间:2010-10-29 16:13:29

标签: php function variables title

我试图让页面标题(<title>bla..bla..bla..</title>)在php中具有可更改的多文件布局,如下所示: Functions.php包含在index.php中,然后从functions.php调用get_header()以包含页头header.php title标签位于头文件中。我希望能够从index.php设置标题我该怎么做?

为了检验这是我尝试过的:
的index.php:

<? require_once('includes/functions.php'); global $t; $t = '/home/s0urc3'; get_header();?>

<div id="main">

    <h2><a href="NEEDED" rel="bookmark" title="Permanent Link to NEEDED">NEEDED</a></h2>


    <p class="postmeta"><a href="<?php page_url(yes)?>" class="readmore">Permalink</a> | <span class="date">Revision Date</span></p>

        <p>CONTENT AND CRAP</p>

    <!-- main ends -->  
</div>
<?php /*test*/echo($title);/*test*/ get_footer();?>

的header.php:

<?php //include('functions.php')?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<? title('$t')?>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
<?php get_theme_css()?>
</head>

<body>
<!-- wrap starts here -->
<div id="wrap">

    <!--header -->
    <div id="header">               
        <h1 id="logo-text"><a href="<?php echo (HOME)?>"><img src="<?php get_url('images/Logo.png')?>" alt="S0URC3"><!-- S0URC3 --></a></h1></div>  

<p id="intro">
        Just another poorly coded website!
        </p>
        </div>
        <div id="nav">
            <!-- <div id="navi"><div id="menu" class="fixed"> -->
            <ul class="">
            <li class=""><a href="http://s0urc3.ismywebsite.com">Home</a></li>
            <li class=""><a href="http://blog.s0urc3.ismywebsite.com">Blog</a></li>
            <li class=""><a href="http://forums.s0urc3.ismywebsite.com">Forums</a></li>
            <li class=""> <a href="mailto:ellisgeek@gmail.com?subject=Comments">Comments</a></li>
            <!--<li class="">Clans</li>-->
            <li class=""><a href="http://astro.s0urc3.ismywebsite.com">-astro-</a></li>
            <!--<li class=""><a href="#">Inspiration</a></li>
            <li class=""><a href="#">Resources</a></li>         
            <li class=""><a href="#">Tutorials</a></li>         
            <li class=""><a href="#">WordPress</a></li>-->          
        </ul><!-- </div></div> -->

        </div>                  
    <!--header ends-->                  
    </div>

    <!-- content-wrap starts -->
    <div id="content-wrap">

的functions.php:

<?php
require_once('constants.php');
  //===============//
 //Start Functions//
//===============//

//Gets a file from the domain http://files01.s0urc3.ismywebsite.com/
function get_url($file)
{
echo (FILE_ROOT . $file);
}

//gets the url of the theme
function get_theme_css() {echo('<link rel="stylesheet" href="' . FILE_ROOT . 'colourise/style.css" type="text/css" />');}

function get_header() {require_once('includes/header.php');}

function get_footer() {require_once('includes/footer.php');}

//Gets the URL of the current page
function page_url($p)
{
    $s = empty($_SERVER["HTTPS"]) ? ''
        : ($_SERVER["HTTPS"] == "on") ? "s"
        : "";
    $protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s;
    $port = ($_SERVER["SERVER_PORT"] == "80") ? ""
        : (":".$_SERVER["SERVER_PORT"]);
        if ($p == 'yes')
  echo ($protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI']);
else
    return $protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI'];
}
function strleft($s1, $s2)
{
    return substr($s1, 0, strpos($s1, $s2));
}

//gets the year
function cur_year() {echo (YEAR);}

function ads($code) {echo('<script type="text/javascript" src="http://links.ismywebsite.com?i='. $code .'"></script>');}

function title($title)
{echo('<title>Index Of: '.$title.'</title>');}
  //=============//
 //End Functions//
//=============//
?>

P.S。在index.php中调用functions.php时,只有在页眉和页脚中提供所有函数时才包含函数

2 个答案:

答案 0 :(得分:8)

首先,文件header.php正在函数中包含,因此它无权访问全局变量$t。您需要执行以下操作之一:

functions.php

function get_header() {
    global $t;
    require_once('includes/header.php');
}

或者,在header.php

<?php //include('functions.php')
global $t;
?>
<!DOCTYPE html>
<!-- etc -->

这样,您声明的变量将可用于函数的局部变量范围。

其次,您需要使用双引号或根本没有引号来调用该函数。单引号不会解析变量。

  • title($t);
  • title("$t");
  • title("{$t}");

错误

  • title('$t');

Here is the PHP Manual Page on the String datatype - 请务必查看单引号字符串与双引号字符串。

Nitpicky Things:

  • 您应该始终使用完整的开始标记(<?php),而不是短开标记(<?
  • 你的函数,如title(),应该总是返回一个值,你可以回应它,而不是直接从函数内部回显。
  • 您实施的strleft()功能虽然很聪明,但已经存在。请参阅:strstr() 实际上,此功能与您想要的相反;我错误地记得它做了什么。继续。再次编辑:不,显然我是对的,你将可选的第三个参数传递为true。您通常应该使用已经存在的函数,因为除了某些例外情况,它们会更快。

答案 1 :(得分:0)

尝试更改

<? title('$t')?>

<? title($t)?>

代码。