Is it good practice to add a php include of the head section in my pages?
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.
Suzi Larsen
Updated on July 27, 2022Comments
-
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 over 11 yearsI 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 over 11 yearsthanks Jeffrey, that is a good point. I will include the tags in the file.
-
Ghasem over 11 yearsIt'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 about 10 yearsBut 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 about 10 years@Nrc, just have a
$title
variable inheader.php
and changed it per page. -
user3834119 almost 9 yearsThat's a great idea. Can you please also tell what would index.php(where we include these files) look like?