Want different page titles for your PHP-based site, but still want to use a header.php include? No problem.
header.php
In your header.php file, change <title>Same Title Everywhere</title> to the following:
<?php
if (isset($title)) {
echo$title . " | Site Name";
}
else {
echo"Site Name";
}
?>
Change Site Name to the name of your site.
For example, my trading card post <title> tag looks like this:
<?php
if (isset($title)) {
echo$title . " | portia's post";
}
else {
echo "portia's post";
}
?>
What it means/does
if (isset($title)) {
echo$title . " | Site Name";
}
If you’ve defined $title in your other pages, it will display with a | as a separator, plus your site name. e.g. About | Autistic Jane.
else {
echo "Site Name";
}
If not, it will display your site name as a fallback, e.g. Autistic Jane.
Every single page
Before you call header.php, you need to define $title.
<?php
$title = 'Page Title';
include('header.php');
?>
e.g.
<?php
$title = 'About';
include('header.php');
?>
If you’re using a multi-page PHP file, e.g.
<?php
if (!$_SERVER['QUERY_STRING']) { //first page content that only stays on first page ?>
page stuff
<?php
}
elseif ($_SERVER['QUERY_STRING'] == "collecting") { // another page ?>
oh another page
<?php
} // close everything
?>
Then it will need to look like this:
<?php
if (!$_SERVER['QUERY_STRING']) { // main page
$title = 'Page Title';
include('header.php');
?>
yada yada
<?php
}
elseif ($_SERVER['QUERY_STRING'] == "page") { // another page
$title = 'Another Page Title';
include('header.php');
?>
There was another way I used to do this that didn’t require $title to be defined first, but I can’t find it at the moment.
I’ll update this post if I do.
Leave a comment