SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Building a Simple, Responsive
Website with ExpressionEngine
Nick Benson
Senior Front-end Developer, PressEnter
What We’ll Cover…
• Introduction to Templates & Channels
• TwinCities-EE.com Project Overview
• Building a Blog
• Creating RSS Feeds
• Managing Pages
• Metadata Management
• Including Tweets
• Responsive Requirements
Getting Started: Templates
• Templates are what produce the HTML/CSS/RSS
code that is served by ExpressionEngine
• Templates are organized within template groups
• They can be accessed directly via a URL:
example.com/[template group]/[template name]
• They can be embedded within other templates:
{embed=“site/header”}
<h1>Hello World!</h1>
{embed=“site/footer”}
Getting Started: Templates
• Create a template group called “site” to
contain templates that are used across the
site, for things like the header and footer.
• Most projects start with something like this:
– Index (the site’s homepage)
– Page (for “static” pages, like “About Us”)
– Header
– Footer
– Aside
Getting Started: Channels
• Content in ExpressionEngine is organized into
channels (e.g. Presidents)
• Each bit of content is stored within a channel
entry (e.g. Abraham Lincoln)
• Different channel fields can be assigned to a
channel (e.g. birthday, favorite type of hat)
• Fields have different types (e.g. date, text)
• There are loads and loads of add-ons for
different field types (e.g. tags, lists, map
coordinates)
Template + Channel Example
This Template will display all of the channel
entries in our hypothetical presidents channel:
{exp:channel:entries channel=“presidents”}
<h2>{title}</h2>
<h3>Fun Facts</h3>
<ul>
<li>Born in {birthday format=“%y”}</li>
<li>Enjoyed wearing {favorite_hat}</li>
</ul>
{/exp:channel:entries}
Project: TwinCities-EE.com
The Twin Cities ExpressionEngine User Group
needed a website to publish news, event
announcements / summaries, and other
group information in a geek friendly format.
Users are technically savvy and like things like
RSS and iCalendar feeds.
Project: Design Overview
• Navigation
• Side Column
• Main Content
• Tweets
• Sponsors
• Copyright
• Responsive
Blog: Requirements
• Blog will be used to…
– Share Organizational News
– Announce / Summarize Events
• Features
– Tags, Categories, Author Profiles
– Generate RSS & iCalendar Feeds
Blog: Channel Field Setup
Field Label Short Name Field Type Notes
Summary {news_summary} Wyvern WYSIWYG add-on
from Bold Minded
Story {news_story} Wyvern WYSIWYG add-on
from Bold Minded
Author {news_author} Relationship Selects an entry in
another channel.
Tags {news_tags} Tagger Free add-on from
DevDemon.
Revision {news_revision} Reevision Needed to update
iCal feed; Free.
Location {news_location} Text Input Street Address for
iCal feed.
Event Start Date
Event End Date
{news_event_time_start}
{news_event_time_end}
Date One field for start,
another for end.
Blog: Template Setup
• Index
– Display five blog entry summaries per page, paginated
• Category
– Display five blog entry summaries per page, paginated
• Tag
– Display five blog entry summaries per page, paginated
• Entry
– Display a single blog entry, with comments
• News-RSS
– Display all blog entries in RSS format
• Events-RSS
– Display blog entries in “upcoming events” category in RSS format
Blog: Index Template
Template Group: news Template: index
URL: TwinCities-EE.com/news/
{embed="site/.header"}
<section>
{exp:channel:entries channel="news" limit="5" dynamic="no"
paginate="bottom" disable="member_data”}
{snippet_news_summary}
{snippet_news_paginate}
{/exp:channel:entries}
</section>
{embed="site/.aside"}
{embed="site/.footer"}
Blog: Index Template
Template Group: news Template: index
URL: TwinCities-EE.com/news/
{embed="site/.header"}
<section>
{exp:channel:entries channel="news" limit="5" dynamic="no"
paginate="bottom" disable="member_data”}
{snippet_news_summary}
{snippet_news_paginate}
{/exp:channel:entries}
</section>
{embed="site/.aside"}
{embed="site/.footer"}
Blog: Template Setup
• Index
– Display five blog entry summaries per page
• Category
– Display category’s five blog entry summaries per page
• Tag
– Display tag’s five blog entry summaries per page
• Entry
– Display a single blog entry, with comments
• News-RSS
– Display all blog entries in RSS format
• Events-RSS
– Display blog entries in “upcoming events” category in RSS format
Blog: Snippet Summary Setup
Snippet Name: {snippet_news_summary}
<article>
<header>
<h1>{title}</h1>
(a bunch of other tags for date, author, etc…)
</header>
{news_summary}
<p><a href=“{path=“news/{url_title}”}”>Read More</a></p>
</article>
Blog: Index Template
Template Group: news Template: index
URL: TwinCities-EE.com/news/
{embed="site/.header"}
<section>
{exp:channel:entries channel="news" limit="5" dynamic="no"
paginate="bottom" disable="member_data”}
{snippet_news_summary}
{snippet_news_paginate}
{/exp:channel:entries}
</section>
{embed="site/.aside"}
{embed="site/.footer"}
Blog: Index Template
Blog: Category Template
Template Group: news Template: category
URL: TwinCities-EE.com/news/category/example-category-name-here/
{embed="site/.header" meta_title="Category:
{segment_3_category_name}"}
<section>
{exp:channel:entries channel="news" limit="5" paginate="bottom"
category="{segment_3_category_id}" disable="member_data”}
{snippet_news_summary}
{snippet_news_paginate}
{/exp:channel:entries}
</section>
{embed="site/.aside"}
{embed="site/.footer"}
Blog: Category Template
• Categories are natively supported by
ExpressionEngine
• In this case they’re used to classify blog
entries:
– News
– Upcoming Event Announcements
– Past Event Recaps
• Seg2Cat add-on makes working with them
much easier.
Blog: Tag Template
Template Group: news Template: tag
URL: TwinCities-EE.com/news/tag/example-tag-name-here/
{embed="site/.header" meta_title="Tagged: {exp:tagger:tagname
tag="{segment_3}"}"}
<section>
{exp:tagger:entries_quick tag="{segment_3}"}
{exp:channel:entries entry_id="{tagger:entry_ids}" limit="5"
disable="member_data" paginate="bottom"}
{snippet_news_summary}
{snippet_news_paginate}
{/exp:channel:entries}
{/exp:tagger:entries_quick}
</section>
{embed="site/.aside"}
{embed="site/.footer"}
Blog: Tag Template
• Tags are not natively supported by
ExpressionEngine
• There are several add-ons for dealing with
tags; we’ve had good luck with Tagger by Dev
Demon.
Blog: Entry Template
Template Group: news Template: category
URL: TwinCities-EE.com/news/entry/url_title/
{exp:channel:entries disable="member_data,pagination" channel="news"
limit="1"}
{embed="site/.header"}
<section>
<article>
{!-- code you’ve already seen displaying the article --}
</article>
</section>
{embed="site/.aside"}
{embed="site/.footer"}
{/exp:channel:entries}
Blog: RSS Template
Template Group: news Template: news-rss
URL: TwinCities-EE.com/news/news-rss/
• Use ExpressionEngine’s {exp:rss:feed} tag
• Google will reveal several templates that you can modify for
your own use
• Tip: when building a feed, be sure the parameters passed to
{exp:rss:feed} and {exp:channel:entries} are the same.
Blog: Comments
• ExpressionEngine has a native commenting
system… but it’s pretty clunky
• We (and many others) use Disqus instead
– JS based
– Easy to setup
– Robust features
– Free for smaller sites
– Integrates itself pretty well without extra CSS
Blog: iCalendar Template
Template Group: news Template: ical
URL: TwinCities-EE.com/news/ical/
Use the nifty “Easy iCalendar” add-on:
{exp:easy_ical:calendar timezone="America/Chicago”}
{exp:channel:entries channel="news“ limit="20"}
{exp:easy_ical:event uid="{entry_id}"
start_time="{news_event_time_start}" end_time="{news_event_time_end}"
summary="{title}" location="{news_location}" sequence="{news_reevision}"
url=“{path=“/news/{url_title}”}"}
{news_story}
{/exp:easy_ical:event}
{/exp:channel:entries}
{/exp:easy_ical:calendar}
Page Management 101
• For a simple site like ours, we can get away
with a single template for “static” pages like
“About Us”
• Create a channel called “Pages” with a single
entry field, {pages_content}
• Each entry in the pages channel will be a page
• Use a nifty add-on like Wyvern for managing
text fields with a WYSIWYG interface
Attractive URLs
• EE’s normal URL structure is gross looking:
example.com/index.php/template_group/template/url_title
/
• Disable “index.php” with .htaccess
• Eliminate template_group and template by
using a module (pick one)
– Pages (included with ExpressionEngine)
– Structure ($65 add-on with a nifty interface)
Structure
• Donated a copy of their add-on to us, thanks!
• Has a really slick interface that clients like
• Allows nice URLs like: example.com/about
• Has tags for building breadcrumbs and site
navigation
• Allows page hierarchy: example.com/one/two
Structure
Structure
What About Metadata?
• We use the free SEO Lite add-on
• Allows us to set title / description / keywords
for each page and blog post
• If we don’t set title / description keywords for
an entry, it will insert default information per
our settings
• Easy to setup
• Prevents creating extra channel entry fields
SEO Lite + IfElse
Template Group: site Template: .header
{exp:ifelse parse="inward"}
{if "{embed:meta_title}"}
{exp:seo_lite title_override="{embed:meta_title}"}
{if:elseif "{embed:entry_id}"}
{exp:seo_lite entry_id="{embed:entry_id}"}
{if:else}
{exp:seo_lite use_last_segment="yes"}
{/if}
{/exp:ifelse}
Twitter Feeds
• ExpressionEngine has an official, first party
add-on for including tweets within a
template…
• … it doesn’t support twitter lists or multiple
users though…
• …and neither do any of the other add-ons I
investigated
Twitter Feeds
• Twitter offers an advanced search feature that
can retrieve tweets in RSS form that match
several criteria (multiple users, etc.)
• The AJW Feed Parser add-on can display
content from an RSS feed in a template
• The Tweetify add-on will turn URLs,
#hashtags, and @usernames into anchors
RSS + AJW Feed Parser +
Tweetify
Template Group: site Template: .footer-tweets
<article>
<h2><a href="{embed:url}">{embed:title}</a></h2>
{exp:ajw_feedparser url="http://search.twitter.com/search.atom?
q={embed:twitter-query}" cache_refresh="10" limit="1" parse="inward"}
<p>{exp:tweetify}{title}{/exp:tweetify}</p>
<h3>
<a href="{author/uri}">
<img src="{link#2@href}" alt="">
{author/name}
</a>
</h3>
{/exp:ajw_feedparser}
</article>
Make it Speedy
• Only install / enable add-ons that you actually
need and use
• Enable template caching on as many templates
as you can
• Use the Minimee add-on to minifiy and cache
your JS and CSS
• Enable gzip compression via .htaccess
• Use Switchee or IfElse add-ons to keep
conditional stuff from getting out of hand
• Use snippets instead of embeded templates
when possible
Make it Responsive
• Media Queries!
• Include css3-mediaqueries.js if lte IE 8
• Keep the aside markup in a separate template
(not within header or footer)
– Displayed above content on mobile homepage
– Displayed below content on mobile secondary
pages
Thank You!
Nick Benson
Senior Front-end Developer, PressEnter

Weitere ähnliche Inhalte

Was ist angesagt?

JSLink for ITPros - SharePoint Saturday Jersey
JSLink for ITPros - SharePoint Saturday JerseyJSLink for ITPros - SharePoint Saturday Jersey
JSLink for ITPros - SharePoint Saturday JerseyPaul Hunt
 
13 Things Developers Forget When Launching Public Websites
13 Things Developers Forget When Launching Public Websites13 Things Developers Forget When Launching Public Websites
13 Things Developers Forget When Launching Public WebsitesAJi
 
SharePoint Publishing 101
SharePoint Publishing 101SharePoint Publishing 101
SharePoint Publishing 101Becky Bertram
 
Introduction to Web Programming - first course
Introduction to Web Programming - first courseIntroduction to Web Programming - first course
Introduction to Web Programming - first courseVlad Posea
 
Face/Off: APEX Templates & Themes
Face/Off: APEX Templates & ThemesFace/Off: APEX Templates & Themes
Face/Off: APEX Templates & Themescrokitta
 
Understanding the Web Page Layout
Understanding the Web Page LayoutUnderstanding the Web Page Layout
Understanding the Web Page LayoutJhaun Paul Enriquez
 
Getting to know WordPress
Getting to know WordPressGetting to know WordPress
Getting to know WordPressAnthony Hortin
 
Arizona WP - Building a WordPress Theme
Arizona WP - Building a WordPress ThemeArizona WP - Building a WordPress Theme
Arizona WP - Building a WordPress Themecertainstrings
 
SharePoint 2013 Search Driven Sites - SPSHOU
SharePoint 2013 Search Driven Sites - SPSHOUSharePoint 2013 Search Driven Sites - SPSHOU
SharePoint 2013 Search Driven Sites - SPSHOUBrian Culver
 
Chapter 6 - Web Design
Chapter 6 - Web DesignChapter 6 - Web Design
Chapter 6 - Web Designtclanton4
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5Terry Ryan
 
HTML Semantic Tags
HTML Semantic TagsHTML Semantic Tags
HTML Semantic TagsBruce Kyle
 
An Introduction To HTML5
An Introduction To HTML5An Introduction To HTML5
An Introduction To HTML5Robert Nyman
 

Was ist angesagt? (20)

Html5
Html5Html5
Html5
 
JSLink for ITPros - SharePoint Saturday Jersey
JSLink for ITPros - SharePoint Saturday JerseyJSLink for ITPros - SharePoint Saturday Jersey
JSLink for ITPros - SharePoint Saturday Jersey
 
Images, lists and links
Images, lists and linksImages, lists and links
Images, lists and links
 
13 Things Developers Forget When Launching Public Websites
13 Things Developers Forget When Launching Public Websites13 Things Developers Forget When Launching Public Websites
13 Things Developers Forget When Launching Public Websites
 
Html 5
Html 5Html 5
Html 5
 
HTML5
HTML5 HTML5
HTML5
 
SharePoint Publishing 101
SharePoint Publishing 101SharePoint Publishing 101
SharePoint Publishing 101
 
Introduction to Web Programming - first course
Introduction to Web Programming - first courseIntroduction to Web Programming - first course
Introduction to Web Programming - first course
 
Face/Off: APEX Templates & Themes
Face/Off: APEX Templates & ThemesFace/Off: APEX Templates & Themes
Face/Off: APEX Templates & Themes
 
Understanding the Web Page Layout
Understanding the Web Page LayoutUnderstanding the Web Page Layout
Understanding the Web Page Layout
 
Getting to know WordPress
Getting to know WordPressGetting to know WordPress
Getting to know WordPress
 
Arizona WP - Building a WordPress Theme
Arizona WP - Building a WordPress ThemeArizona WP - Building a WordPress Theme
Arizona WP - Building a WordPress Theme
 
SharePoint 2013 Search Driven Sites - SPSHOU
SharePoint 2013 Search Driven Sites - SPSHOUSharePoint 2013 Search Driven Sites - SPSHOU
SharePoint 2013 Search Driven Sites - SPSHOU
 
Chapter 6 - Web Design
Chapter 6 - Web DesignChapter 6 - Web Design
Chapter 6 - Web Design
 
Wordpress SEO Featuring Dave Jesch
Wordpress SEO Featuring Dave JeschWordpress SEO Featuring Dave Jesch
Wordpress SEO Featuring Dave Jesch
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5
 
Seocheck
SeocheckSeocheck
Seocheck
 
Html5 Basic Structure
Html5 Basic StructureHtml5 Basic Structure
Html5 Basic Structure
 
HTML Semantic Tags
HTML Semantic TagsHTML Semantic Tags
HTML Semantic Tags
 
An Introduction To HTML5
An Introduction To HTML5An Introduction To HTML5
An Introduction To HTML5
 

Andere mochten auch

Track Report & Optimize Your Web Creations
Track Report & Optimize Your Web CreationsTrack Report & Optimize Your Web Creations
Track Report & Optimize Your Web CreationsEmpirical Path
 
10 главных мифов об авторском праве
10 главных мифов об авторском праве10 главных мифов об авторском праве
10 главных мифов об авторском правеhadgiewa
 
Marketing project safegard
Marketing project safegardMarketing project safegard
Marketing project safegardMubasher Nazir
 
#5 inspirational scenes from films
#5 inspirational scenes from films#5 inspirational scenes from films
#5 inspirational scenes from filmsdebbie14
 
36kr no.94
36kr no.9436kr no.94
36kr no.94Gina Gu
 
Study risk classification under bsa compliance (uab magazine- october 2012)
Study   risk classification under bsa compliance (uab magazine- october 2012)Study   risk classification under bsa compliance (uab magazine- october 2012)
Study risk classification under bsa compliance (uab magazine- october 2012)Bachir El-Nakib, CAMS
 
مقرر مصادر التعلم والمعلومات 1435
مقرر مصادر التعلم والمعلومات 1435مقرر مصادر التعلم والمعلومات 1435
مقرر مصادر التعلم والمعلومات 1435Abdullah Zahrani
 
Lu dina bite jauna
Lu dina bite jaunaLu dina bite jauna
Lu dina bite jaunaegilsdo
 
Asteroïde
AsteroïdeAsteroïde
Asteroïdethijsp
 
UNIZO Lokaal Economisch beleid voor burgemeesters en schepen lokale Economie
UNIZO Lokaal Economisch beleid voor burgemeesters en schepen lokale EconomieUNIZO Lokaal Economisch beleid voor burgemeesters en schepen lokale Economie
UNIZO Lokaal Economisch beleid voor burgemeesters en schepen lokale EconomieBert Serneels
 
Corporate Presentation May 2013
Corporate Presentation May 2013Corporate Presentation May 2013
Corporate Presentation May 2013primero_mining
 
PEPs identification_by_bachir_el_nakib
PEPs identification_by_bachir_el_nakibPEPs identification_by_bachir_el_nakib
PEPs identification_by_bachir_el_nakibBachir El-Nakib, CAMS
 
The BIG Event - Canadian Mining Expo
The BIG Event - Canadian Mining ExpoThe BIG Event - Canadian Mining Expo
The BIG Event - Canadian Mining Expoprimero_mining
 
2012 world label awards presentation
2012 world label awards presentation2012 world label awards presentation
2012 world label awards presentationTLMI
 
Myths[1]final
Myths[1]finalMyths[1]final
Myths[1]finalcsosa311
 
CETPA Winter Training Slides
CETPA Winter Training SlidesCETPA Winter Training Slides
CETPA Winter Training SlidesVikash Kumar
 
Teknik sampling normalitas data statistika
Teknik sampling normalitas data statistikaTeknik sampling normalitas data statistika
Teknik sampling normalitas data statistikaSylvester Saragih
 

Andere mochten auch (20)

Track Report & Optimize Your Web Creations
Track Report & Optimize Your Web CreationsTrack Report & Optimize Your Web Creations
Track Report & Optimize Your Web Creations
 
βιβλιογραφία του κ
βιβλιογραφία του κβιβλιογραφία του κ
βιβλιογραφία του κ
 
10 главных мифов об авторском праве
10 главных мифов об авторском праве10 главных мифов об авторском праве
10 главных мифов об авторском праве
 
Marketing project safegard
Marketing project safegardMarketing project safegard
Marketing project safegard
 
βιβλιογραφία του κ
βιβλιογραφία του κβιβλιογραφία του κ
βιβλιογραφία του κ
 
#5 inspirational scenes from films
#5 inspirational scenes from films#5 inspirational scenes from films
#5 inspirational scenes from films
 
36kr no.94
36kr no.9436kr no.94
36kr no.94
 
Study risk classification under bsa compliance (uab magazine- october 2012)
Study   risk classification under bsa compliance (uab magazine- october 2012)Study   risk classification under bsa compliance (uab magazine- october 2012)
Study risk classification under bsa compliance (uab magazine- october 2012)
 
DLIS Versión Final SLSH
DLIS Versión Final SLSHDLIS Versión Final SLSH
DLIS Versión Final SLSH
 
مقرر مصادر التعلم والمعلومات 1435
مقرر مصادر التعلم والمعلومات 1435مقرر مصادر التعلم والمعلومات 1435
مقرر مصادر التعلم والمعلومات 1435
 
Lu dina bite jauna
Lu dina bite jaunaLu dina bite jauna
Lu dina bite jauna
 
Asteroïde
AsteroïdeAsteroïde
Asteroïde
 
UNIZO Lokaal Economisch beleid voor burgemeesters en schepen lokale Economie
UNIZO Lokaal Economisch beleid voor burgemeesters en schepen lokale EconomieUNIZO Lokaal Economisch beleid voor burgemeesters en schepen lokale Economie
UNIZO Lokaal Economisch beleid voor burgemeesters en schepen lokale Economie
 
Corporate Presentation May 2013
Corporate Presentation May 2013Corporate Presentation May 2013
Corporate Presentation May 2013
 
PEPs identification_by_bachir_el_nakib
PEPs identification_by_bachir_el_nakibPEPs identification_by_bachir_el_nakib
PEPs identification_by_bachir_el_nakib
 
The BIG Event - Canadian Mining Expo
The BIG Event - Canadian Mining ExpoThe BIG Event - Canadian Mining Expo
The BIG Event - Canadian Mining Expo
 
2012 world label awards presentation
2012 world label awards presentation2012 world label awards presentation
2012 world label awards presentation
 
Myths[1]final
Myths[1]finalMyths[1]final
Myths[1]final
 
CETPA Winter Training Slides
CETPA Winter Training SlidesCETPA Winter Training Slides
CETPA Winter Training Slides
 
Teknik sampling normalitas data statistika
Teknik sampling normalitas data statistikaTeknik sampling normalitas data statistika
Teknik sampling normalitas data statistika
 

Ähnlich wie Building a Simple, Responsive Website with ExpressionEngine

WordPress Webinar Training Presentation
WordPress Webinar Training PresentationWordPress Webinar Training Presentation
WordPress Webinar Training PresentationMayeCreate Design
 
Using WordPress Blogging Features to Build a Website
Using WordPress Blogging Features to Build a WebsiteUsing WordPress Blogging Features to Build a Website
Using WordPress Blogging Features to Build a WebsiteEileen Weinberg
 
Blog creationguide forestview
Blog creationguide forestviewBlog creationguide forestview
Blog creationguide forestviewNikos Stagakis
 
SUGUK Cambridge - Display Templates & JSLink for IT Pros
SUGUK Cambridge - Display Templates & JSLink for IT ProsSUGUK Cambridge - Display Templates & JSLink for IT Pros
SUGUK Cambridge - Display Templates & JSLink for IT ProsPaul Hunt
 
Modern_Site_Owner_M365_Ottawa.pdf
Modern_Site_Owner_M365_Ottawa.pdfModern_Site_Owner_M365_Ottawa.pdf
Modern_Site_Owner_M365_Ottawa.pdfTheresa Lubelski
 
Using js link and display templates
Using js link and display templatesUsing js link and display templates
Using js link and display templatesPaul Hunt
 
Customizing the Appearance and HTML Output of Visualforce Pages
Customizing the Appearance and HTML Output of VisualforcePages Customizing the Appearance and HTML Output of VisualforcePages
Customizing the Appearance and HTML Output of Visualforce Pages Mohammed Safwat Abu Kwaik
 
#SPSLondon - Session 2 JSLink for IT Pros
#SPSLondon - Session 2 JSLink for IT Pros#SPSLondon - Session 2 JSLink for IT Pros
#SPSLondon - Session 2 JSLink for IT ProsPaul Hunt
 
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...BIWUG
 
SPSSTHLM - Using JSLink and Display Templates for ITPros
SPSSTHLM - Using JSLink and Display Templates for ITProsSPSSTHLM - Using JSLink and Display Templates for ITPros
SPSSTHLM - Using JSLink and Display Templates for ITProsPaul Hunt
 
Spsbe using js-linkanddisplaytemplates
Spsbe   using js-linkanddisplaytemplatesSpsbe   using js-linkanddisplaytemplates
Spsbe using js-linkanddisplaytemplatesPaul Hunt
 
Wordpress beyond blogging
Wordpress beyond bloggingWordpress beyond blogging
Wordpress beyond bloggingJulien Minguely
 
Designyourownblog.com On-Site SEO Auidt
Designyourownblog.com On-Site SEO AuidtDesignyourownblog.com On-Site SEO Auidt
Designyourownblog.com On-Site SEO AuidtJames Allen
 
Creating Landing Pages and Layouts for Drupal 8 - DrupalCon Baltimore
Creating Landing Pages and Layouts for Drupal 8 - DrupalCon BaltimoreCreating Landing Pages and Layouts for Drupal 8 - DrupalCon Baltimore
Creating Landing Pages and Layouts for Drupal 8 - DrupalCon BaltimoreSuzanne Dergacheva
 

Ähnlich wie Building a Simple, Responsive Website with ExpressionEngine (20)

Working with the Latest Tendenci Modules
Working with the Latest Tendenci ModulesWorking with the Latest Tendenci Modules
Working with the Latest Tendenci Modules
 
Getting a Quick Start with Visualforce
Getting a Quick Start with Visualforce Getting a Quick Start with Visualforce
Getting a Quick Start with Visualforce
 
WordPress Webinar Training Presentation
WordPress Webinar Training PresentationWordPress Webinar Training Presentation
WordPress Webinar Training Presentation
 
WordPress Complete Tutorial
WordPress Complete TutorialWordPress Complete Tutorial
WordPress Complete Tutorial
 
Using WordPress Blogging Features to Build a Website
Using WordPress Blogging Features to Build a WebsiteUsing WordPress Blogging Features to Build a Website
Using WordPress Blogging Features to Build a Website
 
Blog creationguide forestview
Blog creationguide forestviewBlog creationguide forestview
Blog creationguide forestview
 
SUGUK Cambridge - Display Templates & JSLink for IT Pros
SUGUK Cambridge - Display Templates & JSLink for IT ProsSUGUK Cambridge - Display Templates & JSLink for IT Pros
SUGUK Cambridge - Display Templates & JSLink for IT Pros
 
Modern_Site_Owner_M365_Ottawa.pdf
Modern_Site_Owner_M365_Ottawa.pdfModern_Site_Owner_M365_Ottawa.pdf
Modern_Site_Owner_M365_Ottawa.pdf
 
Using js link and display templates
Using js link and display templatesUsing js link and display templates
Using js link and display templates
 
Customizing the Appearance and HTML Output of Visualforce Pages
Customizing the Appearance and HTML Output of VisualforcePages Customizing the Appearance and HTML Output of VisualforcePages
Customizing the Appearance and HTML Output of Visualforce Pages
 
#SPSLondon - Session 2 JSLink for IT Pros
#SPSLondon - Session 2 JSLink for IT Pros#SPSLondon - Session 2 JSLink for IT Pros
#SPSLondon - Session 2 JSLink for IT Pros
 
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
 
XCC Self Study Guide
XCC Self Study GuideXCC Self Study Guide
XCC Self Study Guide
 
SPSSTHLM - Using JSLink and Display Templates for ITPros
SPSSTHLM - Using JSLink and Display Templates for ITProsSPSSTHLM - Using JSLink and Display Templates for ITPros
SPSSTHLM - Using JSLink and Display Templates for ITPros
 
Spsbe using js-linkanddisplaytemplates
Spsbe   using js-linkanddisplaytemplatesSpsbe   using js-linkanddisplaytemplates
Spsbe using js-linkanddisplaytemplates
 
Wordpress beyond blogging
Wordpress beyond bloggingWordpress beyond blogging
Wordpress beyond blogging
 
Designyourownblog.com On-Site SEO Auidt
Designyourownblog.com On-Site SEO AuidtDesignyourownblog.com On-Site SEO Auidt
Designyourownblog.com On-Site SEO Auidt
 
Wordpress overview
Wordpress overviewWordpress overview
Wordpress overview
 
Creating Landing Pages and Layouts for Drupal 8 - DrupalCon Baltimore
Creating Landing Pages and Layouts for Drupal 8 - DrupalCon BaltimoreCreating Landing Pages and Layouts for Drupal 8 - DrupalCon Baltimore
Creating Landing Pages and Layouts for Drupal 8 - DrupalCon Baltimore
 
Open Source CMS
Open Source CMSOpen Source CMS
Open Source CMS
 

Kürzlich hochgeladen

Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 

Kürzlich hochgeladen (20)

Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 

Building a Simple, Responsive Website with ExpressionEngine

  • 1. Building a Simple, Responsive Website with ExpressionEngine Nick Benson Senior Front-end Developer, PressEnter
  • 2. What We’ll Cover… • Introduction to Templates & Channels • TwinCities-EE.com Project Overview • Building a Blog • Creating RSS Feeds • Managing Pages • Metadata Management • Including Tweets • Responsive Requirements
  • 3. Getting Started: Templates • Templates are what produce the HTML/CSS/RSS code that is served by ExpressionEngine • Templates are organized within template groups • They can be accessed directly via a URL: example.com/[template group]/[template name] • They can be embedded within other templates: {embed=“site/header”} <h1>Hello World!</h1> {embed=“site/footer”}
  • 4. Getting Started: Templates • Create a template group called “site” to contain templates that are used across the site, for things like the header and footer. • Most projects start with something like this: – Index (the site’s homepage) – Page (for “static” pages, like “About Us”) – Header – Footer – Aside
  • 5. Getting Started: Channels • Content in ExpressionEngine is organized into channels (e.g. Presidents) • Each bit of content is stored within a channel entry (e.g. Abraham Lincoln) • Different channel fields can be assigned to a channel (e.g. birthday, favorite type of hat) • Fields have different types (e.g. date, text) • There are loads and loads of add-ons for different field types (e.g. tags, lists, map coordinates)
  • 6. Template + Channel Example This Template will display all of the channel entries in our hypothetical presidents channel: {exp:channel:entries channel=“presidents”} <h2>{title}</h2> <h3>Fun Facts</h3> <ul> <li>Born in {birthday format=“%y”}</li> <li>Enjoyed wearing {favorite_hat}</li> </ul> {/exp:channel:entries}
  • 7. Project: TwinCities-EE.com The Twin Cities ExpressionEngine User Group needed a website to publish news, event announcements / summaries, and other group information in a geek friendly format. Users are technically savvy and like things like RSS and iCalendar feeds.
  • 8. Project: Design Overview • Navigation • Side Column • Main Content • Tweets • Sponsors • Copyright • Responsive
  • 9. Blog: Requirements • Blog will be used to… – Share Organizational News – Announce / Summarize Events • Features – Tags, Categories, Author Profiles – Generate RSS & iCalendar Feeds
  • 10. Blog: Channel Field Setup Field Label Short Name Field Type Notes Summary {news_summary} Wyvern WYSIWYG add-on from Bold Minded Story {news_story} Wyvern WYSIWYG add-on from Bold Minded Author {news_author} Relationship Selects an entry in another channel. Tags {news_tags} Tagger Free add-on from DevDemon. Revision {news_revision} Reevision Needed to update iCal feed; Free. Location {news_location} Text Input Street Address for iCal feed. Event Start Date Event End Date {news_event_time_start} {news_event_time_end} Date One field for start, another for end.
  • 11. Blog: Template Setup • Index – Display five blog entry summaries per page, paginated • Category – Display five blog entry summaries per page, paginated • Tag – Display five blog entry summaries per page, paginated • Entry – Display a single blog entry, with comments • News-RSS – Display all blog entries in RSS format • Events-RSS – Display blog entries in “upcoming events” category in RSS format
  • 12. Blog: Index Template Template Group: news Template: index URL: TwinCities-EE.com/news/ {embed="site/.header"} <section> {exp:channel:entries channel="news" limit="5" dynamic="no" paginate="bottom" disable="member_data”} {snippet_news_summary} {snippet_news_paginate} {/exp:channel:entries} </section> {embed="site/.aside"} {embed="site/.footer"}
  • 13. Blog: Index Template Template Group: news Template: index URL: TwinCities-EE.com/news/ {embed="site/.header"} <section> {exp:channel:entries channel="news" limit="5" dynamic="no" paginate="bottom" disable="member_data”} {snippet_news_summary} {snippet_news_paginate} {/exp:channel:entries} </section> {embed="site/.aside"} {embed="site/.footer"}
  • 14. Blog: Template Setup • Index – Display five blog entry summaries per page • Category – Display category’s five blog entry summaries per page • Tag – Display tag’s five blog entry summaries per page • Entry – Display a single blog entry, with comments • News-RSS – Display all blog entries in RSS format • Events-RSS – Display blog entries in “upcoming events” category in RSS format
  • 15. Blog: Snippet Summary Setup Snippet Name: {snippet_news_summary} <article> <header> <h1>{title}</h1> (a bunch of other tags for date, author, etc…) </header> {news_summary} <p><a href=“{path=“news/{url_title}”}”>Read More</a></p> </article>
  • 16. Blog: Index Template Template Group: news Template: index URL: TwinCities-EE.com/news/ {embed="site/.header"} <section> {exp:channel:entries channel="news" limit="5" dynamic="no" paginate="bottom" disable="member_data”} {snippet_news_summary} {snippet_news_paginate} {/exp:channel:entries} </section> {embed="site/.aside"} {embed="site/.footer"}
  • 18. Blog: Category Template Template Group: news Template: category URL: TwinCities-EE.com/news/category/example-category-name-here/ {embed="site/.header" meta_title="Category: {segment_3_category_name}"} <section> {exp:channel:entries channel="news" limit="5" paginate="bottom" category="{segment_3_category_id}" disable="member_data”} {snippet_news_summary} {snippet_news_paginate} {/exp:channel:entries} </section> {embed="site/.aside"} {embed="site/.footer"}
  • 19. Blog: Category Template • Categories are natively supported by ExpressionEngine • In this case they’re used to classify blog entries: – News – Upcoming Event Announcements – Past Event Recaps • Seg2Cat add-on makes working with them much easier.
  • 20. Blog: Tag Template Template Group: news Template: tag URL: TwinCities-EE.com/news/tag/example-tag-name-here/ {embed="site/.header" meta_title="Tagged: {exp:tagger:tagname tag="{segment_3}"}"} <section> {exp:tagger:entries_quick tag="{segment_3}"} {exp:channel:entries entry_id="{tagger:entry_ids}" limit="5" disable="member_data" paginate="bottom"} {snippet_news_summary} {snippet_news_paginate} {/exp:channel:entries} {/exp:tagger:entries_quick} </section> {embed="site/.aside"} {embed="site/.footer"}
  • 21. Blog: Tag Template • Tags are not natively supported by ExpressionEngine • There are several add-ons for dealing with tags; we’ve had good luck with Tagger by Dev Demon.
  • 22. Blog: Entry Template Template Group: news Template: category URL: TwinCities-EE.com/news/entry/url_title/ {exp:channel:entries disable="member_data,pagination" channel="news" limit="1"} {embed="site/.header"} <section> <article> {!-- code you’ve already seen displaying the article --} </article> </section> {embed="site/.aside"} {embed="site/.footer"} {/exp:channel:entries}
  • 23. Blog: RSS Template Template Group: news Template: news-rss URL: TwinCities-EE.com/news/news-rss/ • Use ExpressionEngine’s {exp:rss:feed} tag • Google will reveal several templates that you can modify for your own use • Tip: when building a feed, be sure the parameters passed to {exp:rss:feed} and {exp:channel:entries} are the same.
  • 24. Blog: Comments • ExpressionEngine has a native commenting system… but it’s pretty clunky • We (and many others) use Disqus instead – JS based – Easy to setup – Robust features – Free for smaller sites – Integrates itself pretty well without extra CSS
  • 25. Blog: iCalendar Template Template Group: news Template: ical URL: TwinCities-EE.com/news/ical/ Use the nifty “Easy iCalendar” add-on: {exp:easy_ical:calendar timezone="America/Chicago”} {exp:channel:entries channel="news“ limit="20"} {exp:easy_ical:event uid="{entry_id}" start_time="{news_event_time_start}" end_time="{news_event_time_end}" summary="{title}" location="{news_location}" sequence="{news_reevision}" url=“{path=“/news/{url_title}”}"} {news_story} {/exp:easy_ical:event} {/exp:channel:entries} {/exp:easy_ical:calendar}
  • 26. Page Management 101 • For a simple site like ours, we can get away with a single template for “static” pages like “About Us” • Create a channel called “Pages” with a single entry field, {pages_content} • Each entry in the pages channel will be a page • Use a nifty add-on like Wyvern for managing text fields with a WYSIWYG interface
  • 27. Attractive URLs • EE’s normal URL structure is gross looking: example.com/index.php/template_group/template/url_title / • Disable “index.php” with .htaccess • Eliminate template_group and template by using a module (pick one) – Pages (included with ExpressionEngine) – Structure ($65 add-on with a nifty interface)
  • 28. Structure • Donated a copy of their add-on to us, thanks! • Has a really slick interface that clients like • Allows nice URLs like: example.com/about • Has tags for building breadcrumbs and site navigation • Allows page hierarchy: example.com/one/two
  • 31. What About Metadata? • We use the free SEO Lite add-on • Allows us to set title / description / keywords for each page and blog post • If we don’t set title / description keywords for an entry, it will insert default information per our settings • Easy to setup • Prevents creating extra channel entry fields
  • 32. SEO Lite + IfElse Template Group: site Template: .header {exp:ifelse parse="inward"} {if "{embed:meta_title}"} {exp:seo_lite title_override="{embed:meta_title}"} {if:elseif "{embed:entry_id}"} {exp:seo_lite entry_id="{embed:entry_id}"} {if:else} {exp:seo_lite use_last_segment="yes"} {/if} {/exp:ifelse}
  • 33. Twitter Feeds • ExpressionEngine has an official, first party add-on for including tweets within a template… • … it doesn’t support twitter lists or multiple users though… • …and neither do any of the other add-ons I investigated
  • 34. Twitter Feeds • Twitter offers an advanced search feature that can retrieve tweets in RSS form that match several criteria (multiple users, etc.) • The AJW Feed Parser add-on can display content from an RSS feed in a template • The Tweetify add-on will turn URLs, #hashtags, and @usernames into anchors
  • 35. RSS + AJW Feed Parser + Tweetify Template Group: site Template: .footer-tweets <article> <h2><a href="{embed:url}">{embed:title}</a></h2> {exp:ajw_feedparser url="http://search.twitter.com/search.atom? q={embed:twitter-query}" cache_refresh="10" limit="1" parse="inward"} <p>{exp:tweetify}{title}{/exp:tweetify}</p> <h3> <a href="{author/uri}"> <img src="{link#2@href}" alt=""> {author/name} </a> </h3> {/exp:ajw_feedparser} </article>
  • 36. Make it Speedy • Only install / enable add-ons that you actually need and use • Enable template caching on as many templates as you can • Use the Minimee add-on to minifiy and cache your JS and CSS • Enable gzip compression via .htaccess • Use Switchee or IfElse add-ons to keep conditional stuff from getting out of hand • Use snippets instead of embeded templates when possible
  • 37. Make it Responsive • Media Queries! • Include css3-mediaqueries.js if lte IE 8 • Keep the aside markup in a separate template (not within header or footer) – Displayed above content on mobile homepage – Displayed below content on mobile secondary pages
  • 38. Thank You! Nick Benson Senior Front-end Developer, PressEnter