Re: php selecting multiple stylesheets

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, 2010-02-07 at 23:45 -0500, Paul M Foster wrote:

> On Sun, Feb 07, 2010 at 11:20:18PM -0500, David Mehler wrote:
> 
> > Hello,
> > I'm trying to set up a web site. This site has multiple stylesheets,
> > one default stylesheet that should be used if the other is not chosen.
> > The second is a high contrast stylesheet and can be selected by user's
> > who need it. I'm also thinking of adding two more for smaller and
> > larger font selections. My issue is I want the high contrast sheet to
> > be used on all subsequent pages and on subsequent visits to the site
> > by user's who have selected it. I thought of using php with this and
> > cookies. I'm using php5 and would appreciate any suggestions, googling
> > has shown some examples, but none are working.
> > Thanks.
> > Dave.
> 
> There are two main PHP-centric solutions to this. First is cookies (as
> you described) and the second is using the $_SESSION global array.
> 
> Doing this is relatively straightforward, so if it's not working for
> you, I see two possibilities: 1) You're not actually doing it right. 2)
> The users isn't pressing the "Reload" button after selecting the
> stylesheet. (My experience has been that simply redisplaying a page will
> not clear the cached CSS styles for that page. You must hit the "Reload"
> button. In fact, in some cases, like offices with caching webservers or
> proxies, an admin will have to be called in to clear the cache on the
> proxy/server as well.)
> 
> You should be able to do something like this (I'm using SESSION
> variables because cookies are more complicated):
> 
> <?php
> // Top of page
> session_start();
> 
> if ($_SESSION['stylesheet'] == 'enlarged_print')
> 	$css = 'enlarged_print.css';
> else
> 	...
> 
> ?>
> <html>
> ...
> <link href="<?php echo $css; ?>" rel="stylesheet" type="text/css"/>
> ...
> </html>
> 
> Paul
> 
> -- 
> Paul M. Foster
> 


I'm doing this on my own site, and it works like this:

The stylesheets are output in <a> tags, so that a user can click on one
to select a style, refreshing the page.

In the header include, I check first to see if a new style was sent in
the $_GET array, then the $_SESSION array, then finally to see if there
is a stylesheet entry in the $_COOKIES array. If none is found, a
default is assumed, and I write this value to both the $_SESSION and
$_COOKIES array. By checking them in the order above, it lets a user
pick a new one from a link, and will remember their choice throughout
their current session and any subsequent visits to the site.

As all the stylesheets are included in the pages with the correct <link>
tags anyway, anyone with a compatible browser (Firefox, Opera, etc) can
select the style from a drop menu directly in the browser, although it's
better to use the links, as the browser doesn't remember the choice from
page to page.

Thanks,
Ash
http://www.ashleysheridan.co.uk



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux