CakePHP - include css based on specific pages?

12,316

I realize I can link the CSS file from the specific views, but - then they wouldn't be in the <head>. Is there a way to link from a view and have it show up in the head?

Yes, they would be in the head. See the HTML Helper documentation:

If key 'inline' is set to false in $options parameter, the link tags are added to the $scripts_for_layout variable which you can print inside the head tag of the document.

So, this snippet in your view...

$this->Html->css('my-css', null, array('inline' => false));

...will add the proper <link> element to your <head>.

Share:
12,316
Dave
Author by

Dave

Artist / Designer / Programmer

Updated on June 18, 2022

Comments

  • Dave
    Dave almost 2 years

    I want to include a specific css file that should be applied to the homepage, and 6-7 other pages throughout my site.

    I know I can do this via PHP, getting the URL, finding out what page, linking the css...etc, but I was wondering if there was a slick way (or any better way) using CakePHP to include the correct css file(s).

    I realize I can link the CSS file from the specific views, but - then they wouldn't be in the <head>. Is there a way to link from a view and have it show up in the head?

    I hope my questions make sense, and greatly appreciate any help.

    • Dave
      Dave about 13 years
      thanks for the edit - I guess it hid my head tag - i'm a stockoverflow noob :)
  • Dave
    Dave about 13 years
    Thanks a lot for leading me in the right direction! To clarify your answer for anyone else who is confused like me, you can "include" your css file from your view, but doing so via Cake's Html->css code, and setting it's option to inline=>false, like mentioned in above answer, it will add the css IN the head tag like you want it. It didn't work for me until I added null as the 2nd option though: <?php echo $this->Html->css('layout1', null, array('inline'=>false)); ?> Not sure if I did something wrong, or if you have to include the 2nd paramater as mentioned in the documentation.
  • Sander Marechal
    Sander Marechal about 13 years
    @Dave: You are correct. The options array is the third argumentm not the second argument. I updated my answer.
  • Cbas
    Cbas almost 11 years
  • Bsalvo
    Bsalvo over 2 years
    $this->Html->css('my-css', [], array('inline' => false)); since cakephp 4