Reputation:
I am Trying to get the page title (<title>bla..bla..bla..</title>
) to be changable in php with a multi-file layout like so:
Functions.php is included into index.php, then get_header() is called from functions.php to include the page header.php the title tag is inside the header file. I would like to be able to set the title from index.php how can i do this?
For examle this is what i have tried:
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:[email protected]?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. I only am including functions once all functions are available in the header and footer when functions.php is called in index.php
Upvotes: 1
Views: 4654
Reputation: 2080
Try to change
<? title('$t')?>
to
<? title($t)?>
in your code.
Upvotes: 1
Reputation: 10087
First, the file header.php
is being included from within a function, so it does not have access to the global variable $t
. You will need to do one of the following:
functions.php
:function get_header() {
global $t;
require_once('includes/header.php');
}
header.php
:<?php //include('functions.php')
global $t;
?>
<!DOCTYPE html>
<!-- etc -->
That way, the variable you have declared will be available to the function's local variable scope.
Second, you need to call the function with either double quotes or no quotes at all. Single quotes will not parse a variable.
title($t);
title("$t");
title("{$t}");
title('$t');
Here is the PHP Manual Page on the String datatype -- be sure to check out single quoted strings versus double quoted strings.
<?php
), and not the short open tags (<?
)title()
, should always return a value, and you can echo that, rather than echoing directly from inside the function.strleft()
function you implemented, though clever, already exists. See: strstr()
array_rand()
Upvotes: 7