Forums / Setup & design / Generating CSS dynamically / Setting a content type

Generating CSS dynamically / Setting a content type

Author Message

Ben Peter

Friday 18 March 2005 12:12:38 am

Hi,

I am generating CSS stylesheets dynamically in eZ publish. This is somewhat related to Jason's post: http://ez.no/community/forum/setup_design/image_links_within_a_linked_css_file

I am doing this to set background images on menu items, etc. and don't want to mess up the html.

All is rather straightforward: I edited layout.ini.append.php for the user site to include the following

[css]
PageLayout=css_pagelayout.tpl

Then, I use css_pagelayout.tpl to create the CSS I need. eZ publish is such a great tool.

The only thing that does not work ok is that eZ publish sets the Content-Type header to text/html, and I cannot find any place to change this.

Has anyone created an alternative layout for a site that uses another content type? I have searched the eZ publish site, but I cannot find any hints.

Thanks,
Ben

Paul Forsyth

Friday 18 March 2005 1:14:44 am

Index.php has the Content-Type header you are after. But it looks like the layout is set after the header is issued.

You could try moving the headers down to later in index.php...

Paul

Ben Peter

Friday 18 March 2005 1:49:52 am

Hi Paul,

thanks for your reply.

I don't think I'm firm enough with eZ publish to meddle with the index.php.

I have tested several browsers in the meantime, and they do not seem to bother about the Content-Type header that comes with a CSS in a <link/> tag. I'll rather rely on that behaviour until I have read and understood more of the eZ publish sources.

Cheers,
Ben

Ben Peter

Saturday 19 March 2005 2:30:58 pm

I have investigated a bit and have found that it should be no problem to override the content-type header later, as output buffering is in place.

So, I have added the following in kernel/layout/set.php at line 56:

    if ( $layoutINI->hasVariable( $LayoutStyle, 'ContentType' ) ) 
        Header("Content-Type: " . $layoutINI->variable( $LayoutStyle, 'ContentType' ));

This allows setting an optional content type in layout.ini.append.php:

[css]
PageLayout=css_pagelayout.tpl
ContentType=text/css

If anybody has ideas on how to enhance this, or concerns about the approach, I would be glad to hear back from you.

Cheers,
Ben

Paul Forsyth

Sunday 20 March 2005 4:23:39 am

Ben, Im going to try this out shortly. Its a very nice idea!

It opens up a lot of possibilities.

paul