If you really need to change the layout per-page, then extending the
page_controller is the way to go. There's a bakery article on this
subject [http://bakery.cakephp.org/articles/view/taking-advantage-of-
the-pages-controller]

Basically, if you have a page called 'faq' then the pages controller
method 'faq' will be called (if it exists), so you'd go:

class PagesController extends AppController {
  // ...

  function faq() {
    $this->layout = 'eggs';
  }

  function about() {
    $this->layout = 'bacon';
  }

  // ...
}

> Do I really need to make an *empty* model, an *empty* database table
> and an *empty* controller - just to set the layout of a static page?

Nope. You do need a controller, but not a model or database table. The
pages controller is an example of how to do this.

------------------------------

If it's just a matter of the javascript though, that doesn't require a
different layout [assuming you're on 1.2 - you didn't say]:

/app/views/pages/one.thtml

<h1>This page has no extra script</h1>
<p>blabla bla</p>

/app/views/pages/two.thtml

<?php $javascript->link('mootoolscomp', false); ?>
<?php $javascript->codeBlock(<<<SCRIPT
      window.addEvent('domready', function() {
        // something here
      });
SCRIPT;
, array('inline' => false)); ?>
<h1>This page DOES have extra scripts</h1>
<p>hahaha</p>



On Apr 17, 9:54 am, kaffe <[EMAIL PROTECTED]> wrote:
> But I think my issue is as follows:
>
> Do I really need to make an *empty* model, an *empty* database table
> and an *empty* controller - just to set the layout of a static page?
>
> I have tried to take the cake page_controller and moving it to my app/
> controllers/... but still I have this issue that I have pages that are
> mostly HTML that just need to set the layout or for instance just be
> behind a loging.
>
> I am not sure if its is possible, but it would seem that making static
> pages are a bit difficult? It might be due to my ignorance... =)
>
> Kind regards
>
> Kristian
>
> On Apr 17, 3:08 am, aranworld <[EMAIL PROTECTED]> wrote:
>
> > Here is where you can get this kind of 
> > answer:http://book.cakephp.org/view/94/views#layouts-96
>
> > Create two layout templates and put them in the views/layouts
> > directory.  Lets say:
>
> > default.ctp
> > plain_jane.ctp
>
> > Now in your controller action function, add the following:
>
> > $this->layout = 'default';
>
> > or
>
> > $this->layout = 'plain_jane';
>
> > And either default or plain_jane will be used.
>
> > On Apr 16, 11:48 am, kaffe <[EMAIL PROTECTED]> wrote:
>
> > > Hi,
>
> > > I am new to cake, but I have run into an annoying issue (I have spend
> > > a few days reading cakephp.org, searching google, reading the IBM turs
> > > etc).
>
> > > Heres the deal I have two problems:
>
> > > I am building a site that has some pages with database content that
> > > would require models and controllers; but I am also having several
> > > pages that are static - needless to say they go in: app/views/pages/
>
> > > For instance: about.thtml, faq.thtml - these pages does IMHO not need
> > > to go to the database, its only a few Kb of data and I like just doing
> > > them as plain html.
>
> > > We can imagine having one layout for a page with many pictures and
> > > another for a faq that is mostly plain text and just one long column?
>
> > > Issue:
> > > How do I load different app/views/layouts/ via app/views/pages/? it
> > > seems that some stuff has already rendered by the time we get to the
> > > app/views/pages/ content ... is there a workaround or proper way of
> > > doing it?
>
> > > Also, we can imagine that one type of page would require the inclusion
> > > of a 60 kb Javascript in the layout whereas another page does not need
> > > to include this...
>
> > > e.g.
>
> > > <head>
> > > <title><?php echo $title_for_layout?></title>
> > > <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
> > > <script type="text/javascript" src="scripts/mootoolscomp.js"></script>
> > > <script type="text/javascript">
>
> > >       window.addEvent('domready', function() {
>
> > >         var Tip = new Tips($$('.Tip'));
> > >         var sliders = $$(".slide");
> > >                 var triggers = $$(".slide_trigger") ;
>
> > >                     triggers.each(function( o, x ){
> > >                                 var sl = new Fx.Slide( sliders[x], { } );
>
> > >                                 
> > > $(triggers[x]).addEvent('click',function(e){
> > >                                 e = new Event(e);
> > >                                 sl.toggle();
> > >                                 e.stop();
> > >                         })
> > >                 sl.hide();
> > >                         });
> > >       });
> > > </script>
>
> > > <?php echo $html->css('main'); ?>
>
> > > </head><body>
>
> > > /// versus a non js enabled page being only ///:
>
> > > <head>
> > > <title><?php echo $title_for_layout?></title>
> > > <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
> > > <?php echo $html->css('main'); ?>
> > > </head><body>
> > > <div id="site">
>
> > > -----------
>
> > > I am new to this so it might seem trivial, but I would really
> > > appreciate some help as I am going nuts... ;-)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake 
PHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to