Before building a site, every webmaster has to make a decision on what layout method to use. Most seem to go with either a frame or a table-based layout, the latter being more popular in these days. While both of these have their advantages and disadvantages, a frame-based site is usually easier to update. If you happen to have a 200-page site with the same navigation on every page, adding one link to the navigation menu might require you to edit all of the pages if the design is built with tables. On the other hand, if the site uses frames, you can get by with changing just a few files and save yourself a lot of time.
No, I’m not trying to convince you to switch to frames. I myself use tables and am not going to change my layout. The only problem is that over time, sites tend to grow. It just might be possible to edit around 20 pages when you want to change something, but when we start talking 50 or over one hundred, it just doesn’t seem like a good idea. Unless you are prepared to spend hours trying to keep your navigation menu up to date, you have to come up with a better way of doing things.
SSI’s To The Rescue
If your host supports Server Side Includes and is running Apache, you can use this article to make your table design as easy to maintain as it would be if you were using frames. The best part is that visitors won’t even notice that you have changed anything. After the new system is in place, they will see exactly the same design and HTML code as before, but you will be saved from hours of monotonous work.
Server Side Includes, or SSI’s, can be used in many ways. With them you can execute CGI programs, display the current date & time on your page and do plenty of other things as well. In this article, we use them for including external files to your HTML. The idea is to create a separate file from your navigation menu and use SSI’s to point to it, requiring you to merely edit one file when you wish to change the navigation.
Should you have some knowledge of Server Side Includes, you might be a little worried. Doesn’t this require that you rename all your pages from “.html” to “.shtml” if you want it to work? That would take a lot of time, break the links that are pointing to your site and you might have to resubmit your pages to the search engines. Is it reasonable to go through all that trouble to make maintaining your site a little easier?
Fortunately, there’s no need to start renaming any files. You can simply instruct the server to treat your “.html” files as “.shtml” files and execute all SSI instructions in them. This can be done with a “.htaccess” file. If you already have one, you’ll have to edit it. If you don’t, open up a text editor, such as Notepad, and paste the following lines into a blank file. Be sure to replace .html with .htm, if you’re using that extension.
AddType text/html .html
AddHandler server-parsed .html
Save the file in “All files” mode and name it “.htaccess”. Include the quotes so that Notepad won’t decide to name the file “.htaccess.txt”.
Changing Your Pages
After the .htaccess file has been created, you’ll have to make changes to your HTML files. To be on the safe side, take backups of them before doing anything. Then, paste the HTML you use to generate the menu from one of your pages into a blank file. Save the file as “navig.html” for example. Next, remove the navigation menu from all of your pages. Replace it with the following line:
<!–#include file="navig.html" –>
What you’re doing is telling the server to insert the code from “navig.html” into the page. This will be done before the page is sent to the user who has requested it, so anyone visiting your site will merely see a normal HTML file. When you have finished editing your files, connect to your host via FTP and upload the “.htaccess” file, the “navig.html” file and the new versions of your content pages.
Then it is time for the true test, trying to visit your site and see what happens. If you have done everything correctly, you should see that your pages look the same as before. However, if you make a simple change to the “navig.html” file, it will apply to the navigation menu of every page. What used to take minutes or even hours can now be done in seconds, giving you the possibility to use that valuable time to do something other than changing the HTML code of each page separately.