Is it good practice to add a php include of the head section in my pages?

12,939

Solution 1

Yep, it's quite standard. But instead of writing:

<head>
    <?php include('head.php'); ?>
</head>

you should put the tags inside head.php. I say it's better because what's inside head.php has no sense without the head tags, so they are kinda linked together. It's good practice to join things so linked into a single file without having to repeat open and close head tags for each page.

Actually, it's even good practice (and commonly used) to have header.php, body.php and footer.php files that has respectively:

header.php

<html>
<head>
...
</head>
<body>

body.php

...

footer.php

</body>
</html>

Solution 2

I'm doing that in my application but I've found that it's not a good idea, because you have many of your stylesheets, javascripts, etc in a php file including the head section and you'll have problems with including it in php files in nested folders. this problem is because of relative paths. If you can use absolute paths then it's ok otherwise it's not a good idea ...

Solution 3

PHP Includes are used like this all the time. Any time that you have content that will be the exact same on every page, it is very helpful to use an include

Solution 4

This is an old topic but I use

    <?php include_once("phpinclude/head.txt"); ?>

phpinclude is it's own folder and I keep the footer, header, and common place info in that folder. .js, and .css has it's own as well.

Edit: I use require now. I would rather have a code fail and die rather than give some random string. They are the same except one dies and the other will print out an error or random code. This is for people learning PHP, not old heads.

Share:
12,939
Suzi Larsen
Author by

Suzi Larsen

Updated on July 27, 2022

Comments

  • Suzi Larsen
    Suzi Larsen almost 2 years

    I am creating my portfolio site and I am wanting to include the head section as a php include on my page. Reason being is because the site will have a fair few pages and I will want to make changes later on to things later on like tidying up the css files.

    For example;

    <head>
        <?php include('head.php'); ?>
    </head>
    

    as opposed to all this below being shown on each and every page:

        <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <title></title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width">
    
        <link rel="stylesheet" href="css/normalize.css">
        <link rel="stylesheet" href="css/main.css">
        <link rel="stylesheet" href="css/1140.css">
        <link rel="stylesheet" href="css/ie.css">
        <script src="js/vendor/modernizr-2.6.1.min.js"></script>
    </head>
    

    I just didn't know if this was good practice to do, as with this being my portfolio site, I need the code to be correct from the start also as they will probably look into the standard of it also.

    What are your opinions and advice people? Thanks.

  • Suzi Larsen
    Suzi Larsen over 11 years
    I think there is a way round that, <?php include('/head.php') as that takes it back to the root and includes it from there. Then just making sure everything in the include files has the / infront. for example: <link rel="stylesheet" href="/css/main.css"> It seems to work for me. However there may be issues with doing that which I am not aware of?
  • Suzi Larsen
    Suzi Larsen over 11 years
    thanks Jeffrey, that is a good point. I will include the tags in the file.
  • Ghasem
    Ghasem over 11 years
    It's not taking back to the root to include the head.php or css file, it's just relative to the current script location. (I'm talking about windows, not sure about linux environment) You can use this method in small applications, but not a good idea for big applications. As bigman said, templating and MVC seems to be good for large apps
  • Nrc
    Nrc about 10 years
    But if you put all the head in the external file you will have to put the title and description of the page, and this must be different in each page. Am I missing anything?
  • Shoe
    Shoe about 10 years
    @Nrc, just have a $title variable in header.php and changed it per page.
  • user3834119
    user3834119 almost 9 years
    That's a great idea. Can you please also tell what would index.php(where we include these files) look like?