Question

For each page on the site I have a header and footer, so I decided to create a template for both then just include them on each page.

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

header.php contains:

<!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 contains:

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

The above codes are for the Items page however I also have Users page they both have the same footer and header markup however different linked CSS and JS files. How can change <link> and <script> inside the <head> tag on the header.php include file if the user navigates to the user page, for example: mysite.com/user/blabla.

The correct link for the Users page should be:

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

Solution

Use this format in all pages

<?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")?>

And in 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>

OTHER TIPS

Try this way

User Type Page

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

in other pages

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

and in header

<!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>

Split up your nav and header include.

header.php

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

nav.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")?>
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
}
?>

Try to set every page a variable for css and javascript like so:

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

on the header page you need to call those variable:

<!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>

You can do like this

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>';
}

And in your users files, give values to $custom_css and $custom_js before including header user.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")?>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top