Dynamic page layouts
In this chapter, you'll learn how to create dynamic page layouts that change automatically when a staff user clicks on a check box on the Article Edit page.
The example we show here features an Article Type with a custom switch 'breaking_news'. This custom switch can be added to the Article Type in the Newscoop administration interface. The journalist or editor then sees a checkbox for 'breaking_news' in the Article Edit screen, which they will click whenever they consider the story they are working on to be particularly important.
The result of a staff user clicking this checkbox can be detected in the template. Inside list_articles a constraint is added, collecting only articles where the custom switch called 'breaking_news' is turned on. If there's an article that fulfills that criteria, then it's listed. If not, the layout remains the same:
{{ list_articles length="1" ignore_section="true" order="bypublishdate desc" constraints="breaking_news is on" }}
That tells $gimme to list one article with the following constraints:
- Display articles regardless of the section they're in
- Present the articles in descending chronological order according to their published date
- Only display articles where the "breaking_news" custom switch is on
The whole template looks like this:
{{ list_articles length="1" ignore_section="true" order="bypublishdate desc" constraints="breaking_news is on" }} <div id="breakingNews"> <h3><a href="{{ uri options="article" }}">{{ $gimme->article->name }}</a></h3> {{ list_article_images length="1" }} <div id="breakingNewsLeft"> <img src="{{ uri options="image width 435" }}" alt="{{ $gimme->article->image->description }}" /> <p class="footnote">{{ $gimme->article->image->description }} {{ if $gimme->article->image->photographer }}(Photo: {{ $gimme->article->image->photographer }}){{ /if }}</p> </div> {{ /list_article_images }} {{ if $gimme->prev_list_empty }} <div id="breakingNewsLeft"> <img src="/templates/images/breaking-news-{{ $gimme->language->code }}.jpg" alt="Breaking news" /> </div> {{ /if }} <div id="breakingNewsCenter"> {{ $gimme->article->publish_date|camp_date_format:"%M %e, %Y" }} <p>{{ $gimme->article->deck }}</p> </div> </div> {{ /list_articles }}
For more on using custom switches, see the chapter titled Topics, switches, keywords to structure content.





