SlideShare una empresa de Scribd logo
1 de 160
Descargar para leer sin conexión
welcome to


             THE POWER OF EE'S
             DYNAMIC TEMPLATES

Welcome

Thank Robert and Sponsors

Spoke in Netherlands last year
HELLO
My Name is Jonathan Longnecker
              @necker47
        jon@fortysevenmedia.com
HELLO
His Name is Nate Cro
          @natecroft
   nate@fortysevenmedia.com
@47m
http://fortysevenmedia.com
Met in Highschool

Guitar

Write Songs

Band
2002




First Website

Flash
2005




First 47m Website

Flash
2006




First HTML/CSS

Notice the EE brackets
2007




First EE Site - one page
2008 - PRESENT




Full EE Site - Blog, portfolio

Lots of recognition

Rebrand
2009




Full Circle - Nate and I keep making music
2009




And create a site to find new music from other designers

built on EE
WHAT ARE TEMPLATES?
                          A brief overview




Naming Confusion

*****Questions are ok!!
What are Templates?                                                             A brief description




                                               SEPARATION
                                    Organize Parts of Site However You Want



                                             PRESENTATION
                                 Alter Template Presentation Based on Variables


                                               REUSABILITY
                                Chop Your Site into Maintainable Reusable Chunks



Document for Code

Reusablity - Slyman Analytics
TYPES OF TEMPLATES
   Hint: there’s more than one
Types of Templates                              Hint: there’s more than one




                     TEMPLATE GROUP

                         TEMPLATE
    Embedded Templates                      Snippets (2.0)


                         Global Variables
Types of Templates                Hint: there’s more than one




    TEMPLATE GROUPS
    • Groups of templates
    • Like folders on your server

    • Can setup URL structure




Explain Screenshot

URL's
Types of Templates                 Hint: there’s more than one




    TEMPLATES
    • Building blocks of your site
    • Can contain global
         variables, snippets, pre-
         loaded text replacement
         and other templates

    • Can also contain HTML/JS,
         PHP, etc...

    • Embedded templates can
         pass variables

    • Nest multiple templates
         inside one another

Pass Variables

How deep can you embed?
Types of Templates                           Hint: there’s more than one




                     TEMPLATE TYPES




                       *Icons om Espresso
Types of Templates




                     CSS STYLESHEET
                      Serve the Template as "text/css"
                      MIME type. No EE tags; served
                      "as is."




                     *Icons om Espresso
Types of Templates                             Hint: there’s more than one




                     RSS PAGE
                      Used for RSS and Atom
                      syndication feeds. Served as
                      "text/xml" MIME type.




                     *Icons om Espresso
Types of Templates                            Hint: there’s more than one




                     JAVASCRIPT
                      Used for outputting Javascript
                      code. Sends "text/javascript"
                      MIME type.




                     *Icons om Espresso
Types of Templates                           Hint: there’s more than one




                     STATIC
                      Useful for HTML design
                      elements embedded in other
                      templates. No EE tags.




                     *Icons om Espresso
Types of Templates                          Hint: there’s more than one




                     XML
                      Used for outputting XML
                      pages. Sends "text/xml" MIME
                      type.




                     *Icons om Espresso
Types of Templates                                                              Hint: there’s more than one




Create new template groups by uploading folders. Just add .group to group name.

*****Any Questions?
Types of Templates                Hint: there’s more than one




 GLOBAL VARIABLES
 • EE has about 30 built in
 • Last thing processed in
   templates

 • For static info only

 • EE tags won’t work
 • Great for: header, footer,
   copyright, stylesheet links,
   etc...
GLOBAL VARIABLES                                           Types of Templates



    <!DOCTYPE HTML>
                                                      {html_head}
    <html>

    <head>
    <meta http-equiv="Content-Type" content="text/
    html; charset=utf-8" />
    <link rel="Shortcut Icon" href="/favicon.ico"/>

    <title>Title of Page</title>	

    <!--Blog Feeds-->
    <link rel="alternate" title="Projects and         {blog_feeds}
    Rentals" href="/site/feed" />

    <!--Stylesheets-->
    <link href="reset.css" media="screen" />          {stylesheets}
    <link href="design.css" media="all" />

    </head>
                                                      {html_head_end}
GLOBAL VARIABLES                          Types of Templates



          {html_head}

          <title>Title of Page</title>	


          {blog_feeds}


          {stylesheets}


          {html_head_end}




Cleaned up Header

*****Any Questions?
GLOBAL VARIABLES                                                                                Types of Templates




Talk about Show and Tell

How many have kids? Buy clothes?

Consignment = sell your old clothes, buy new ones. Signup to help and get discounts/first pick

Used 3rd party to login, manage your items for sale. Barcodes, POS, etc...
GLOBAL VARIABLES                                        Types of Templates



    <a href="http://itcanchange.com">Register To
                                                   {register}
    Sell</a>
GLOBAL VARIABLES                                    Types of Templates



        <a href="{register}">Register To Sell</a>




*****Any Questions?
Types of Templates                             Hint: there’s more than one




    SNIPPETS (2.0)
     • Like an embedded template,
         but without the overhead

     • Processed early in rendering
         stages

     • Will parse EE tags
     • Can share snippets with
         MSM




Too many database calls with regular templates
GLOBAL VARIABLES                                         Types of Templates



    &copy; {current_time format="%Y"}. All Rights
                                                    {footer}
    Reserved
GLOBAL VARIABLES                       Types of Templates



        © 2010. All Rights Reserved.




*****Any Questions?
EMBEDDING TEMPLATES
      It’s fun and easy!
NAVIGATION
NAVIGATION                                                 Embedding Templates



       <body>

       <div id="header"><h1>Site Name Here</h1></div>

       <ul id="nav">
       	 <li><a href="#">Overview</a></li>              global/nav
       	 <li><a href="#">Another One</a></li>
       	 <li><a href="#">A Third One</a></li>
       </ul>


       <div id="content">Content</div>

       </body>




NOT useful
NAVIGATION                                             Embedding Templates



      <body>

      <div id="header"><h1>Site Name Here</h1></div>

      {embed="global/nav"}

      <div id="content">Content</div>

      </body>




NOT USEFUL
PASSING VARIABLES


BREAK Passing Stuff
PASSING VARIABLES                             Embedding Templates




    {embed="global/nav" name="jonathan"}




    <ul id="nav">
    	 <li><a href="#">{embed:name}</a></li>
    	 <li><a href="#">Another One</a></li>
    	 <li><a href="#">A Third One</a></li>
    </ul>




    <ul id="nav">
    	 <li><a href="#">Jonathan</a></li>
    	 <li><a href="#">Another One</a></li>
    	 <li><a href="#">A Third One</a></li>
    </ul>
NAVIGATION                                              Embedding Templates



    <body>

    <div id="header"><h1>Site Name Here</h1></div>

    <ul id="nav">
       <li {if '{embed:loc}' == 'home'}              global/nav
       class="current"{/if}>
       <a href="#">Overview</a></li>

        <li {if '{embed:loc}' == 'two'}
        class="current"{/if}>
        <a href="#">Another One</a></li>

       <li {if '{embed:loc}' == 'three'}
       class="current"{/if}>
       <a href="#">A Third One</a></li>
    </ul>

    <div id="content">Content</div>

    </body>
NAVIGATION                                               Embedding Templates



        <body>

        <div id="header"><h1>Site Name Here</h1></div>

        {embed="global/nav" loc="home"}

        <div id="content">Content</div>

        </body>




*****Any Questions?
FOOTER
FOOTER                                             Embedding Templates



    <body>

    <div id="header"><h1>SiteName</h1></div>

    <div id="content">Content Here</div>

    <div id="footer">
                                                global/footer
    <p>&copy; {current_time format="%Y"}
    FortySeven Media. All Rights Reserved</p>

    </div>
    </body>
FOOTER                                             Embedding Templates



        <body>

        <div id="header"><h1>SiteName</h1></div>

        <div id="content">Content Here</div>

        {embed="global/footer"}




Could also be snippet

*****Any Questions?
SIDEBAR


Came in from the side! It's the little things.
SIDEBAR                                         Embedding Templates



    <div id="sidebar">
                                             global/sidebar
    	
    <ul id="nav">
    	 <li><a href="#">Overview</a></li>
    	 <li><a href="#">Another One</a></li>
    	 <li><a href="#">A Third One</a></li>
    </ul>

    <div id="callouts">
    Callouts Go Here
    </div>
    	
    	 	
    </div><!--End Sidebar-->
SIDEBAR                                       Embedding Templates



        <div id="content">
        <h1>Header Here</h1>
        <p>Paragraph</p>
        </div>

        {embed="_global/sidebar"}

        <div id="footer">
        <p>© 2010. All Rights Reserved></p>
        </div>




*****Any Questions?

LEVEL UP!!!!!!
LEVEL UP!
IF & SEGMENTS
                                      Bend it to your will




Holy Crap, changed the way I use EE
SEGMENT VARIABLES
If & Segments                            Bend it to your will




        http://site.com/blog/entry/title/
                Segment 1   Segment 2   Segment 3
SEGMENT VARIABLES                                       If & Statements




        {segment_1} {segment_2} {segment_3}




        http://site.com/blog/entry/title/




        {exp:weblog:entries  url_title="{segment_3}"}

        <h1>{title}</h1>
        <p>{body}</p>

        {/exp:weblog:entries}




*****Any Questions?
CONDITIONALS


BREAK fun with If statements
CONDITIONALS                                                                                                 If & Statements




          BASIC VARIABLE                                                           ADVANCED VARIABLE
         {if username == "Mr. T"}                                                  {if username == "peanut_butter"
                                                                                   AND username == "jelly"}
         <h1>Pity the Fool!</h1>
                                                                                   <h1>Sandwich Time!</h1>
         {/if}
                                                                                   {/if}




pair type variables

conditionally show or hide information on your pages based on criteria being met

Advanced conditionals Parsed after all EE tags
CONDITIONALS                                                                            If & Statements




          ELSE & ELSEIF
         {if username == "weezer"}

         <h1>"Say it ain't so!"</h1>

         {if:elseif username == "radiohead"}

         <h1>"I'm a creep."</h1>

         {if:else}

         <h1>It's all just rock and roll.</h1>

         {/if}




Looks for Weezer first, then radiohead. If neither are logged in, defaults to generic.
CONDITIONALS                                                                               If & Statements




          OPERATORS
         ==            "equal to"
         !=            "not equal to"
         <             "less than"
         <=            "less than or equal to"
         >             "greater than"
         >=            "greater than or equal to"
         <>            "not equal to"




You can use any of the following operators to compare a variable to a value:

Logical operators compare multiple variables to multiple values, not getting in to that.
CONDITIONALS                                     If & Statements




         GLOBAL CONDITIONALS
        {if       group_id == '3'}
        {if       logged_in}
        {if       logged_out}
        {if       member_group == '3'}
        {if       member_id == '47'}
        {if       logged_in_member_id == '47'}
        {if       screen_name == 'Mr. T'}
        {if       total_comments > 0}
        {if       total_entries > 0}
        {if       segment_X == 'private'}
        {if       username == 'elvira'}




Don't have to use quotes around numbers

*****Any Questions?
LISTING & SINGLE ENTRY IN
      ONE TEMPLATE
LISTING & SINGLE ENTRY IN ONE TEMPLATE                           If & Segments




     HEADER
    <head>
    {if segment_3}

    {exp:weblog:entries weblog="{my_weblog}" limit="1"}
    <meta name="description" content="{title}" />
    <title>{title} | Events | About | Edgepoint Church</title>
    {/exp:weblog:entries}

    {if:else}

    <meta name="description" content="Upcoming Events" />
    <title>Events| About | Edgepoint Church</title>

    {/if}
    </head>
LISTING & SINGLE ENTRY IN ONE TEMPLATE                            If & Segments



         BODY
        <body>
        {if segment_3}
        {exp:weblog:entries weblog="news" limit="1"
        url_title="{segment_3}"}

        <h1>{title}</h1>
        {body}
        {/exp:weblog:entries}
        {if:else}

        <h1>Upcoming Events</h1>
        <ul id="events">
        {exp:weblog:entries weblog="news" limit="50" }
        <li><a href="{url_title_path="about/events"}">{title}</a></li>
        {/exp:weblog:entries}
        </ul>
        	
        {/if}
        </body>

*****Any Questions?
CUSTOM CATEGORY URL'S




Custom Furniture Builders

Don't know prices

Embezzlement?
If & Segments                                 Bend it to your will




     http://site.com/products/sofas/10-123/



Volunteers: 3 people, one for each segment

Nesting Dolls - Person 1 has biggest -on down
If & Segments                        Bend it to your will




         http://site.com/products/sofas/
If & Segments                               Bend it to your will




                http://site.com/products/
