MoonPoint Support Logo

 

Shop Amazon Warehouse Deals - Deep Discounts on Open-box and Used ProductsAmazon Warehouse Deals



Advanced Search
February
Sun Mon Tue Wed Thu Fri Sat
     
8
       
2006
Months
Feb


Wed, Feb 08, 2006 11:15 pm

Pcal

If you need to generate a calendar in HTML, Pcal will allow you do generate one. To generate an HTML file you specify the -H parameter. You specify the output file with the -o parameter. Otherwise output will go to standard output, e.g. the screen. You can specify that a calendar be created for an entire year by putting a two digit representation of the year at the end of the command line. You can specify text to be used for both the title of the webpage, i.e. what you commonly see in the top line of your browser, and for the webpage heading by using the -C parameter. E.g. to create a file /tmp/mycalendar.html for 2006 with a title and heading of "My 2006 Calendar", you could use the command below. Remember, the case of the letters you use for the parameter is significant. A -O is not the same as a -o.

pcal -H -o /tmp/mycalendar.html -C "2006 Calendar" 06

2006 Calendar created by the above command. The program can also produce postscript output.

If a file exists by that name in the specified directory, it will be overwritten. I've created a simple BASH script, generate-calendar, that takes 3 parameters, two of which are optional, that will check if the output file exists. If it does, it will prompt as to whether it should be overwritten.

Usage: generate-calendar -o output_file [-t title]  [-y yy]

The script takes optional title and year arguments

-o specifies the HTML output file, e.g. /example/index.html
-t specifies the title and heading for the HTML file
   If there is a space in the title enclose it in double quotes
-y specifies the year for the calendar, e.g. 06
   If no year is specified, the calendar will be created only
   for the current month

A companion program for pcal is Lcal, which generates a graphical "lunar phase" calendar for an entire year.

[/os/unix/programs/utilities] permanent link

Wed, Feb 08, 2006 12:09 pm

Including Files in a Web Page with PHP

If you want to pull in code from other files into your webpages, you can use the PHP include function.

Suppose you want to include a header and footer file in each webpage you create so that you don't have to type the same HTML code into each webpage to get a standard header and footer for each webpage. You can create a template directory beneath the root directory of your website and put two files there: header.php and footer.php. The files can contain standard HTML code, though of course you just have the snippets of code you need not the <html>, <body>, and other tags you would have in a complete webpage.

For instance, suppose you just want to include a logo for your site at the top of every page. You could create a header.php file with just the following code.

<div id="header" align="center">
<img src="/images/mplogo-white.jpg" alt="MoonPoint Support Logo">
</div>

Let's suppose that you have two directories called examples and template beneath the root directory for your website. You place all template files, such as header.php, footer.php, menu.php, etc. in the template directory. You want to place those in every webpage on your site. In the examples directory you have a webpage titled mywebpage.php. To include the header file in the page you could insert the following line at the appropriate place in mywebpage.php. You would insert similar lines for any other files you wished to include.

<?php include("../template/header.php"); ?>

Now, whenever you want to change the header file, you don't have to edit every webpage on the site and make the needed changes. You just edit header.php.

But one caveat to this approach is that you have to keep in mind the directory structure for the site every time you use the include function. For instance you may have 8 levels of directories beneath the root directory of your website. For a particular dirctory you might need to use <?php include("../../../../../template/header.php"); ?>. Keeping track of the number of dots and slashes you need can be a little cumbersome. And, if you rearrange the directory structure for the site, you may have to edit every webpage in the affected directories to put in the appropriate number of dots and dashes for the new directory structure.

However, you could also insert the following code provided by Paul Whitrow at PHP Include File Path Finder in the webpages instead.

<?php

function incfile($file,$d=""){
while(!is_file($d.$file)){$d.="../";}
include ($d.$file);
}

?>

Then instead of using PHP's include function to insert the header file, you could place the incfile function in your webpages where you want the header to appear, as below. Make sure you have inserted the incfile function code shown above prior to the point where you call it.

<?php incfile("template/header.php"); ?>

You could use either incfile("template/header.php"); or just incfile("header.php");. The incfile function will check the current directory, i.e. the one in which the webpage is located, for a subdirectory named template with header.php within it if you use the first form or will look for header.php within the current directory if you use the second form. If it doesn't find the requested file, then it will put a "../" in front of the directory path and try again. If it still doesn't find header.php, it will prepend another "../" and try again and so on.

So using including the incfile function in your webpages and calling it to look for files you want to include will save you from figuring out how many sets of dots and slashes you need to locate the file you want to include and from having to edit webpages to modify the number of dots and slashes should you alter the directory structure of your website.

One note of warning, though. The file you include must exist. Otherwise your website visitors may see many repetitions of lines like the following when they visit your webpages where you used incfile.

Warning: stat failed for ../../../../../../../../../../../../../../../../../../../.
in /www/mysite/examples/linux/test.php on line 22

References:

  1. PHP Include File Path Finder
    By Paul Whitrow
    September 28, 2005

[/languages/php] permanent link

Valid HTML 4.01 Transitional

Privacy Policy   Contact

Blosxom logo