Question: I don't know whether I am missing a trick in HTML. I have one simple HTML website which has over 100 HTML pages. For each page the header, sidebar & footer section are the same but the content is different. Can I simply make this site like Wordpress where the page is formed by header.php, footer.php, page.php & sidebar.php. I know I will still have to work on page.php kind of files. 

This will simplify the file structure of the site. Also I want to know whether this solution is good in SEO perspective or not.

Answer: 
Just create your own tiny framework
-----------------------------------

A very simple version of your request would be something like this:

```
<?php
$templateLocation = $_SERVER['DOCUMENT_ROOT'].'/templates';
$defaultPage = 'home';
// Open your page with the frame, the footer , header etc
$template = file_get_contents($templateLocation.'/main_template.html');

// Get the page from the url, or use a default
$page = isset($_GET['page']) ? $_GET['page'] : $defaultPage;

// Check if the page exists:
if( !file_exists($templateLocation.'/pages/'.$page.'.html') ){
    // if it doest exist, go to the homepage (and tell bots 404, page not existing):
    header("Location: /".$defaultPage, true, 404); 
    exit;
}
else{
    // Get the content of the requested page
    $pageContent = file_get_contents($templateLocation.'/pages/'.$page.'.html');
    // Place it in our main page
    $template = str_replace("<!-- CONTENT -->", $pageContent, $template);
    // Put it on the screen:
    echo $template;
}

```

Matching html example for `main_template.html`:

```
<html>
<body>
    <header> <img src="my-logo.jpg" alt="Logo"/> </header>
    <div id="PageContent"><!-- CONTENT --></div>
    <footer> Some neat information right here</footer>
</body>
</html>

```

You can now link to your pages with `?page=example` or `?page=puppies` and the code above will check if the page exists, is so -> load it.

---

Now we have a simple framework for switching pages, but SEO-wise it's terrible. No titles, no meta's. Let's fix that!

### Let's add a little SEO to the mix

At this point it's a bit more difficult to help you with an answer. I'm going to base my answer on the fact that you have or can learn basic mysql functionallity. This could be done with more templates, but you want to save time, let's do it right the first time.

Just create a database table with the columns `id,url,title,description`

```
<?php
$sPageInfo = mysqli_query("SELECT * FROM pages WHERE url='".$page."' LIMIT 1");
$fPageInfo = $sPageInfo->fetch_assoc(); // fetch the selected values
$template = str_replace("<!-- SEO_TITLE -->", $fPageInfo['title'], $template);
$template = str_replace("<!-- SEO_DESCRIPTION -->", $fPageInfo['description'], $template);

```

Just place that piece of code above your `echo $template;` and add the corresponding comments to your template.  

**Note:** The query is MEGA unsafe, read up on mysql injections to improve this. That is a must! My example is easier to read like this, but you REALLY should implement it.  

**Note 2:** If you're feeling brave, expand your database with a column called 'content' and load that instead of a template ;)
Yes, you can do this by using PHP `include` statement to call your header, sidebar and footer whenever you need to include them in a page using `<?php include 'header.php';?>`

> 
> **Note:** In this case would be better to create files with the **.phtml** extension, so you can either put HTML or PHP code inside of it. `<?php include'header.phtml';?>`
> 
> 
> 

* The include (or require) statement takes all the text/code/markup
that exists in a specified file and copies it into the file that
uses the include statement. Including files is very useful when you want to include the same PHP,
HTML, or text on multiple pages of a website.
* Including files saves a lot of work. This means that you can create a
standard header, footer, or menu file for all your web pages. Then,
when the header needs to be updated, you can only update the
**header.php** file.

Let's say we have a code for the header within a file called "**header.php**" that looks like this:

```
<header class="header">Welcome to my website!</header>

```

To include the header file in a page, use the include statement:

```
<html>
<body>

<?php include 'header.php';?>
<p>Some text.</p>
<p>Some more text.</p>
<footer class="footer"> ... </footer>

</body>
</html>

```

When to use include and when to use require?
--------------------------------------------

The require statement is also used to include a file into the HTML/PHP code.

However, there is one big difference between include and require. When a file is included with the include statement and PHP cannot find it, the script will continue to execute, while when using the require statement a fatal error will be produced:

* require will produce a fatal error (E\_COMPILE\_ERROR) and stop the the script  

`Use require when the file is required by the application.`
* include will only produce a warning (E\_WARNING) and the script
will continue  

`Use include when the file is not required and application should continue when file is not found.`