If & Segments                                                      Bend it to your will




                                     Template Group      Category    Entry Title


     http://site.com/products/sofas/10-123/
                                        Segment 1     Segment 2     Segment 3




EE Wants to add trigger

Messy, not a good breadcrumb trail

All 3 pages in one template
CUSTOM CATEGORY URL'S                                 If & Segments




     THE CATEGORIES PAGE
    {if segment_2=="" AND segment_3==""}
    	
    {exp:weblog:categories weblog="yours"
    style="linear"}

    <p><a href="{path="template_group/
    {category_url_title}"}">{category_name}</a></p>
    	
    {/exp:weblog:categories}
CUSTOM CATEGORY URL'S                                      If & Segments




        THE CATEGORY ENTRIES PAGE
       {if:elseif segment_2!="" AND segment_3==""}

       {exp:query sql="SELECT cat_id FROM exp_categories
       WHERE cat_url_title = '{segment_2}'"}

       {exp:weblog:entries weblog="yours"
       category="{cat_id}"}
       	
       <p><a href="{title_permalink={segment_1}/
       {segment_2}}">{title}</a></p>
       	
       {/exp:weblog:entries}
       	
       {/exp:query}




Low Seg2Cat option
CUSTOM CATEGORY URL'S                                  If & Segments




          THE SINGLE ENTRY PAGE
        {if:elseif segment_3!=""}

        {exp:weblog:entries weblog="yours" limit="1"
        url_title="{segment_3}"}

        Call whatever custom fields you have here
        	 	
        {/exp:weblog:entries}

        {/if}




Next/Previous don't work..not sure about pagination

Low Seg2cat

Only worked because each product had one category

*****Any Questions?
REAL WORLD EXAMPLES
    is stuff really happened!
DESIGNERS
  MUSIC
  AJAX
 TOOLTIP
DESIGNERSMUSIC AJAX TOOLTIP   Real World Examples




 AJAX TOOLTIP
 • Cluetip jQuery
   shows external
   webpage

 • Used 1 template and
   added entry_id
DESIGNERSMUSIC AJAX TOOLTIP   Real World Examples
DESIGNERSMUSIC AJAX TOOLTIP   Real World Examples




  ALBUM
  • Album Name
  • Artist

  • Artwork
  • Website

  • Preview
  • Purchase Link
DESIGNERSMUSIC AJAX TOOLTIP                                Real World Examples



     CALLS IN MAIN TEMPLATE
     {exp:weblog:entries weblog="music" orderby="artist|title"
     sort="desc" limit="1" dynamic="off"}	 	
     	 	
     <h2>{artist}</h2>

     <a href="{site_url}music/detail/{entry_id}" class="jt
     artwork" rel="{site_url}music/ajax/{entry_id}">
     {exp:imgsizer:size src="{artwork}" width="140" height="140"
     alt="{title}"}</a>

     <h3>{title}</h3>
     	 	 	
     {/exp:weblog:entries}
DESIGNERSMUSIC AJAX TOOLTIP

         CALLS IN MAIN TEMPLATE
          {exp:weblog:entries weblog="music" limit="1" }

          <div class="jtip-albumimg">{exp:imgsizer:size src="{artwork}"
          width="64" height="64" alt="{title}" }</div>

          <h1>{title}</h1>
          <h2>{artist}</h2>

          {if artist-website}	
          Artist Website
          <a href="{artist-website}">{artist-website}</a>
          {/if}

          Recommended	 by <a href="/members/profile/{member_id}">
          {author}</a>

          {if location} from {location}{/if}

*****Any Questions?
KINGDOM
LANDSCAPES
 GROUPED
 PROJECTS
KINGDOM LANDSCAPES GROUPED PROJECTS   Real World Examples




 CATEGORY
 GROUPS
 • Overview Projects
   Page

 • Group entry by
   category

 • Reuse same
   template
DESIGNERSMUSIC AJAX TOOLTIP   Real World Examples
KINGDOM LANDSCAPES GROUPED PROJECTS                       Real World Examples



     CALLS IN MAIN TEMPLATE
    {exp:weblog:categories weblog="projects" show="6" style="linear"}
    <h2>{category_name} Projects</h2>
    <a href="{path=projects/list}">View {category_name} projects</a>
    {/exp:weblog:categories}

    {exp:weblog:entries weblog="projects" category="6"
    orderby="random" limit="2" }
    <a href="{url_title_path="projects/archives"}">{exp:imgsizer:size
    src="{main_image}" width="198" height="142" alt="{title}" }</a>
    	 	 	
    <h3>{title}{entry_date format="%d/%m/%y"}</h3>
    <p>{exp:word_limit_plus stop_after="18"}{exp:html_strip}
    {description}{/exp:html_strip}{/exp:word_limit_plus}</p>
    <a href="{url_title_path="projects/archives"}">View Project</a>

    {/exp:weblog:entries}
KINGDOM LANDSCAPES GROUPED PROJECTS                       Real World Examples



     PROJECT ARTICLE
    {exp:weblog:categories weblog="projects" show="{embed:cat}"
    style="linear"}
    <h2>{category_name} Projects</h2>
    <a href="{path=projects/list}">View {category_name} projects</a>
    {/exp:weblog:categories}

    {exp:weblog:entries weblog="projects" category="{embed:cat}"
    orderby="random" limit="2" }
    <a href="{url_title_path="projects/archives"}">{exp:imgsizer:size
    src="{main_image}" width="198" height="142" alt="{title}" }</a>
    	 	 	
    <h3>{title}{entry_date format="%d/%m/%y"}</h3>
    <p>{exp:word_limit_plus stop_after="18"}{exp:html_strip}
    {description}{/exp:html_strip}{/exp:word_limit_plus}</p>
    <a href="{url_title_path="projects/archives"}">View Project</a>

    {/exp:weblog:entries}
KINGDOM LANDSCAPES GROUPED PROJECTS            Real World Examples



     CALLS IN MAIN TEMPLATE
    {embed="global/project_article" cat="6"}

    {embed="global/project_article" cat="7"}

    {embed="global/project_article" cat="8"}

    {embed="global/project_article" cat="9"}
FOLIAGE
 DESIGN
ARTICLES
FOLIAGE DESIGN ARTICLES   Real World Examples
FOLIAGE DESIGN ARTICLES                         Real World Examples




                          PROJECT & PLANT
                          ARTICLES
                          • Project and plant channels
                           had the same format

                          • Needed to be able to use in
                           a variety of sizes

                          • Main, Homepage, Sidebar
                          • Images and text truncating
                           needed to be adjusted
FOLIAGE DESIGN ARTICLES                                      Real World Examples



     THE ARTICLE
    {exp:weblog:entries weblog="projects" limit="3" dynamic="off"}

    <div class="article {switch='||last'}">
    <a href="{url_title_path="projects"}" title="{title}" >
       {projects limit="1"}
          {exp:imgsizer:size src="{img}" width="200" height="100"}
       {/projects}
       </a>

    <h4>{exp:trunchtml chars="25"}{title}{/exp:trunchtml}</h4>

    <a href="{url_title_path="projects"}">View Project</a>

    </div>
    {/exp:weblog:entries}
FOLIAGE DESIGN ARTICLES                                   Real World Examples



     THE ARTICLE
    {exp:weblog:entries
    weblog="{embed:weblog}"
    {embed:sort}
    {embed:cat}
    {embed:orderby}
    limit="{embed:limit}"
    status="{embed:status}"
    {embed:url_title}
    disable="member_data|pagination|trackbacks|category_fields"
    {embed:dynamic}
    {embed:entry_id} }
FOLIAGE DESIGN ARTICLES                                       Real World Examples



         THE ARTICLE
        {exp:weblog:entries
        weblog="{embed:weblog}" limit="{embed:limit}" {embed:dynamic} }

        <div class="article {embed:switch}">
        <a class=href="{url_title_path="{embed:path}"}" title="{title}" >
           {{embed:ff_shortname} limit="1"}
              {exp:imgsizer:size src="{img}" width="{embed:width}"
              height="{embed:height}" alt="{caption}" }
           {/{embed:ff_shortname}}
           </a>

        <h4>{if '{embed:loc}' == 'sidebar'}{exp:trunchtml chars="20"
        inline="..."}{title}{/exp:trunchtml}{if:else}{exp:trunchtml
        chars="25" inline="..."}{title}{/exp:trunchtml}{/if}</h4>

        <a href="{url_title_path="{embed:path}"}">View {embed:type}</a>

        </div>
        {/exp:weblog:entries}

*****Any Questions?
FOLIAGE DESIGN ARTICLES              Real World Examples



     EMBEDDING THE ARTICLE
    {embed="_global/mini_articles"
    weblog="projects"
    orderby="orderby='random'"
    limit="3"
    switch="{switch='||last'}"
    path="projects"
    width="202"
    height="129"
    ff_shortname="project_images"
    type="Project"
    cat="category='3'"
    status="open|featured"}
DESIGNERS
  MUSIC
  AUTO
