On Thu, 21 Oct 2010 10:55:14 -0400 Paul M Foster <paulf@xxxxxxxxxxxxxxxxx> wrote: > On Thu, Oct 21, 2010 at 04:05:50AM +0200, Rico Secada wrote: > > > Hi. > > > > I am working on a small system where I am both trying to avoid code > > duplication and at the same time I am trying to keep the > > presentation logic separated from the application logic. > > > > I am using sessions and are avoiding "headers already sent" problem > > by keeping the HTML out of the application. > > > > For example, I would like to have a common header.php file, but it > > is difficult to create this since one file needs to have some > > specific Javascript located in the <head> </head> tags, but the > > other files doesn't need this. > > > > Another file needs to have a specific "onload" call in the <body> > > tag, while yet another file also needs to have an "onload" call, > > but with different attributes. > > > > I have been looking around in other systems to see what kinds of > > solutions are being used - as inspiration. > > > > I have been thinking about the following solutions: > > > > 1. Create only ONE header.php file that contains a lot of > > conditionals depending on what file is including it - the output of > > HTML/Javascript changes. > > > > I believe this would turn into a very ugly hack. Difficult to > > maintain. > > Not really. Here's what I do. I have a page controller which defines > variables and such, and then calls the header.php file. The page > controller will contain something like this: > > $meta['jsfiles'] = 'onload.js'; > > The header.php will contain code like this: > > <?php if (!empty($meta['jsfiles'])): ?> > <?php include $meta['jsfiles']; ?> > <?php endif; ?> > > The page controller can also contain a variety of other settings, > like: > > $meta['content'] = 'cust_add.php'; > > and the header.php will contain: > > <?php include $meta['content']; ?> > > This directs the proper internal content for the header.php, which is > really like a "template" file. > > Also remember that at the bottom of the page controller, you do a like > like this: > > include 'header.php'; > > You can change this as you like for any given page controller. > > Paul > > -- > Paul M. Foster Thanks Paul! It's a nice way to do it. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php