COMPLETE
DESIGNERSMUSIC AJAX TOOLTIP   Real World Examples
DESIGNERSMUSIC AJAX AUTOCOMPLETE                             Real World Examples



    {exp:weblog:entry_form weblog="music" return="submit/
    success" }

    <input type="hidden" name="field_ft_4" value="none" />
    <input type="hidden" name="field_ft_6" value="none" />

    <label>Album Name</label>
    <input class="txt-input album-title" type="text" name="title"
    id="title" value="{title}" />

    <label>Artist Name</label>
    <input class="txt-input artist-ac" type="text" dir="ltr"
    id="field_id_4" name="field_id_4" value="" />

    <label>Artist Website</label>
    <input class="txt-input artist-website-ac" type="text"
    dir="ltr" id="field_id_6" name="field_id_6" value="http://" />

    {/exp:weblog:entry_form}
DESIGNERSMUSIC AJAX AUTOCOMPLETE

         LOCALDATA
          var artist = [{exp:query sql="SELECT DISTINCT field_id_4 FROM
          exp_weblog_data WHERE exp_weblog_data.weblog_id=1"
          backspace="2"}"{field_id_4}", {/exp:query}];

          var website = [{exp:query sql="SELECT DISTINCT field_id_6
          FROM exp_weblog_data WHERE exp_weblog_data.weblog_id=1"
          backspace="2"}"{field_id_6}", {/exp:query}];

          var album_title = [{exp:query sql="SELECT title FROM
          exp_weblog_titles WHERE exp_weblog_titles.weblog_id=1"
          backspace="2"}"{title}", {/exp:query}];




*****Any Questions?
DESIGNERSMUSIC AJAX AUTOCOMPLETE

         LOCALDATA
          var artist = ["Starflyer 59", "Hammock", "Coldplay", "Heroes
          or Ghosts", "The Asteroids Galaxy Tour", "Blindside", "Common
          Children", "Elliot", "Feeder", "Fleet Foxes", "John Hopkins",
          "Andrew Bird", "Tyler Melashenko"];

          var website = ["http://sf59.com/",
          "http://hammockmusic.com/",
          "http://coldplay.com/",
          "http://heroesorghosts.com",
          "http://www.theasteroidsgalaxytour.com/"
          "http://www.myspace.com/fleetfoxes"];

          var album_title = ["Starflyer 59 (Gold)", "Maybe They Will
          Sing for Us Tomorrow", "Kenotic", "Raising Your Voice Trying
          to Stop an Echo", "Americana", "Leave Here a Stranger",
          "Silver (Extended Edition)", "My Island", "Dial M"];



*****Any Questions?
DESIGNERSMUSIC AJAX AUTOCOMPLETE

         JAVASCRIPT
          $().ready(function() {

          function findValueCallback(event, data, formatted) {
          $("<li>").html( !data ? "No match!" : "Selected: " +
          formatted).appendTo("#result");}
          	
          function formatItem(row) {
          return row[0] + " (<strong>id: " + row[1] + "</strong>)";}
          	 function formatResult(row) {
          	 	 return row[0].replace(/(<.+?>)/gi, '');}
          	
          	 $("input.artist-ac").autocomplete(artist);
          	
          	 $("input.artist-website-ac").autocomplete(website);
          	
          	 $("input.album-title").autocomplete(album_title);
            });

*****Any Questions?
SMITH
   STUDIOS
    MULTI-
    MEDIA
  LIGHTBOX

Photography Campaigns
SMITH STUDIOS MULTI-MEDIA LIGHTBOX                     Real World Examples




                                     GALLERY
                                     • Colorbox serving images
                                      and media

                                     • Needed to have images,
                                      movies, etc... in the same
                                      gallery

                                     • Show the first image, offset
                                      the others
SMITH STUDIOS MULTI-MEDIA LIGHTBOX   Real World Examples




  GALLERY
  • Using Matrix
  • File Upload

  • Movie or SWF
  • Width & Height
SMITH STUDIOS MULTI-MEDIA LIGHTBOX   Real World Examples
SMITH STUDIOS MULTI-MEDIA LIGHTBOX                         Real World Examples



     ENTRIES
     {exp:weblog:entries weblog="content"}

     {images limit="1"}	 	
     <a class="img-gallery" href="{img}" title="{img-caption}">
     {exp:imgsizer:size src="{img}" width="460" height="260"
     alt="{img-caption}" }</a> 	 	 	
     {/images}

     {!--Hidden--}	 	 	
     {images offset="1"}
     {if mov}
     <a class="img-gallery" href="/mov/{entry_id}/{row_count}">
     {img-caption}</a>
     {if:else}
     <a class="img-gallery" href="{img}">{img-caption}</a>
     {/if}	 	 	 	 	
     {/images}
SMITH STUDIOS MULTI-MEDIA LIGHTBOX                        Real World Examples



         MOV
        {exp:weblog:entries weblog="content" limit="1"}

        {embed="site/quicktime" row_id="{segment_3}"}

        {/exp:weblog:entries}




Matrix Updated as of 2 weeks ago to include {row_id}
SMITH STUDIOS MULTI-MEDIA LIGHTBOX                            Real World Examples



         QUICKTIME
        {exp:weblog:entries weblog="content" limit="1" }

        {images limit="1" offset="{embed:row_id}" }
        <!-- begin embedded QuickTime file... -->
        <OBJECT classid='clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B'
        width="{mov-width}"
        height="{mov-height}">
        <param name='src' value="{img}">
        <EMBED src="{img}" width="{mov-width}" height="{mov-height}">
        </EMBED>
        </OBJECT>
        {/images}
        {/exp:weblog:entries}




*****Any Questions?
FOLIAGE
FLEXIBLE
CONTACT
  FORM
DESIGNERSMUSIC AJAX TOOLTIP   Real World Examples
FOLIAGE FLEXIBLE CONTACT FORM              Real World Examples




                                CONTACT FORM
                                • On almost every page
                                • Budget changes based
                                 on what user is
                                 viewing

                                • Use a single template
                                 for maintainability
FOLIAGE FLEXIBLE CONTACT FORM                                     Real World Examples



         {exp:freeform:form form_name="contact_form" required="name|
         email|message{embed:required}" notify="me"
         template="contact_form" return="contact/thanks"
         form_id="contact_form"}

         <label class="required">Current Page</label>
         <input class="std-input" type="text" name="location"
         value="{site_url}{segment_1}/{segment_2}" size="50" />




Send info about what page they were on

Embed Required
FOLIAGE FLEXIBLE CONTACT FORM                              Real World Examples



     {if '{embed:type}' == 'project'}

     <label class="required">Budget*</label>

     <select name="budget">
     <option value="">Choose One...</option>
     <option value="$10,000 - $30,000">$10,000 - $30,000</option>
     <option value="$30,000 - $80,000">$30,000 - $80,000</option>
     <option value="$80,000 - $150,000">$80,000 - $150,000</option>
     <option value="$150,000+">$150,000+</option>
     </select>

     <span class="price">$ prices in TTD</span>

     {/if}
FOLIAGE FLEXIBLE CONTACT FORM                              Real World Examples



     {if '{embed:type}' == 'rental'}

     <label class="required">Budget*</label>

     <select name="budget">
     <option value="">Choose One...</option>
     <option value="$500 - $1,000">$500 - $1,000 per mo.</option>
     <option value="$1,000 - $1,500">$1,000 - $1,500 per mo.</option>
     <option value="$1,500 - $2,000">$1,500 - $2,000 per mo.</option>
     <option value="$2,000+">$2,000+ per mo.</option>
     </select>

     <span class="price">$ prices in TTD</span>
     {/if}
FOLIAGE FLEXIBLE CONTACT FORM                              Real World Examples



     {if '{embed:type}' == 'irrigation'}

     <label class="required">Budget*</label>

     <select name="budget">
     <option value="">Choose One...</option>
     <option value="$10,000 - $20,000">$10,000 - $20,000</option>
     <option value="$20,000 - $30,000">$20,000 - $30,000</option>
     <option value="$30,000 - $50,000">$30,000 - $50,000</option>
     <option value="$50,000+">$50,000+</option>
     </select>

     <span class="price">$ prices in TTD</span>

     {/if}
FOLIAGE FLEXIBLE CONTACT FORM                              Real World Examples



     {if '{embed:type}' == 'lighting'}

     <label class="required">Budget*</label>

     <select name="budget">
     <option value="">Choose One...</option>
     <option value="$2,000 - $5,000">$2,000 - $5,000</option>
     <option value="$5,000 - $10,000">$5,000 - $10,000</option>
     <option value="$10,000 - $30,000">$10,000 - $30,000</option>
     <option value="$30,000+">$30,000+</option>
     </select>

     <span class="price">$ prices in TTD</span>

     {/if}
FOLIAGE FLEXIBLE CONTACT FORM                              Real World Examples



     {if '{embed:type}' == 'water_features'}

     <label class="required">Budget*</label>

     <select name="budget">
     <option value="">Choose One...</option>
     <option value="$8,000 - $15,000">$8,000 - $15,000</option>
     <option value="$15,000 - $30,000">$15,000 - $30,000</option>
     <option value="$30,000 - $80,000">$30,000 - $80,000</option>
     <option value="$80,000+">$80,000+</option>
     </select>

     <span class="price">$ prices in TTD</span>

     {/if}
FOLIAGE FLEXIBLE CONTACT FORM                               Real World Examples



     {if '{embed:type}' == 'generic'}
     	 	
     <select class="twoup first" name="project_type" id="or"
     onchange="populate(this)">
     <option value="">Choose One...</option>
     <option value="Landscaping Project">Landscaping Project</option>
     <option value="Plant Rental">Plant Rental</option>
     <option value="Garden Maintenance">Garden Maintenance</option>
     </select>
     	
     <select class="twoup" name="budget" id="de">
     <option value="">&larr; Choose Type...</option>
     </select><span class="price twoup">prices in TTD</span>
     {/if}

     <input type="submit" name="submit" value="Submit" />

     {/exp:freeform:form}
FOLIAGE FLEXIBLE CONTACT FORM                               Real World Examples



     <script type="text/javascript">
     function populate(o)
     { d=document.getElementById('de'); if(!d){return;}		   	
     var mitems=new Array();

     mitems['Landscaping Project']=['$10,000 - $30,000','$30,000 -
     $80,000','$80,000 - $150,000','$150,000+'];
     mitems['Plant Rental']=['$500 - $1,000','$1,000 - $1,500 per
     mo.','$1,500 - $2,000 per mo.','$2,000+ per mo.'];
     mitems['Garden Maintenance']=['n/a'];
     	 	 	
     d.options.length=0; cur=mitems[o.options[o.selectedIndex].value];
     if(!cur){return;} d.options.length=cur.length; for(var
     i=0;i<cur.length;i++) {
     d.options[i].text=cur[i];
     d.options[i].value=cur[i];
     	 	 	 }
     	 	 }
      </script>
FOLIAGE FLEXIBLE CONTACT FORM                               Real World Examples



     $(document).ready(function() {
           $('.dynamic_select').show();
           $('select#or').change(function() {
              if ($("select#or").val() === 'Garden Maintenance'){
                   $('.dynamic_select').hide(); }
             else{
                   $('.dynamic_select').show(); }
         });
     });
FOLIAGE FLEXIBLE CONTACT FORM                              Real World Examples



     {embed="_global/contact_form" hidebox="hidebox" type="irrigation"
     required="|budget"}
SARAH
LONGNECKER
   VIDEO
 LIGHTBOX

Graduated

Economy

Freelance - Video issues with FIrefox, Quicktime
SARAH LONGNECKER VIDEO LIGHTBOX              Real World Examples




                                  VIDEO LIGHTBOX
                                  • Lightview serving up
                                   Vimeo embed

                                  • Needed a template
                                   to reuse throughout
                                   the whole site
SARAH LONGNECKER VIDEO LIGHTBOX   Real World Examples
SARAH LONGNECKER VIDEO LIGHTBOX   Real World Examples




  LIGHTBOX
  • Vimeo ID#
  • Poster Image

  • Height
  • Width
SARAH LONGNECKER VIDEO LIGHTBOX                              Real World Examples



     LIGHTWINDOW PARAMS
    <a class="lightwindow"
    params="lightwindow_width=350, lightwindow_height=200"
    title="Title of Entry"
    href="http://vimeo.com/moogaloop.swf?clip_id=55555">
    Click to Play</a>
SARAH LONGNECKER VIDEO LIGHTBOX                           Real World Examples



     GLOBAL_VIDEOLINK
    <a class="lightwindow"
    params="lightwindow_width={embed:video_width},
    lightwindow_height={embed:video_height}"
    title="{embed:title}"
    href="http://vimeo.com/moogaloop.swf?clip_id={embed:video}">
    Click to Play</a>
SARAH LONGNECKER VIDEO LIGHTBOX                                               Real World Examples



          CALLS IN MAIN TEMPLATE
         {exp:weblog:entries weblog="work" orderby="date" sort="desc"
         limit="5"}

         {embed="global/global_videolink" title="{title}"
         video="{video}" video_width="{video_width}"
         video_height="{video_height}"}

         {/exp:weblog:entries}




Could have made this whole thing a snippet to save template visual clutter?

*****Any Questions?
STRUCTURE & IMAGE
   REPLACEMENT
STRUCTURE & IMAGE REPLACEMENT   Real World Examples




 IMAGE REPLACE
 • Entire Site is
   managed with
   Structure

 • LG Image Replace

 • Matrix
 • Image Sizer
CREATED BY




    AJ Penninga
            @ajp
http://www.prettysquares.com/
STRUCTURE & IMAGE REPLACEMENT                                Real World Examples



                                     MATRIX SETUP

  File Upload              Caption      Width       Height    Align
STRUCTURE & IMAGE REPLACEMENT                  Real World Examples



                                MATRIX SETUP
STRUCTURE & IMAGE REPLACEMENT                                 Real World Examples



         CALLS IN MAIN TEMPLATE
        {exp:weblog:entries weblog="content" limit="1" }
        {exp:lg_replace:haystack needles="{images backspace="1"}
        image_{row_count}|{/images}"}

        {body}

        {images}
        {exp:lg_replace:replacement needle="image_{row_count}"}
        {exp:imgsizer:size src="{img}" width="{img-width}"
        height="{img-height}" alt="{img-caption}" class="{img-
        align}"}
        {/exp:lg_replace:replacement}
        {/images}

        {/exp:lg_replace:haystack}
        {/exp:weblog:entries}




*****Any Questions?
FOLIAGE
SIDEBAR
FOLIAGE SIDEBAR           Real World Examples




  SIDEBAR CALLOUT
 • Highlight Navigation
 • Show different
    callouts based on
    parameter
FOLIAGE SIDEBAR                                            Real World Examples



     CALLS IN MAIN TEMPLATE
     <div id="sidebar">
     	
     {embed="_global/sec_nav" mainloc="{embed:mainloc}"
     loc="{embed:loc}"}
     	
     {if '{embed:contact}' == 'yes'}Contact Info{/if}
     	
     {if '{embed:recent_project}' == 'yes'}Recent Projects{/if}
     	
     {if '{embed:callouts}' == 'yes'}Callouts{/if}
     	
     {if '{embed:history}' == 'yes'}History{/if}
     	
     </div><!--End Sidebar-->
Simple secondary navigation
FOLIAGE SIDEBAR                                               Real World Examples




        {if '{embed:mainloc}' == 'services'}
        <h3>In This Section</h3>
        <ul id="sec-nav">
        <li {if '{embed:loc}' == 'overview'}class="current"{/if}><a
        href="/services/">Overview</a></li>

        <li {if '{embed:loc}' == 'water_features'}class="current"{/
        if}><a href="#">Water Features</a></li>

        <li {if '{embed:loc}' == 'irrigation'}class="current"{/if}><a
        href="#">Irrigation</a></li>

        <li {if '{embed:loc}' == 'lighting'}class="current"{/if}><a
        href="#">Lighting</a></li>

        <li {if '{embed:loc}' == 'maintenance'}class="current"{/if}
        ><a href="#">Maintenance</a></li>
        </ul>
        {/if}


Simple secondary navigation
Simple secondary navigation
FOLIAGE SIDEBAR                                                   Real World Examples




         {if '{embed:mainloc}' == 'projects'}

         <ul id="sec-nav">

         <li {if segment_2 == ''}{if segment_3 == ''}class="current"{/
         if}{/if}><a href="{site_url}projects">Overview</a></li>
         	
         {exp:weblog:categories weblog="projects" style="linear"
         id="project_categories"}
         <li {if category_url_title == segment_4}class="current"{/if}
         ><a href="{path=projects/list}">{category_name}</a></li>
         	
         {/exp:weblog:categories}

         <li {if segment_2 == 'list'}{if segment_3 == ''}
         class="current"{/if}{/if}><a href="{site_url}projects/
         list/">All Projects</a></li>

         </ul>
         {/if}
Secondary nav with category highlighting
Simple secondary navigation
FOLIAGE SIDEBAR                                            Real World Examples



   {if '{embed:mainloc}' == 'rentals'}
   <ul id="sec-nav">

   <li {if segment_2 == ''}class="current"{/if}><a href="#">Overview</
   a></li>
   	
   <li {if segment_2 == 'plants'}class="current"{/if}
   {if segment_2 == 'list'}class="current"{/if}><a href="#">Plants</a>
   	
   <ul>
   {exp:weblog:categories weblog="rentals" style="linear"}
   <li {if category_url_title == segment_4}class="current"{/if}><a
   href="{path=rentals/list}">{category_name}</a></li>
   {/exp:weblog:categories}

   <li {if segment_2 == 'list'}{if segment_3 == ''}class="current"{/
   if}{/if}><a href="{site_url}rentals/list/">All Plants</a></li>
   </ul></li>
   	
   </ul>
   {/if}
*****Any Questions?
FACILITY
      DUDE
    CALLOUTS

Talk about Facility Dude

Manage Facilities with Software
FACILITY DUDE CALLOUTS   Real World Examples
FACILITY DUDE CALLOUTS              Real World Examples




  PRODUCT & SERVICE
  CALLOUTS
  • Product and blog page links
     needed to be dynamic

  • Other product info like short
     description and images
     needed to be dynamic as
     well

  • All of these could be
     overridden for special
     callouts
FACILITY DUDE CALLOUTS           Real World Examples




  CHANNEL SETUP
  • Title
  • Playa field w/ access to
     products and blog entries

  • Image override

  • Description override
  • Link override
FACILITY DUDE CALLOUTS            Real World Examples




  CHOOSE THE CALLOUT
  • Whole site managed by
     Structure

  • Callouts will pull randomly
     unless...

  • A specific one is chosen for
     that page
FACILITY DUDE CALLOUTS                                         Real World Examples




          THE SIDEBAR TEMPLATE
         {exp:weblog:entries weblog="content"
         disable="member_data|pagination|trackbacks"
         limit="1"}
         {if sidebar_callout}

         {sidebar_callout limit="1" dynamic="off"}
         {embed="_global/callout_related"                  callout_related
         entry_id="{entry_id}"}
         {/sidebar_callout}
         	
         {if:else}
         	
         {embed="_global/callout" entry_id="{entry_id}"}
                                                           callout
         	
         {/if}
         {/exp:weblog:entries}


Look for related field
FACILITY DUDE CALLOUTS                                            Real World Examples


          CALLOUT_RELATED
         {exp:weblog:entries entry_id="{embed:entry_id}"}
         {if callout_img}

         {exp:imgsizer:size src="{callout_img}" alt="{title}" }

         {if:else}
         {callout_related}

         {if weblog_id=="2"}
         {exp:imgsizer:size src="{product-icon-dock}" alt="{title}" }

         {if:else}	

         {images limit="1"}
         {exp:imgsizer:size src="{img}" width="156" alt="{title}" }
         {/images}

         {/if}
         	 	 	 	
         {/callout_related}
         {/if}
         	 	
         <h4>{title}</h4>

Lots of conditionals

GO SLOW
FACILITY DUDE CALLOUTS                                       Real World Examples


       CALLOUT_RELATED
       {if callout_desc}
       <p>{callout_desc}</p>
       {if:else}
       {callout_related}
       <p>{product-short-desc}{product-group-short-desc}{short-desc}</p>
       {/callout_related}
       {/if}
       	 	
       {if callout_link}
       <a class="button" href="{callout_link}">Learn More</a>
       {if:else}
       {callout_related}
       <a class="button" href="
       {if weblog_id == "6"}{path="products/{url_title}"}
       {if:elseif weblog_id == "2"}
       {categories limit="1"}{site_url}products/{category_url_title}/
       {url_title}/{/categories}
       {if:else}
       {page_url}
       {/if}">Learn More</a>
       {/callout_related}
       {/if}	

       {/exp:weblog:entries}
GO
SLOW
FACILITY DUDE CALLOUTS                                           Real World Examples


         CALLOUT
        {exp:weblog:entries weblog="callouts" orderby="random" limit="1"
        dynamic="off"}
        {if callout_img}

        {exp:imgsizer:size src="{callout_img}" alt="{title}" }

        {if:else}
        {callout_related}

        {if weblog_id=="2"}
        {exp:imgsizer:size src="{product-icon-dock}" alt="{title}" }

        {if:else}	

        {images limit="1"}
        {exp:imgsizer:size src="{img}" width="156" alt="{title}" }
        {/images}

        {/if}
        	 	 	 	
        {/callout_related}
        {/if}
        	 	
        <h4>{title}</h4>
*****Any Questions?
EMBEDDING TEMPLATES
   MULTIPLE TIMES
SUBMITTED BY




                                                     Mike Boyink
                                                           @ boyink
                                                      http://boyink.com//



As if he's not doing enough with an 8 hour session
EMBEDDING TEMPLATES MULTIPLE TIMES   Real World Examples




 COMPARE
 PRODUCTS
 • Useful for comparing
   multiple entries

 • Handle in one
   template

 • Use segment
   variables
EMBEDDING TEMPLATES MULTIPLE TIMES   Real World Examples
EMBEDDING TEMPLATES MULTIPLE TIMES                          Real World Examples


     <form name="compare_products" id="compare_form" method="post"
     action="">
     <input type="button" class="compare_button" value="Compare"
     onclick="combineMenus(this.form, this.form.product_1,
     this.form.product_2, this.form.product_3)" />

     <select name="product_1">
     <option value ="498/" >BTL-433 - 4 cu. ft.</option>
     <option value ="251/" >SH-241 - 0.8 cu. ft.</option>
     </select>

     <select name="product_2">
     <option value ="498/" >BTL-433 - 4 cu. ft.</option>
     <option value ="251/" >SH-241 - 0.8 cu. ft.</option>
     </select>

     <select name="product_3">
     <option value ="498/" >BTL-433 - 4 cu. ft.</option>
     <option value ="251/" >SH-241 - 0.8 cu. ft.</option>
     </select>
EMBEDDING TEMPLATES MULTIPLE TIMES                         Real World Examples


     <form name="compare_products" id="compare_form" method="post"
     action="">
     <input type="button" class="compare_button" value="Compare"
     onclick="combineMenus(this.form, this.form.product_1,
     this.form.product_2, this.form.product_3)" />

     <select name="product_1">
     {exp:weblog:entries weblog="content" }
     <option value ="{entry_id}/" >{title}</option>
     {/exp:weblog:entries} </select>

     <select name="product_2">
     {exp:weblog:entries weblog="content" }
     <option value ="{entry_id}/" >{title}</option>
     {/exp:weblog:entries} </select>

     <select name="product_3">
     {exp:weblog:entries weblog="content" }
     <option value ="{entry_id}/" >{title}</option>
     {/exp:weblog:entries} </select>
EMBEDDING TEMPLATES MULTIPLE TIMES                        Real World Examples


     {embed="compare_products" entry_id="{segment_4}" }

     {embed="compare_products" entry_id="{segment_5}" }

     {embed="compare_products" entry_id="{segment_6}" }
EMBEDDING TEMPLATES MULTIPLE TIMES                            Real World Examples


        {exp:weblog:entries weblog="content" entry_id="{embed:entry_id}"}

        {title}

        All Custom Fields

        {/exp:weblog:entries}




*****Any Questions?
WILL ALL THIS WORK
      IN EE 2?
Will all this work in EE2?




                             Yes.
WILL ALL THIS WORK IN EE2?                                Real World Examples




   {exp:weblog:entries weblog="content" dynamic="off"} 
WILL ALL THIS WORK IN EE2?


   {exp:channel:entries channel="content" dynamic="no"} 
THANK YOU
Jonathan Longnecker
   twitter.com/necker47
 jon@fortysevenmedia.com
   fortysevenmedia.com

Más contenido relacionado

La actualidad más candente

WordPress Developers Israel Meetup #1
WordPress Developers Israel Meetup #1WordPress Developers Israel Meetup #1
WordPress Developers Israel Meetup #1Yoav Farhi
 
Custom WordPress theme development
Custom WordPress theme developmentCustom WordPress theme development
Custom WordPress theme developmentTammy Hart
 
Introduction to Custom WordPress Themeing
Introduction to Custom WordPress ThemeingIntroduction to Custom WordPress Themeing
Introduction to Custom WordPress ThemeingJamie Schmid
 
WordPress Child Themes
WordPress Child ThemesWordPress Child Themes
WordPress Child Themesrfair404
 
Web 2.0 - what is it?
Web 2.0  - what is it?Web 2.0  - what is it?
Web 2.0 - what is it?Andy Forbes
 
Add-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his DutyAdd-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his Dutyreedmaniac
 
WordPress theme development from scratch : ICT MeetUp 2013 Nepal
WordPress theme development from scratch : ICT MeetUp 2013 NepalWordPress theme development from scratch : ICT MeetUp 2013 Nepal
WordPress theme development from scratch : ICT MeetUp 2013 NepalChandra Prakash Thapa
 
WordPress Theme Development: Part 2
WordPress Theme Development: Part 2WordPress Theme Development: Part 2
WordPress Theme Development: Part 2Josh Lee
 
Cms & wordpress theme development 2011
Cms & wordpress theme development 2011Cms & wordpress theme development 2011
Cms & wordpress theme development 2011Dave Wallace
 
Spsbe using js-linkanddisplaytemplates
Spsbe   using js-linkanddisplaytemplatesSpsbe   using js-linkanddisplaytemplates
Spsbe using js-linkanddisplaytemplatesPaul Hunt
 
Responsive themeworkshop wcneo2016
Responsive themeworkshop wcneo2016Responsive themeworkshop wcneo2016
Responsive themeworkshop wcneo2016David Brattoli
 
Drupal overview-training
Drupal overview-trainingDrupal overview-training
Drupal overview-trainingSam Davis
 
HTML Start Up - Introduction to HTML
HTML Start Up - Introduction to HTMLHTML Start Up - Introduction to HTML
HTML Start Up - Introduction to HTMLGrayzon Gonzales, LPT
 
WordPress Theme Development
WordPress Theme DevelopmentWordPress Theme Development
WordPress Theme DevelopmentWisdmLabs
 

La actualidad más candente (19)

BEM it!
BEM it!BEM it!
BEM it!
 
WordPress Developers Israel Meetup #1
WordPress Developers Israel Meetup #1WordPress Developers Israel Meetup #1
WordPress Developers Israel Meetup #1
 
Custom WordPress theme development
Custom WordPress theme developmentCustom WordPress theme development
Custom WordPress theme development
 
Introduction to Custom WordPress Themeing
Introduction to Custom WordPress ThemeingIntroduction to Custom WordPress Themeing
Introduction to Custom WordPress Themeing
 
Wordpress overview
Wordpress overviewWordpress overview
Wordpress overview
 
WordPress Child Themes
WordPress Child ThemesWordPress Child Themes
WordPress Child Themes
 
Web 2.0 - what is it?
Web 2.0  - what is it?Web 2.0  - what is it?
Web 2.0 - what is it?
 
Add-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his DutyAdd-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his Duty
 
WordPress theme development from scratch : ICT MeetUp 2013 Nepal
WordPress theme development from scratch : ICT MeetUp 2013 NepalWordPress theme development from scratch : ICT MeetUp 2013 Nepal
WordPress theme development from scratch : ICT MeetUp 2013 Nepal
 
Web Designing Syllabus
Web Designing SyllabusWeb Designing Syllabus
Web Designing Syllabus
 
WordPress Theme Development: Part 2
WordPress Theme Development: Part 2WordPress Theme Development: Part 2
WordPress Theme Development: Part 2
 
Web designing syllabus
Web designing syllabusWeb designing syllabus
Web designing syllabus
 
Cms & wordpress theme development 2011
Cms & wordpress theme development 2011Cms & wordpress theme development 2011
Cms & wordpress theme development 2011
 
Spsbe using js-linkanddisplaytemplates
Spsbe   using js-linkanddisplaytemplatesSpsbe   using js-linkanddisplaytemplates
Spsbe using js-linkanddisplaytemplates
 
Responsive themeworkshop wcneo2016
Responsive themeworkshop wcneo2016Responsive themeworkshop wcneo2016
Responsive themeworkshop wcneo2016
 
Drupal overview-training
Drupal overview-trainingDrupal overview-training
Drupal overview-training
 
HTML Start Up - Introduction to HTML
HTML Start Up - Introduction to HTMLHTML Start Up - Introduction to HTML
HTML Start Up - Introduction to HTML
 
WordPress Theme Development
WordPress Theme DevelopmentWordPress Theme Development
WordPress Theme Development
 
Word press training
Word press trainingWord press training
Word press training
 

Destacado

Rapport du Centre d'Analyse Stratégique : "Pour une consommation durable" (2011)
Rapport du Centre d'Analyse Stratégique : "Pour une consommation durable" (2011)Rapport du Centre d'Analyse Stratégique : "Pour une consommation durable" (2011)
Rapport du Centre d'Analyse Stratégique : "Pour une consommation durable" (2011)Utopies
 
More Power for your Point
More Power for your PointMore Power for your Point
More Power for your Pointedtech2020
 
Ginsbourg.Com - Performance and load test script template 1.2
Ginsbourg.Com - Performance and load test script template 1.2Ginsbourg.Com - Performance and load test script template 1.2
Ginsbourg.Com - Performance and load test script template 1.2Shay Ginsbourg
 
Call to-action templates by hubspot
Call to-action templates by hubspotCall to-action templates by hubspot
Call to-action templates by hubspotTushar Jain
 
Music video script_template 1
Music video script_template 1Music video script_template 1
Music video script_template 1Joe Hayes
 
Auto Dialer
Auto DialerAuto Dialer
Auto DialerATS TEL
 
FREE Mortgage Lead Script
FREE Mortgage Lead Script FREE Mortgage Lead Script
FREE Mortgage Lead Script LenderQualified
 
Double xperience for om 042014
Double xperience for om 042014Double xperience for om 042014
Double xperience for om 042014vrtheteam
 
Kl mand open meeting may 2013
Kl mand open meeting may 2013Kl mand open meeting may 2013
Kl mand open meeting may 2013vrtheteam
 
Outbound Sales Training
Outbound Sales TrainingOutbound Sales Training
Outbound Sales Traininggjg4128
 
Hidup Sihat Bebas Kencing Manis Diabetes [eBook]
Hidup Sihat Bebas Kencing Manis Diabetes [eBook]Hidup Sihat Bebas Kencing Manis Diabetes [eBook]
Hidup Sihat Bebas Kencing Manis Diabetes [eBook]Rasyadan Hussin
 
Diabetes Melitus (Kencing Manis)
Diabetes Melitus (Kencing Manis)Diabetes Melitus (Kencing Manis)
Diabetes Melitus (Kencing Manis)Ferdiansah Umar
 
Telephone Communication & Speaking Skills
Telephone Communication & Speaking SkillsTelephone Communication & Speaking Skills
Telephone Communication & Speaking SkillsJaime Alfredo Cabrera
 

Destacado (14)

Rapport du Centre d'Analyse Stratégique : "Pour une consommation durable" (2011)
Rapport du Centre d'Analyse Stratégique : "Pour une consommation durable" (2011)Rapport du Centre d'Analyse Stratégique : "Pour une consommation durable" (2011)
Rapport du Centre d'Analyse Stratégique : "Pour une consommation durable" (2011)
 
More Power for your Point
More Power for your PointMore Power for your Point
More Power for your Point
 
15augcoppacket
15augcoppacket15augcoppacket
15augcoppacket
 
Ginsbourg.Com - Performance and load test script template 1.2
Ginsbourg.Com - Performance and load test script template 1.2Ginsbourg.Com - Performance and load test script template 1.2
Ginsbourg.Com - Performance and load test script template 1.2
 
Call to-action templates by hubspot
Call to-action templates by hubspotCall to-action templates by hubspot
Call to-action templates by hubspot
 
Music video script_template 1
Music video script_template 1Music video script_template 1
Music video script_template 1
 
Auto Dialer
Auto DialerAuto Dialer
Auto Dialer
 
FREE Mortgage Lead Script
FREE Mortgage Lead Script FREE Mortgage Lead Script
FREE Mortgage Lead Script
 
Double xperience for om 042014
Double xperience for om 042014Double xperience for om 042014
Double xperience for om 042014
 
Kl mand open meeting may 2013
Kl mand open meeting may 2013Kl mand open meeting may 2013
Kl mand open meeting may 2013
 
Outbound Sales Training
Outbound Sales TrainingOutbound Sales Training
Outbound Sales Training
 
Hidup Sihat Bebas Kencing Manis Diabetes [eBook]
Hidup Sihat Bebas Kencing Manis Diabetes [eBook]Hidup Sihat Bebas Kencing Manis Diabetes [eBook]
Hidup Sihat Bebas Kencing Manis Diabetes [eBook]
 
Diabetes Melitus (Kencing Manis)
Diabetes Melitus (Kencing Manis)Diabetes Melitus (Kencing Manis)
Diabetes Melitus (Kencing Manis)
 
Telephone Communication & Speaking Skills
Telephone Communication & Speaking SkillsTelephone Communication & Speaking Skills
Telephone Communication & Speaking Skills
 

Similar a EECI 2010 - The Power of ExpressionEngine's Dynamic Templates

EECI2009 - From Design to Dynamic - Rapid ExpressionEngine Development
EECI2009 - From Design to Dynamic - Rapid ExpressionEngine DevelopmentEECI2009 - From Design to Dynamic - Rapid ExpressionEngine Development
EECI2009 - From Design to Dynamic - Rapid ExpressionEngine DevelopmentFortySeven Media
 
Intro to ExpressionEngine and CodeIgniter
Intro to ExpressionEngine and CodeIgniterIntro to ExpressionEngine and CodeIgniter
Intro to ExpressionEngine and CodeIgniterbrightrocket
 
Developing a Struts & Tiles application using WebSphere Studio
Developing a Struts & Tiles application using WebSphere StudioDeveloping a Struts & Tiles application using WebSphere Studio
Developing a Struts & Tiles application using WebSphere Studioelliando dias
 
What Developers Need Designers to Know about WordPress
What Developers Need Designers to Know about WordPressWhat Developers Need Designers to Know about WordPress
What Developers Need Designers to Know about WordPressEast Bay WordPress Meetup
 
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
 
Add-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his DutyAdd-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his DutyLeslie Doherty
 
#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
 
WebMatrix 100-level presentation
WebMatrix 100-level presentationWebMatrix 100-level presentation
WebMatrix 100-level presentationAlice Pang
 
Building a Simple, Responsive Website with ExpressionEngine
Building a Simple, Responsive Website with ExpressionEngineBuilding a Simple, Responsive Website with ExpressionEngine
Building a Simple, Responsive Website with ExpressionEngineOttergoose
 
GTU Web Designing Interview Questions And Answers for freshers
GTU Web Designing Interview Questions And Answers for freshersGTU Web Designing Interview Questions And Answers for freshers
GTU Web Designing Interview Questions And Answers for freshersTOPS Technologies
 
Joomla Beginner Template Presentation
Joomla Beginner Template PresentationJoomla Beginner Template Presentation
Joomla Beginner Template Presentationalledia
 

Similar a EECI 2010 - The Power of ExpressionEngine's Dynamic Templates (20)

EECI2009 - From Design to Dynamic - Rapid ExpressionEngine Development
EECI2009 - From Design to Dynamic - Rapid ExpressionEngine DevelopmentEECI2009 - From Design to Dynamic - Rapid ExpressionEngine Development
EECI2009 - From Design to Dynamic - Rapid ExpressionEngine Development
 
Introduction to HTML
Introduction to HTMLIntroduction to HTML
Introduction to HTML
 
Intro to ExpressionEngine and CodeIgniter
Intro to ExpressionEngine and CodeIgniterIntro to ExpressionEngine and CodeIgniter
Intro to ExpressionEngine and CodeIgniter
 
Web development basics
Web development basicsWeb development basics
Web development basics
 
Artistic Web Applications - Week3 - Part 3
Artistic Web Applications - Week3 - Part 3Artistic Web Applications - Week3 - Part 3
Artistic Web Applications - Week3 - Part 3
 
Developing a Struts & Tiles application using WebSphere Studio
Developing a Struts & Tiles application using WebSphere StudioDeveloping a Struts & Tiles application using WebSphere Studio
Developing a Struts & Tiles application using WebSphere Studio
 
What Developers Need Designers to Know about WordPress
What Developers Need Designers to Know about WordPressWhat Developers Need Designers to Know about WordPress
What Developers Need Designers to Know about WordPress
 
Rd.Html
Rd.HtmlRd.Html
Rd.Html
 
Intro to HTML 5 / CSS 3
Intro to HTML 5 / CSS 3Intro to HTML 5 / CSS 3
Intro to HTML 5 / CSS 3
 
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...
 
Add-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his DutyAdd-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his Duty
 
presentation
presentationpresentation
presentation
 
#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
 
presentation
presentationpresentation
presentation
 
Adding Vanilla to WordPress
Adding Vanilla to WordPressAdding Vanilla to WordPress
Adding Vanilla to WordPress
 
WebMatrix 100-level presentation
WebMatrix 100-level presentationWebMatrix 100-level presentation
WebMatrix 100-level presentation
 
Atomic design
Atomic designAtomic design
Atomic design
 
Building a Simple, Responsive Website with ExpressionEngine
Building a Simple, Responsive Website with ExpressionEngineBuilding a Simple, Responsive Website with ExpressionEngine
Building a Simple, Responsive Website with ExpressionEngine
 
GTU Web Designing Interview Questions And Answers for freshers
GTU Web Designing Interview Questions And Answers for freshersGTU Web Designing Interview Questions And Answers for freshers
GTU Web Designing Interview Questions And Answers for freshers
 
Joomla Beginner Template Presentation
Joomla Beginner Template PresentationJoomla Beginner Template Presentation
Joomla Beginner Template Presentation
 

Último

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
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
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
 
🐬 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
 
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
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
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
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
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
 
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
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
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
 
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
 
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
 

Último (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.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...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
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...
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
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...
 
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
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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
 
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
 
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
 

EECI 2010 - The Power of ExpressionEngine's Dynamic Templates

  • 1. welcome to THE POWER OF EE'S DYNAMIC TEMPLATES Welcome Thank Robert and Sponsors Spoke in Netherlands last year
  • 2. HELLO My Name is Jonathan Longnecker @necker47 jon@fortysevenmedia.com
  • 3. HELLO His Name is Nate Cro @natecroft nate@fortysevenmedia.com
  • 9. 2007 First EE Site - one page
  • 10. 2008 - PRESENT Full EE Site - Blog, portfolio Lots of recognition Rebrand
  • 11. 2009 Full Circle - Nate and I keep making music
  • 12. 2009 And create a site to find new music from other designers built on EE
  • 13.
  • 14. WHAT ARE TEMPLATES? A brief overview Naming Confusion *****Questions are ok!!
  • 15. What are Templates? A brief description SEPARATION Organize Parts of Site However You Want PRESENTATION Alter Template Presentation Based on Variables REUSABILITY Chop Your Site into Maintainable Reusable Chunks Document for Code Reusablity - Slyman Analytics
  • 16. TYPES OF TEMPLATES Hint: there’s more than one
  • 17. Types of Templates Hint: there’s more than one TEMPLATE GROUP TEMPLATE Embedded Templates Snippets (2.0) Global Variables
  • 18. Types of Templates Hint: there’s more than one TEMPLATE GROUPS • Groups of templates • Like folders on your server • Can setup URL structure Explain Screenshot URL's
  • 19. Types of Templates Hint: there’s more than one TEMPLATES • Building blocks of your site • Can contain global variables, snippets, pre- loaded text replacement and other templates • Can also contain HTML/JS, PHP, etc... • Embedded templates can pass variables • Nest multiple templates inside one another Pass Variables How deep can you embed?
  • 20. Types of Templates Hint: there’s more than one TEMPLATE TYPES *Icons om Espresso
  • 21. Types of Templates CSS STYLESHEET Serve the Template as "text/css" MIME type. No EE tags; served "as is." *Icons om Espresso
  • 22. Types of Templates Hint: there’s more than one RSS PAGE Used for RSS and Atom syndication feeds. Served as "text/xml" MIME type. *Icons om Espresso
  • 23. Types of Templates Hint: there’s more than one JAVASCRIPT Used for outputting Javascript code. Sends "text/javascript" MIME type. *Icons om Espresso
  • 24. Types of Templates Hint: there’s more than one STATIC Useful for HTML design elements embedded in other templates. No EE tags. *Icons om Espresso
  • 25. Types of Templates Hint: there’s more than one XML Used for outputting XML pages. Sends "text/xml" MIME type. *Icons om Espresso
  • 26. Types of Templates Hint: there’s more than one Create new template groups by uploading folders. Just add .group to group name. *****Any Questions?
  • 27. Types of Templates Hint: there’s more than one GLOBAL VARIABLES • EE has about 30 built in • Last thing processed in templates • For static info only • EE tags won’t work • Great for: header, footer, copyright, stylesheet links, etc...
  • 28. GLOBAL VARIABLES Types of Templates <!DOCTYPE HTML> {html_head} <html> <head> <meta http-equiv="Content-Type" content="text/ html; charset=utf-8" /> <link rel="Shortcut Icon" href="/favicon.ico"/> <title>Title of Page</title> <!--Blog Feeds--> <link rel="alternate" title="Projects and {blog_feeds} Rentals" href="/site/feed" /> <!--Stylesheets--> <link href="reset.css" media="screen" /> {stylesheets} <link href="design.css" media="all" /> </head> {html_head_end}
  • 29. GLOBAL VARIABLES Types of Templates {html_head} <title>Title of Page</title> {blog_feeds} {stylesheets} {html_head_end} Cleaned up Header *****Any Questions?
  • 30. GLOBAL VARIABLES Types of Templates Talk about Show and Tell How many have kids? Buy clothes? Consignment = sell your old clothes, buy new ones. Signup to help and get discounts/first pick Used 3rd party to login, manage your items for sale. Barcodes, POS, etc...
  • 31. GLOBAL VARIABLES Types of Templates <a href="http://itcanchange.com">Register To {register} Sell</a>
  • 32. GLOBAL VARIABLES Types of Templates <a href="{register}">Register To Sell</a> *****Any Questions?
  • 33. Types of Templates Hint: there’s more than one SNIPPETS (2.0) • Like an embedded template, but without the overhead • Processed early in rendering stages • Will parse EE tags • Can share snippets with MSM Too many database calls with regular templates
  • 34. GLOBAL VARIABLES Types of Templates &copy; {current_time format="%Y"}. All Rights {footer} Reserved
  • 35. GLOBAL VARIABLES Types of Templates © 2010. All Rights Reserved. *****Any Questions?
  • 36. EMBEDDING TEMPLATES It’s fun and easy!
  • 38. NAVIGATION Embedding Templates <body> <div id="header"><h1>Site Name Here</h1></div> <ul id="nav"> <li><a href="#">Overview</a></li> global/nav <li><a href="#">Another One</a></li> <li><a href="#">A Third One</a></li> </ul> <div id="content">Content</div> </body> NOT useful
  • 39. NAVIGATION Embedding Templates <body> <div id="header"><h1>Site Name Here</h1></div> {embed="global/nav"} <div id="content">Content</div> </body> NOT USEFUL
  • 41. PASSING VARIABLES Embedding Templates {embed="global/nav" name="jonathan"} <ul id="nav"> <li><a href="#">{embed:name}</a></li> <li><a href="#">Another One</a></li> <li><a href="#">A Third One</a></li> </ul> <ul id="nav"> <li><a href="#">Jonathan</a></li> <li><a href="#">Another One</a></li> <li><a href="#">A Third One</a></li> </ul>
  • 42. NAVIGATION Embedding Templates <body> <div id="header"><h1>Site Name Here</h1></div> <ul id="nav"> <li {if '{embed:loc}' == 'home'} global/nav class="current"{/if}> <a href="#">Overview</a></li> <li {if '{embed:loc}' == 'two'} class="current"{/if}> <a href="#">Another One</a></li> <li {if '{embed:loc}' == 'three'} class="current"{/if}> <a href="#">A Third One</a></li> </ul> <div id="content">Content</div> </body>
  • 43. NAVIGATION Embedding Templates <body> <div id="header"><h1>Site Name Here</h1></div> {embed="global/nav" loc="home"} <div id="content">Content</div> </body> *****Any Questions?
  • 45. FOOTER Embedding Templates <body> <div id="header"><h1>SiteName</h1></div> <div id="content">Content Here</div> <div id="footer"> global/footer <p>&copy; {current_time format="%Y"} FortySeven Media. All Rights Reserved</p> </div> </body>
  • 46. FOOTER Embedding Templates <body> <div id="header"><h1>SiteName</h1></div> <div id="content">Content Here</div> {embed="global/footer"} Could also be snippet *****Any Questions?
  • 47. SIDEBAR Came in from the side! It's the little things.
  • 48. SIDEBAR Embedding Templates <div id="sidebar"> global/sidebar <ul id="nav"> <li><a href="#">Overview</a></li> <li><a href="#">Another One</a></li> <li><a href="#">A Third One</a></li> </ul> <div id="callouts"> Callouts Go Here </div> </div><!--End Sidebar-->
  • 49. SIDEBAR Embedding Templates <div id="content"> <h1>Header Here</h1> <p>Paragraph</p> </div> {embed="_global/sidebar"} <div id="footer"> <p>© 2010. All Rights Reserved></p> </div> *****Any Questions? LEVEL UP!!!!!!
  • 51. IF & SEGMENTS Bend it to your will Holy Crap, changed the way I use EE
  • 53. If & Segments Bend it to your will http://site.com/blog/entry/title/ Segment 1 Segment 2 Segment 3
  • 54. SEGMENT VARIABLES If & Statements {segment_1} {segment_2} {segment_3} http://site.com/blog/entry/title/ {exp:weblog:entries  url_title="{segment_3}"} <h1>{title}</h1> <p>{body}</p> {/exp:weblog:entries} *****Any Questions?
  • 56. CONDITIONALS If & Statements BASIC VARIABLE ADVANCED VARIABLE {if username == "Mr. T"} {if username == "peanut_butter" AND username == "jelly"} <h1>Pity the Fool!</h1> <h1>Sandwich Time!</h1> {/if} {/if} pair type variables conditionally show or hide information on your pages based on criteria being met Advanced conditionals Parsed after all EE tags
  • 57. CONDITIONALS If & Statements ELSE & ELSEIF {if username == "weezer"} <h1>"Say it ain't so!"</h1> {if:elseif username == "radiohead"} <h1>"I'm a creep."</h1> {if:else} <h1>It's all just rock and roll.</h1> {/if} Looks for Weezer first, then radiohead. If neither are logged in, defaults to generic.
  • 58. CONDITIONALS If & Statements OPERATORS == "equal to" != "not equal to" < "less than" <= "less than or equal to" > "greater than" >= "greater than or equal to" <> "not equal to" You can use any of the following operators to compare a variable to a value: Logical operators compare multiple variables to multiple values, not getting in to that.
  • 59. CONDITIONALS If & Statements GLOBAL CONDITIONALS {if group_id == '3'} {if logged_in} {if logged_out} {if member_group == '3'} {if member_id == '47'} {if logged_in_member_id == '47'} {if screen_name == 'Mr. T'} {if total_comments > 0} {if total_entries > 0} {if segment_X == 'private'} {if username == 'elvira'} Don't have to use quotes around numbers *****Any Questions?
  • 60. LISTING & SINGLE ENTRY IN ONE TEMPLATE
  • 61. LISTING & SINGLE ENTRY IN ONE TEMPLATE If & Segments HEADER <head> {if segment_3} {exp:weblog:entries weblog="{my_weblog}" limit="1"} <meta name="description" content="{title}" /> <title>{title} | Events | About | Edgepoint Church</title> {/exp:weblog:entries} {if:else} <meta name="description" content="Upcoming Events" /> <title>Events| About | Edgepoint Church</title> {/if} </head>
  • 62. LISTING & SINGLE ENTRY IN ONE TEMPLATE If & Segments BODY <body> {if segment_3} {exp:weblog:entries weblog="news" limit="1" url_title="{segment_3}"} <h1>{title}</h1> {body} {/exp:weblog:entries} {if:else} <h1>Upcoming Events</h1> <ul id="events"> {exp:weblog:entries weblog="news" limit="50" } <li><a href="{url_title_path="about/events"}">{title}</a></li> {/exp:weblog:entries} </ul> {/if} </body> *****Any Questions?
  • 63. CUSTOM CATEGORY URL'S Custom Furniture Builders Don't know prices Embezzlement?
  • 64. If & Segments Bend it to your will http://site.com/products/sofas/10-123/ Volunteers: 3 people, one for each segment Nesting Dolls - Person 1 has biggest -on down
  • 65. If & Segments Bend it to your will http://site.com/products/sofas/
  • 66. If & Segments Bend it to your will http://site.com/products/
  • 67. If & Segments Bend it to your will Template Group Category Entry Title http://site.com/products/sofas/10-123/ Segment 1 Segment 2 Segment 3 EE Wants to add trigger Messy, not a good breadcrumb trail All 3 pages in one template
  • 68. CUSTOM CATEGORY URL'S If & Segments THE CATEGORIES PAGE {if segment_2=="" AND segment_3==""} {exp:weblog:categories weblog="yours" style="linear"} <p><a href="{path="template_group/ {category_url_title}"}">{category_name}</a></p> {/exp:weblog:categories}
  • 69. CUSTOM CATEGORY URL'S If & Segments THE CATEGORY ENTRIES PAGE {if:elseif segment_2!="" AND segment_3==""} {exp:query sql="SELECT cat_id FROM exp_categories WHERE cat_url_title = '{segment_2}'"} {exp:weblog:entries weblog="yours" category="{cat_id}"} <p><a href="{title_permalink={segment_1}/ {segment_2}}">{title}</a></p> {/exp:weblog:entries} {/exp:query} Low Seg2Cat option
  • 70. CUSTOM CATEGORY URL'S If & Segments THE SINGLE ENTRY PAGE {if:elseif segment_3!=""} {exp:weblog:entries weblog="yours" limit="1" url_title="{segment_3}"} Call whatever custom fields you have here {/exp:weblog:entries} {/if} Next/Previous don't work..not sure about pagination Low Seg2cat Only worked because each product had one category *****Any Questions?
  • 71. REAL WORLD EXAMPLES is stuff really happened!
  • 72. DESIGNERS MUSIC AJAX TOOLTIP
  • 73. DESIGNERSMUSIC AJAX TOOLTIP Real World Examples AJAX TOOLTIP • Cluetip jQuery shows external webpage • Used 1 template and added entry_id
  • 74. DESIGNERSMUSIC AJAX TOOLTIP Real World Examples
  • 75. DESIGNERSMUSIC AJAX TOOLTIP Real World Examples ALBUM • Album Name • Artist • Artwork • Website • Preview • Purchase Link
  • 76. DESIGNERSMUSIC AJAX TOOLTIP Real World Examples CALLS IN MAIN TEMPLATE {exp:weblog:entries weblog="music" orderby="artist|title" sort="desc" limit="1" dynamic="off"} <h2>{artist}</h2> <a href="{site_url}music/detail/{entry_id}" class="jt artwork" rel="{site_url}music/ajax/{entry_id}"> {exp:imgsizer:size src="{artwork}" width="140" height="140" alt="{title}"}</a> <h3>{title}</h3> {/exp:weblog:entries}
  • 77. DESIGNERSMUSIC AJAX TOOLTIP CALLS IN MAIN TEMPLATE {exp:weblog:entries weblog="music" limit="1" } <div class="jtip-albumimg">{exp:imgsizer:size src="{artwork}" width="64" height="64" alt="{title}" }</div> <h1>{title}</h1> <h2>{artist}</h2> {if artist-website} Artist Website <a href="{artist-website}">{artist-website}</a> {/if} Recommended by <a href="/members/profile/{member_id}"> {author}</a> {if location} from {location}{/if} *****Any Questions?
  • 79. KINGDOM LANDSCAPES GROUPED PROJECTS Real World Examples CATEGORY GROUPS • Overview Projects Page • Group entry by category • Reuse same template
  • 80. DESIGNERSMUSIC AJAX TOOLTIP Real World Examples
  • 81. KINGDOM LANDSCAPES GROUPED PROJECTS Real World Examples CALLS IN MAIN TEMPLATE {exp:weblog:categories weblog="projects" show="6" style="linear"} <h2>{category_name} Projects</h2> <a href="{path=projects/list}">View {category_name} projects</a> {/exp:weblog:categories} {exp:weblog:entries weblog="projects" category="6" orderby="random" limit="2" } <a href="{url_title_path="projects/archives"}">{exp:imgsizer:size src="{main_image}" width="198" height="142" alt="{title}" }</a> <h3>{title}{entry_date format="%d/%m/%y"}</h3> <p>{exp:word_limit_plus stop_after="18"}{exp:html_strip} {description}{/exp:html_strip}{/exp:word_limit_plus}</p> <a href="{url_title_path="projects/archives"}">View Project</a> {/exp:weblog:entries}
  • 82. KINGDOM LANDSCAPES GROUPED PROJECTS Real World Examples PROJECT ARTICLE {exp:weblog:categories weblog="projects" show="{embed:cat}" style="linear"} <h2>{category_name} Projects</h2> <a href="{path=projects/list}">View {category_name} projects</a> {/exp:weblog:categories} {exp:weblog:entries weblog="projects" category="{embed:cat}" orderby="random" limit="2" } <a href="{url_title_path="projects/archives"}">{exp:imgsizer:size src="{main_image}" width="198" height="142" alt="{title}" }</a> <h3>{title}{entry_date format="%d/%m/%y"}</h3> <p>{exp:word_limit_plus stop_after="18"}{exp:html_strip} {description}{/exp:html_strip}{/exp:word_limit_plus}</p> <a href="{url_title_path="projects/archives"}">View Project</a> {/exp:weblog:entries}
  • 83. KINGDOM LANDSCAPES GROUPED PROJECTS Real World Examples CALLS IN MAIN TEMPLATE {embed="global/project_article" cat="6"} {embed="global/project_article" cat="7"} {embed="global/project_article" cat="8"} {embed="global/project_article" cat="9"}
  • 85. FOLIAGE DESIGN ARTICLES Real World Examples
  • 86. FOLIAGE DESIGN ARTICLES Real World Examples PROJECT & PLANT ARTICLES • Project and plant channels had the same format • Needed to be able to use in a variety of sizes • Main, Homepage, Sidebar • Images and text truncating needed to be adjusted
  • 87. FOLIAGE DESIGN ARTICLES Real World Examples THE ARTICLE {exp:weblog:entries weblog="projects" limit="3" dynamic="off"} <div class="article {switch='||last'}"> <a href="{url_title_path="projects"}" title="{title}" > {projects limit="1"} {exp:imgsizer:size src="{img}" width="200" height="100"} {/projects} </a> <h4>{exp:trunchtml chars="25"}{title}{/exp:trunchtml}</h4> <a href="{url_title_path="projects"}">View Project</a> </div> {/exp:weblog:entries}
  • 88. FOLIAGE DESIGN ARTICLES Real World Examples THE ARTICLE {exp:weblog:entries weblog="{embed:weblog}" {embed:sort} {embed:cat} {embed:orderby} limit="{embed:limit}" status="{embed:status}" {embed:url_title} disable="member_data|pagination|trackbacks|category_fields" {embed:dynamic} {embed:entry_id} }
  • 89. FOLIAGE DESIGN ARTICLES Real World Examples THE ARTICLE {exp:weblog:entries weblog="{embed:weblog}" limit="{embed:limit}" {embed:dynamic} } <div class="article {embed:switch}"> <a class=href="{url_title_path="{embed:path}"}" title="{title}" > {{embed:ff_shortname} limit="1"} {exp:imgsizer:size src="{img}" width="{embed:width}" height="{embed:height}" alt="{caption}" } {/{embed:ff_shortname}} </a> <h4>{if '{embed:loc}' == 'sidebar'}{exp:trunchtml chars="20" inline="..."}{title}{/exp:trunchtml}{if:else}{exp:trunchtml chars="25" inline="..."}{title}{/exp:trunchtml}{/if}</h4> <a href="{url_title_path="{embed:path}"}">View {embed:type}</a> </div> {/exp:weblog:entries} *****Any Questions?
  • 90. FOLIAGE DESIGN ARTICLES Real World Examples EMBEDDING THE ARTICLE {embed="_global/mini_articles" weblog="projects" orderby="orderby='random'" limit="3" switch="{switch='||last'}" path="projects" width="202" height="129" ff_shortname="project_images" type="Project" cat="category='3'" status="open|featured"}
  • 91. DESIGNERS MUSIC AUTO COMPLETE
  • 92. DESIGNERSMUSIC AJAX TOOLTIP Real World Examples
  • 93. DESIGNERSMUSIC AJAX AUTOCOMPLETE Real World Examples {exp:weblog:entry_form weblog="music" return="submit/ success" } <input type="hidden" name="field_ft_4" value="none" /> <input type="hidden" name="field_ft_6" value="none" /> <label>Album Name</label> <input class="txt-input album-title" type="text" name="title" id="title" value="{title}" /> <label>Artist Name</label> <input class="txt-input artist-ac" type="text" dir="ltr" id="field_id_4" name="field_id_4" value="" /> <label>Artist Website</label> <input class="txt-input artist-website-ac" type="text" dir="ltr" id="field_id_6" name="field_id_6" value="http://" /> {/exp:weblog:entry_form}
  • 94. DESIGNERSMUSIC AJAX AUTOCOMPLETE LOCALDATA var artist = [{exp:query sql="SELECT DISTINCT field_id_4 FROM exp_weblog_data WHERE exp_weblog_data.weblog_id=1" backspace="2"}"{field_id_4}", {/exp:query}]; var website = [{exp:query sql="SELECT DISTINCT field_id_6 FROM exp_weblog_data WHERE exp_weblog_data.weblog_id=1" backspace="2"}"{field_id_6}", {/exp:query}]; var album_title = [{exp:query sql="SELECT title FROM exp_weblog_titles WHERE exp_weblog_titles.weblog_id=1" backspace="2"}"{title}", {/exp:query}]; *****Any Questions?
  • 95. DESIGNERSMUSIC AJAX AUTOCOMPLETE LOCALDATA var artist = ["Starflyer 59", "Hammock", "Coldplay", "Heroes or Ghosts", "The Asteroids Galaxy Tour", "Blindside", "Common Children", "Elliot", "Feeder", "Fleet Foxes", "John Hopkins", "Andrew Bird", "Tyler Melashenko"]; var website = ["http://sf59.com/", "http://hammockmusic.com/", "http://coldplay.com/", "http://heroesorghosts.com", "http://www.theasteroidsgalaxytour.com/" "http://www.myspace.com/fleetfoxes"]; var album_title = ["Starflyer 59 (Gold)", "Maybe They Will Sing for Us Tomorrow", "Kenotic", "Raising Your Voice Trying to Stop an Echo", "Americana", "Leave Here a Stranger", "Silver (Extended Edition)", "My Island", "Dial M"]; *****Any Questions?
  • 96. DESIGNERSMUSIC AJAX AUTOCOMPLETE JAVASCRIPT $().ready(function() { function findValueCallback(event, data, formatted) { $("<li>").html( !data ? "No match!" : "Selected: " + formatted).appendTo("#result");} function formatItem(row) { return row[0] + " (<strong>id: " + row[1] + "</strong>)";} function formatResult(row) { return row[0].replace(/(<.+?>)/gi, '');} $("input.artist-ac").autocomplete(artist); $("input.artist-website-ac").autocomplete(website); $("input.album-title").autocomplete(album_title); }); *****Any Questions?
  • 97. SMITH STUDIOS MULTI- MEDIA LIGHTBOX Photography Campaigns
  • 98. SMITH STUDIOS MULTI-MEDIA LIGHTBOX Real World Examples GALLERY • Colorbox serving images and media • Needed to have images, movies, etc... in the same gallery • Show the first image, offset the others
  • 99. SMITH STUDIOS MULTI-MEDIA LIGHTBOX Real World Examples GALLERY • Using Matrix • File Upload • Movie or SWF • Width & Height
  • 100. SMITH STUDIOS MULTI-MEDIA LIGHTBOX Real World Examples
  • 101. SMITH STUDIOS MULTI-MEDIA LIGHTBOX Real World Examples ENTRIES {exp:weblog:entries weblog="content"} {images limit="1"} <a class="img-gallery" href="{img}" title="{img-caption}"> {exp:imgsizer:size src="{img}" width="460" height="260" alt="{img-caption}" }</a> {/images} {!--Hidden--} {images offset="1"} {if mov} <a class="img-gallery" href="/mov/{entry_id}/{row_count}"> {img-caption}</a> {if:else} <a class="img-gallery" href="{img}">{img-caption}</a> {/if} {/images}
  • 102. SMITH STUDIOS MULTI-MEDIA LIGHTBOX Real World Examples MOV {exp:weblog:entries weblog="content" limit="1"} {embed="site/quicktime" row_id="{segment_3}"} {/exp:weblog:entries} Matrix Updated as of 2 weeks ago to include {row_id}
  • 103. SMITH STUDIOS MULTI-MEDIA LIGHTBOX Real World Examples QUICKTIME {exp:weblog:entries weblog="content" limit="1" } {images limit="1" offset="{embed:row_id}" } <!-- begin embedded QuickTime file... --> <OBJECT classid='clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B' width="{mov-width}" height="{mov-height}"> <param name='src' value="{img}"> <EMBED src="{img}" width="{mov-width}" height="{mov-height}"> </EMBED> </OBJECT> {/images} {/exp:weblog:entries} *****Any Questions?
  • 105. DESIGNERSMUSIC AJAX TOOLTIP Real World Examples
  • 106. FOLIAGE FLEXIBLE CONTACT FORM Real World Examples CONTACT FORM • On almost every page • Budget changes based on what user is viewing • Use a single template for maintainability
  • 107. FOLIAGE FLEXIBLE CONTACT FORM Real World Examples {exp:freeform:form form_name="contact_form" required="name| email|message{embed:required}" notify="me" template="contact_form" return="contact/thanks" form_id="contact_form"} <label class="required">Current Page</label> <input class="std-input" type="text" name="location" value="{site_url}{segment_1}/{segment_2}" size="50" /> Send info about what page they were on Embed Required
  • 108. FOLIAGE FLEXIBLE CONTACT FORM Real World Examples {if '{embed:type}' == 'project'} <label class="required">Budget*</label> <select name="budget"> <option value="">Choose One...</option> <option value="$10,000 - $30,000">$10,000 - $30,000</option> <option value="$30,000 - $80,000">$30,000 - $80,000</option> <option value="$80,000 - $150,000">$80,000 - $150,000</option> <option value="$150,000+">$150,000+</option> </select> <span class="price">$ prices in TTD</span> {/if}
  • 109. FOLIAGE FLEXIBLE CONTACT FORM Real World Examples {if '{embed:type}' == 'rental'} <label class="required">Budget*</label> <select name="budget"> <option value="">Choose One...</option> <option value="$500 - $1,000">$500 - $1,000 per mo.</option> <option value="$1,000 - $1,500">$1,000 - $1,500 per mo.</option> <option value="$1,500 - $2,000">$1,500 - $2,000 per mo.</option> <option value="$2,000+">$2,000+ per mo.</option> </select> <span class="price">$ prices in TTD</span> {/if}
  • 110. FOLIAGE FLEXIBLE CONTACT FORM Real World Examples {if '{embed:type}' == 'irrigation'} <label class="required">Budget*</label> <select name="budget"> <option value="">Choose One...</option> <option value="$10,000 - $20,000">$10,000 - $20,000</option> <option value="$20,000 - $30,000">$20,000 - $30,000</option> <option value="$30,000 - $50,000">$30,000 - $50,000</option> <option value="$50,000+">$50,000+</option> </select> <span class="price">$ prices in TTD</span> {/if}
  • 111. FOLIAGE FLEXIBLE CONTACT FORM Real World Examples {if '{embed:type}' == 'lighting'} <label class="required">Budget*</label> <select name="budget"> <option value="">Choose One...</option> <option value="$2,000 - $5,000">$2,000 - $5,000</option> <option value="$5,000 - $10,000">$5,000 - $10,000</option> <option value="$10,000 - $30,000">$10,000 - $30,000</option> <option value="$30,000+">$30,000+</option> </select> <span class="price">$ prices in TTD</span> {/if}
  • 112. FOLIAGE FLEXIBLE CONTACT FORM Real World Examples {if '{embed:type}' == 'water_features'} <label class="required">Budget*</label> <select name="budget"> <option value="">Choose One...</option> <option value="$8,000 - $15,000">$8,000 - $15,000</option> <option value="$15,000 - $30,000">$15,000 - $30,000</option> <option value="$30,000 - $80,000">$30,000 - $80,000</option> <option value="$80,000+">$80,000+</option> </select> <span class="price">$ prices in TTD</span> {/if}
  • 113. FOLIAGE FLEXIBLE CONTACT FORM Real World Examples {if '{embed:type}' == 'generic'} <select class="twoup first" name="project_type" id="or" onchange="populate(this)"> <option value="">Choose One...</option> <option value="Landscaping Project">Landscaping Project</option> <option value="Plant Rental">Plant Rental</option> <option value="Garden Maintenance">Garden Maintenance</option> </select> <select class="twoup" name="budget" id="de"> <option value="">&larr; Choose Type...</option> </select><span class="price twoup">prices in TTD</span> {/if} <input type="submit" name="submit" value="Submit" /> {/exp:freeform:form}
  • 114. FOLIAGE FLEXIBLE CONTACT FORM Real World Examples <script type="text/javascript"> function populate(o) { d=document.getElementById('de'); if(!d){return;} var mitems=new Array(); mitems['Landscaping Project']=['$10,000 - $30,000','$30,000 - $80,000','$80,000 - $150,000','$150,000+']; mitems['Plant Rental']=['$500 - $1,000','$1,000 - $1,500 per mo.','$1,500 - $2,000 per mo.','$2,000+ per mo.']; mitems['Garden Maintenance']=['n/a']; d.options.length=0; cur=mitems[o.options[o.selectedIndex].value]; if(!cur){return;} d.options.length=cur.length; for(var i=0;i<cur.length;i++) { d.options[i].text=cur[i]; d.options[i].value=cur[i]; } } </script>
  • 115. FOLIAGE FLEXIBLE CONTACT FORM Real World Examples $(document).ready(function() { $('.dynamic_select').show(); $('select#or').change(function() { if ($("select#or").val() === 'Garden Maintenance'){ $('.dynamic_select').hide(); } else{ $('.dynamic_select').show(); } }); });
  • 116. FOLIAGE FLEXIBLE CONTACT FORM Real World Examples {embed="_global/contact_form" hidebox="hidebox" type="irrigation" required="|budget"}
  • 117. SARAH LONGNECKER VIDEO LIGHTBOX Graduated Economy Freelance - Video issues with FIrefox, Quicktime
  • 118. SARAH LONGNECKER VIDEO LIGHTBOX Real World Examples VIDEO LIGHTBOX • Lightview serving up Vimeo embed • Needed a template to reuse throughout the whole site
  • 119. SARAH LONGNECKER VIDEO LIGHTBOX Real World Examples
  • 120. SARAH LONGNECKER VIDEO LIGHTBOX Real World Examples LIGHTBOX • Vimeo ID# • Poster Image • Height • Width
  • 121. SARAH LONGNECKER VIDEO LIGHTBOX Real World Examples LIGHTWINDOW PARAMS <a class="lightwindow" params="lightwindow_width=350, lightwindow_height=200" title="Title of Entry" href="http://vimeo.com/moogaloop.swf?clip_id=55555"> Click to Play</a>
  • 122. SARAH LONGNECKER VIDEO LIGHTBOX Real World Examples GLOBAL_VIDEOLINK <a class="lightwindow" params="lightwindow_width={embed:video_width}, lightwindow_height={embed:video_height}" title="{embed:title}" href="http://vimeo.com/moogaloop.swf?clip_id={embed:video}"> Click to Play</a>
  • 123. SARAH LONGNECKER VIDEO LIGHTBOX Real World Examples CALLS IN MAIN TEMPLATE {exp:weblog:entries weblog="work" orderby="date" sort="desc" limit="5"} {embed="global/global_videolink" title="{title}" video="{video}" video_width="{video_width}" video_height="{video_height}"} {/exp:weblog:entries} Could have made this whole thing a snippet to save template visual clutter? *****Any Questions?
  • 124. STRUCTURE & IMAGE REPLACEMENT
  • 125. STRUCTURE & IMAGE REPLACEMENT Real World Examples IMAGE REPLACE • Entire Site is managed with Structure • LG Image Replace • Matrix • Image Sizer
  • 126. CREATED BY AJ Penninga @ajp http://www.prettysquares.com/
  • 127. STRUCTURE & IMAGE REPLACEMENT Real World Examples MATRIX SETUP File Upload Caption Width Height Align
  • 128. STRUCTURE & IMAGE REPLACEMENT Real World Examples MATRIX SETUP
  • 129. STRUCTURE & IMAGE REPLACEMENT Real World Examples CALLS IN MAIN TEMPLATE {exp:weblog:entries weblog="content" limit="1" } {exp:lg_replace:haystack needles="{images backspace="1"} image_{row_count}|{/images}"} {body} {images} {exp:lg_replace:replacement needle="image_{row_count}"} {exp:imgsizer:size src="{img}" width="{img-width}" height="{img-height}" alt="{img-caption}" class="{img- align}"} {/exp:lg_replace:replacement} {/images} {/exp:lg_replace:haystack} {/exp:weblog:entries} *****Any Questions?
  • 131. FOLIAGE SIDEBAR Real World Examples SIDEBAR CALLOUT • Highlight Navigation • Show different callouts based on parameter
  • 132. FOLIAGE SIDEBAR Real World Examples CALLS IN MAIN TEMPLATE <div id="sidebar"> {embed="_global/sec_nav" mainloc="{embed:mainloc}" loc="{embed:loc}"} {if '{embed:contact}' == 'yes'}Contact Info{/if} {if '{embed:recent_project}' == 'yes'}Recent Projects{/if} {if '{embed:callouts}' == 'yes'}Callouts{/if} {if '{embed:history}' == 'yes'}History{/if} </div><!--End Sidebar-->
  • 134. FOLIAGE SIDEBAR Real World Examples {if '{embed:mainloc}' == 'services'} <h3>In This Section</h3> <ul id="sec-nav"> <li {if '{embed:loc}' == 'overview'}class="current"{/if}><a href="/services/">Overview</a></li> <li {if '{embed:loc}' == 'water_features'}class="current"{/ if}><a href="#">Water Features</a></li> <li {if '{embed:loc}' == 'irrigation'}class="current"{/if}><a href="#">Irrigation</a></li> <li {if '{embed:loc}' == 'lighting'}class="current"{/if}><a href="#">Lighting</a></li> <li {if '{embed:loc}' == 'maintenance'}class="current"{/if} ><a href="#">Maintenance</a></li> </ul> {/if} Simple secondary navigation
  • 136. FOLIAGE SIDEBAR Real World Examples {if '{embed:mainloc}' == 'projects'} <ul id="sec-nav"> <li {if segment_2 == ''}{if segment_3 == ''}class="current"{/ if}{/if}><a href="{site_url}projects">Overview</a></li> {exp:weblog:categories weblog="projects" style="linear" id="project_categories"} <li {if category_url_title == segment_4}class="current"{/if} ><a href="{path=projects/list}">{category_name}</a></li> {/exp:weblog:categories} <li {if segment_2 == 'list'}{if segment_3 == ''} class="current"{/if}{/if}><a href="{site_url}projects/ list/">All Projects</a></li> </ul> {/if} Secondary nav with category highlighting
  • 138. FOLIAGE SIDEBAR Real World Examples {if '{embed:mainloc}' == 'rentals'} <ul id="sec-nav"> <li {if segment_2 == ''}class="current"{/if}><a href="#">Overview</ a></li> <li {if segment_2 == 'plants'}class="current"{/if} {if segment_2 == 'list'}class="current"{/if}><a href="#">Plants</a> <ul> {exp:weblog:categories weblog="rentals" style="linear"} <li {if category_url_title == segment_4}class="current"{/if}><a href="{path=rentals/list}">{category_name}</a></li> {/exp:weblog:categories} <li {if segment_2 == 'list'}{if segment_3 == ''}class="current"{/ if}{/if}><a href="{site_url}rentals/list/">All Plants</a></li> </ul></li> </ul> {/if} *****Any Questions?
  • 139. FACILITY DUDE CALLOUTS Talk about Facility Dude Manage Facilities with Software
  • 140. FACILITY DUDE CALLOUTS Real World Examples
  • 141. FACILITY DUDE CALLOUTS Real World Examples PRODUCT & SERVICE CALLOUTS • Product and blog page links needed to be dynamic • Other product info like short description and images needed to be dynamic as well • All of these could be overridden for special callouts
  • 142. FACILITY DUDE CALLOUTS Real World Examples CHANNEL SETUP • Title • Playa field w/ access to products and blog entries • Image override • Description override • Link override
  • 143. FACILITY DUDE CALLOUTS Real World Examples CHOOSE THE CALLOUT • Whole site managed by Structure • Callouts will pull randomly unless... • A specific one is chosen for that page
  • 144. FACILITY DUDE CALLOUTS Real World Examples THE SIDEBAR TEMPLATE {exp:weblog:entries weblog="content" disable="member_data|pagination|trackbacks" limit="1"} {if sidebar_callout} {sidebar_callout limit="1" dynamic="off"} {embed="_global/callout_related" callout_related entry_id="{entry_id}"} {/sidebar_callout} {if:else} {embed="_global/callout" entry_id="{entry_id}"} callout {/if} {/exp:weblog:entries} Look for related field
  • 145. FACILITY DUDE CALLOUTS Real World Examples CALLOUT_RELATED {exp:weblog:entries entry_id="{embed:entry_id}"} {if callout_img} {exp:imgsizer:size src="{callout_img}" alt="{title}" } {if:else} {callout_related} {if weblog_id=="2"} {exp:imgsizer:size src="{product-icon-dock}" alt="{title}" } {if:else} {images limit="1"} {exp:imgsizer:size src="{img}" width="156" alt="{title}" } {/images} {/if} {/callout_related} {/if} <h4>{title}</h4> Lots of conditionals GO SLOW
  • 146. FACILITY DUDE CALLOUTS Real World Examples CALLOUT_RELATED {if callout_desc} <p>{callout_desc}</p> {if:else} {callout_related} <p>{product-short-desc}{product-group-short-desc}{short-desc}</p> {/callout_related} {/if} {if callout_link} <a class="button" href="{callout_link}">Learn More</a> {if:else} {callout_related} <a class="button" href=" {if weblog_id == "6"}{path="products/{url_title}"} {if:elseif weblog_id == "2"} {categories limit="1"}{site_url}products/{category_url_title}/ {url_title}/{/categories} {if:else} {page_url} {/if}">Learn More</a> {/callout_related} {/if} {/exp:weblog:entries} GO SLOW
  • 147. FACILITY DUDE CALLOUTS Real World Examples CALLOUT {exp:weblog:entries weblog="callouts" orderby="random" limit="1" dynamic="off"} {if callout_img} {exp:imgsizer:size src="{callout_img}" alt="{title}" } {if:else} {callout_related} {if weblog_id=="2"} {exp:imgsizer:size src="{product-icon-dock}" alt="{title}" } {if:else} {images limit="1"} {exp:imgsizer:size src="{img}" width="156" alt="{title}" } {/images} {/if} {/callout_related} {/if} <h4>{title}</h4> *****Any Questions?
  • 148. EMBEDDING TEMPLATES MULTIPLE TIMES
  • 149. SUBMITTED BY Mike Boyink @ boyink http://boyink.com// As if he's not doing enough with an 8 hour session
  • 150. EMBEDDING TEMPLATES MULTIPLE TIMES Real World Examples COMPARE PRODUCTS • Useful for comparing multiple entries • Handle in one template • Use segment variables
  • 151. EMBEDDING TEMPLATES MULTIPLE TIMES Real World Examples
  • 152. EMBEDDING TEMPLATES MULTIPLE TIMES Real World Examples <form name="compare_products" id="compare_form" method="post" action=""> <input type="button" class="compare_button" value="Compare" onclick="combineMenus(this.form, this.form.product_1, this.form.product_2, this.form.product_3)" /> <select name="product_1"> <option value ="498/" >BTL-433 - 4 cu. ft.</option> <option value ="251/" >SH-241 - 0.8 cu. ft.</option> </select> <select name="product_2"> <option value ="498/" >BTL-433 - 4 cu. ft.</option> <option value ="251/" >SH-241 - 0.8 cu. ft.</option> </select> <select name="product_3"> <option value ="498/" >BTL-433 - 4 cu. ft.</option> <option value ="251/" >SH-241 - 0.8 cu. ft.</option> </select>
  • 153. EMBEDDING TEMPLATES MULTIPLE TIMES Real World Examples <form name="compare_products" id="compare_form" method="post" action=""> <input type="button" class="compare_button" value="Compare" onclick="combineMenus(this.form, this.form.product_1, this.form.product_2, this.form.product_3)" /> <select name="product_1"> {exp:weblog:entries weblog="content" } <option value ="{entry_id}/" >{title}</option> {/exp:weblog:entries} </select> <select name="product_2"> {exp:weblog:entries weblog="content" } <option value ="{entry_id}/" >{title}</option> {/exp:weblog:entries} </select> <select name="product_3"> {exp:weblog:entries weblog="content" } <option value ="{entry_id}/" >{title}</option> {/exp:weblog:entries} </select>
  • 154. EMBEDDING TEMPLATES MULTIPLE TIMES Real World Examples {embed="compare_products" entry_id="{segment_4}" } {embed="compare_products" entry_id="{segment_5}" } {embed="compare_products" entry_id="{segment_6}" }
  • 155. EMBEDDING TEMPLATES MULTIPLE TIMES Real World Examples {exp:weblog:entries weblog="content" entry_id="{embed:entry_id}"} {title} All Custom Fields {/exp:weblog:entries} *****Any Questions?
  • 156. WILL ALL THIS WORK IN EE 2?
  • 157. Will all this work in EE2? Yes.
  • 158. WILL ALL THIS WORK IN EE2? Real World Examples {exp:weblog:entries weblog="content" dynamic="off"} 
  • 159. WILL ALL THIS WORK IN EE2? {exp:channel:entries channel="content" dynamic="no"} 
  • 160. THANK YOU Jonathan Longnecker twitter.com/necker47 jon@fortysevenmedia.com fortysevenmedia.com