SlideShare a Scribd company logo
1 of 94
Rapid Template Development
                                 with Joomla, YUI & jQuery
                                 Chris Rault, JoomlaJunkie.com
                                 CMSExpo, Denver Colorado - December 08




http://joomlajunkie.com   http://prothemer.com   http://cmsexpo.net
What is a framework?
                  “A framework can be defined as a set of tools, libraries,
                  conventions & best practices, that attempt to abstract
                  routine task intro generic modules that can be reused.
                  The goal behind using a framework is reduce time
                  spent on repetitive tasks, allowing the designer or
                  developer to focus on tasks that are unique to a given
                  project, rather than reinventing the wheel each time
                  around.”         [Framework For Designers, by Jeff Croft]




http://joomlajunkie.com   http://prothemer.com        http://cmsexpo.net
Types of frameworks
                                ✤    CSS Frameworks
                                ✤    Javascript Frameworks
                                ✤    PHP Frameworks
                                ✤    Content Management Frameworks
                                ✤    Web Application Frameworks




http://joomlajunkie.com   http://prothemer.com   http://cmsexpo.net
Advantages of using a framework
                                ✤    Increase Productivity
                                ✤    Avoid common mistakes
                                ✤    Better team workflow
                                ✤    Optimal browser compatibility
                                ✤    Built for growth
                                ✤    Normalize your code base




http://joomlajunkie.com   http://prothemer.com   http://cmsexpo.net
Disadvantages of using a framework

                      ✤     You need time to understand the framework
                      ✤     Could inherit someone elseʼs bugs
                      ✤     Reduces the need to learn
                      ✤     Sometimes bloated source code




http://joomlajunkie.com    http://prothemer.com   http://cmsexpo.net
Things that can be abstracted
                                     ✤    Browser Resets
                                     ✤    Base Typography
                                     ✤    Basic Styles for Forms
                                     ✤    Generic / reusable classes
                                     ✤    Grids




http://joomlajunkie.com   http://prothemer.com   http://cmsexpo.net
Yahoo User Interface
otherwise referred to as YUI (you-weee)




        http://developer.yahoo.com/yui/grids/
What is YUI?
YUI is a powerful javascript library of reusable
utilities and controls that can be used to build
rich interactive applications.




           http://developer.yahoo.com/yui/grids/
..but wait, thereʼs more!
The YUI Library also includes several
core CSS resources..




        http://developer.yahoo.com/yui/grids/
Say hello to YUI CSS!
  ✤   Developed by Yahoo!
  ✤   Authored by Nate Koechley
  ✤   4kb in size(!!)
  ✤   BSD License




      http://developer.yahoo.com/yui/grids/
The Goals of YUI CSS
   ✤   Provide Stability
   ✤   Normalize Differences
   ✤   Solve recurring problems
   ✤   Centrally manage complexity




       http://developer.yahoo.com/yui/grids/
http://developer.yahoo.com/yui/grids/
reset.css
        http://developer.yahoo.com/yui/grids/
fonts.css
reset.css
        http://developer.yahoo.com/yui/grids/
grid.css

        fonts.css
reset.css
        http://developer.yahoo.com/yui/grids/
yui summary:
✤ Four preset page widths
✤ Six preset templates
✤ The ability to stack or nest subdivided regions..
✤ Of one, two, three or four columns.
✤ 4kb in size
✤ Over 1000 page layout combinations




         http://developer.yahoo.com/yui/grids/
page widths:
750px            t            974px
            Page Widths
950px                         100%




        http://developer.yahoo.com/yui/grids/
750px Centered




http://developer.yahoo.com/yui/grids/
950px Centered




http://developer.yahoo.com/yui/grids/
974px Centered




http://developer.yahoo.com/yui/grids/
100% Fluid




http://developer.yahoo.com/yui/grids/
grids.css

Control the page from the root node:

         <body>
          <div></div>
         </body>




       http://developer.yahoo.com/yui/grids/
grids.css
     Available ID values:

 750px centered
 
     #doc

 950px centered
 
     #doc2

 100% fluid 
 
 
       #doc3
  974px centered
 
     #doc4




    http://developer.yahoo.com/yui/grids/
grids.css

  Width: 750px Centered:

<body>
 <div id=quot;docquot;></div>
</body>




   http://developer.yahoo.com/yui/grids/
grids.css

  Width: 950px Centered:

<body>
 <div id=quot;doc2quot;></div>
</body>




   http://developer.yahoo.com/yui/grids/
grids.css

     Width: 100% Fluid

<body>
 <div id=quot;doc3quot;></div>
</body>




   http://developer.yahoo.com/yui/grids/
grids.css

  Width: 974px Centered:

<body>
 <div id=quot;doc4quot;></div>
</body>




   http://developer.yahoo.com/yui/grids/
grids.css

       Elastic vs Fixed?
Page widths are in EM’s, but can be easily
   overridden to have a fixed width.




        http://developer.yahoo.com/yui/grids/
grids.css

For example...
#doc{
  width: 750px;
}




http://developer.yahoo.com/yui/grids/
grids.css

What you put into
the root level div is
    up to you..



  http://developer.yahoo.com/yui/grids/
grids.css
          Basic Page Structure
<body>                        #hd
  <div id=quot;docquot;>
    <div id=quot;hdquot;></div>
    <div id=quot;bdquot;></div>       #bd
    <div id=quot;ftquot;></div>
  </div>
</body>                       #ft




          http://developer.yahoo.com/yui/grids/
grids.css


 All except #doc3 are
automatically centered




  http://developer.yahoo.com/yui/grids/
grids.css
A-Grade Browsers - Say what?




      http://developer.yahoo.com/yui/grids/
grids.css

      Template Presets...
   Six presets templates that
accommodate all IAB (Interactive
  Advertising Bureau) ad sizes.




      http://developer.yahoo.com/yui/grids/
grids.css
           Template Presets:
.yui-t1 160 on left   .yui-t4 180 on right
.yui-t2 180 on left   .yui-t5 240 on right
.yui-t3 300 on left   .yui-t6 300 on right




          http://developer.yahoo.com/yui/grids/
.yui-t1




http://developer.yahoo.com/yui/grids/
.yui-t6




http://developer.yahoo.com/yui/grids/
Template 1: 160px left
Lorem ipsum         Lorem ipsum dolor sit amet, consectetuer
dol or sit amet,    adipiscing elit. Quisque a urna. Maecenas lobortis
con sec te tuer     lacinia nibh. In ac odio. Donec rhoncus, purus at
adipisc ing elit.   vehicula mollis, lacus massa pulvinar nunc, vel
Quisque a           semper neque enim quis nulla. Nunc rhoncus
urna. Maecenas      tincidunt eros. Nulla euismod, dui id commodo
lo bortis lacinia   viverra, pede leo aliquam diam, non eleifend
nibh.
                    The main block
160px                accumsan non, mollis in, neque. Aliquam eu tellus.
Donec rhoncus,      Morbi imperdiet, eros gravida dictum suscipit, dui
purus at            orci dapibus erat, et pretium dui est eget velit.
vehicula mollis,    Proin eget neque in ante fringilla pulvinar. Proin vel
lacus massa         augue. Mauris aliquam tempus nibh. Curabitur
pulvinar nunc,      enim ante, laoreet ullamcorper, mollis in, dapibus
vel semper          quis, orci. Curabitur consequat, neque eu lobortis
neque enim          tristique, quam nibh posuere purus, in egestas mi
quis nulla.         posuere purus, in egestas neque ut pede.
Nunc rhoncus        Pellentesque lacinia, elit a tincidunt bibendum, nisl
tincidunt eros.     dolor consequat lorem, sit amet lobortis elit ligula
Nulla euismod,      at ante.
dui id




            http://developer.yahoo.com/yui/grids/
Template 2: 180px left
Lorem ipsum dol or       Lorem ipsum dolor sit amet, consectetuer
sit amet, con sec te     adipiscing elit. Quisque a urna. Maecenas
tuer adipisc ing elit.   lobortis lacinia nibh. In ac odio. Donec
Quisque a urna.          rhoncus, purus at vehicula mollis, lacus
Maecenas lo bortis       massa pulvinar nunc, vel semper neque enim
lacinia nibh.            quis nulla. Nunc rhoncus tincidunt eros. Nulla
                         euismod, dui id commodo viverra, pede leo
180px                    aliquam diam, non eleifend

Donec rhoncus,
purus at vehicula
                         The main block
mollis, lacus massa       accumsan non, mollis in, neque. Aliquam eu
pulvinar nunc, vel       tellus. Morbi imperdiet, eros gravida dictum
semper neque enim        suscipit, dui orci dapibus erat, et pretium dui
quis nulla. Nunc         est eget velit. Proin eget neque in ante
rhoncus tincidunt        fringilla pulvinar. Proin vel augue. Mauris
eros. Nulla euismod,     aliquam tempus nibh. Curabitur enim ante,
dui id                   laoreet ullamcorper, mollis in, dapibus quis,
                         orci. Curabitur consequat, neque eu lobortis
                         tristique, quam nibh posuere purus, in
                         egestas mi posuere purus, in egestas neque
                         ut pede. Pellentesque lacinia, elit a tincidunt
                         bibendum, nisl dolor consequat lorem, sit
                         amet lobortis elit ligula at ante.




            http://developer.yahoo.com/yui/grids/
Template 3: 300px left
Lorem ipsum dol or sit        Lorem ipsum dolor sit amet, consectetuer
amet, con sec te tuer         adipiscing elit. Quisque a urna. Maecenas
adipisc ing elit. Quisque a   lobortis lacinia nibh. In ac odio. Donec
urna. Maecenas lo bortis      rhoncus, purus at vehicula mollis, lacus
lacinia nibh.                 massa pulvinar nunc, vel semper neque
                              enim quis nulla. Nunc rhoncus tincidunt
300px                         eros. Nulla euismod, dui id commodo
                              viverra, pede leo aliquam diam, non
Donec rhoncus, purus at       eleifend
vehicula mollis, lacus
massa pulvinar nunc, vel
semper neque enim quis
                              The main block
nulla. Nunc rhoncus            accumsan non, mollis in, neque.
tincidunt eros. Nulla         Aliquam eu tellus. Morbi imperdiet, eros
euismod, dui id               gravida dictum suscipit, dui orci dapibus
                              erat, et pretium dui est eget velit. Proin
                              eget neque in ante fringilla pulvinar.
                              Proin vel augue. Curabitur consequat,
                              neque eu lobortis tristique, quam nibh
                              posuere purus, in egestas mi posuere
                              purus, in egestas neque ut pede.
                              Pellentesque lacinia, elit a tincidunt sit
                              amet lobortis elit ligula at ante.




           http://developer.yahoo.com/yui/grids/
Template 4: 180px
Lorem ipsum dolor sit amet, consectetuer                 Lorem ipsum
adipiscing elit. Quisque a urna. Maecenas lobortis       dolor sit amet,
lacinia nibh. In ac eleifend dolor pede lacinia felis.   consect etuer
llus dolor enim, consectetuer id, accumsan non,          adipiscing elit.
mollis in, neque. Aliquam eu tellus. Morbi               Quisque a urna.
imperdiet, eros gravida dictum suscipit, dui orci        Maecenas
dapibus erat, et pretium dui est eget velit. Proin       lobortis lacinia
                                                         nibh. In ac
The main block
Donec rhoncus, purus at vehicula mollis, lacus
                                                         180px
massa pulvinar nunc, vel semper neque enim quis          accumsan non,
nulla. Nunc rhoncus tincidunt eros. Nulla                mollis in, neque.
euismod, dui id commodo viverra, pede leo                Aliquam eu
aliquam diam, non eleifend dolor pede lacinia            tellus. Morbi
felis. llus dolor enim, consectetuer id, accumsan        imperdiet, eros
non, mollis in, neque. Aliquam eu tellus. Morbi          gravida dictum
imperdiet, eros gravida dictum suscipit, dui orci        suscipit, dui orci
dapibus erat, et pretium dui est eget velit. Proin       dapibus erat, et
eget neque in ante fringilla pulvinar. Proin vel         pretium dui est
augue. Mauris aliquam tempus nibh. Curabitur             eget velit. Proin
enim ante, laoreet ullamcorper, mollis in.               eget neque in
                                                         ante .




              http://developer.yahoo.com/yui/grids/
Template 5: 240px
Lorem ipsum dolor sit amet, consectetuer       Lorem ipsum dolor sit
adipiscing elit. Quisque a urna. Maecenas      amet, consect etuer
lobortis lacinia nibh. In ac eleifend dolor    adipiscing elit.
pede lacinia felis. llus dolor enim,           Quisque a urna.
consectetuer id, accumsan non, mollis in,      Maecenas lobortis
neque. Aliquam eu tellus. Morbi imperdiet,     lacinia nibh. In ac
eros gravida dictum suscipit, dui orci
dapibus erat, et pretium dui est eget velit.
Proin
                                               240px
                                               accumsan non, mollis
The main block                                 in, neque. Aliquam eu
                                               tellus. Morbi
Donec rhoncus, purus at vehicula mollis,       imperdiet, eros
lacus massa pulvinar nunc, vel semper          gravida dictum
neque enim quis nulla. Nunc rhoncus            suscipit, dui orci
tincidunt eros. Nulla euismod, dui id          dapibus erat, et
commodo viverra, pede leo aliquam diam,        pretium dui est eget
non eleifend dolor pede lacinia felis. llus    velit. Proin eget neque
dolor enim, consectetuer id, accumsan non,     in ante .
mollis in, neque. Aliquam eu tellus. Morbi
imperdiet, eros gravida dictum suscipit, dui
orci dapibus erat, et pretium dui est eget
velit. Proin eget neque in ante fringilla
pulvinar.




             http://developer.yahoo.com/yui/grids/
Template 6: 300px
Lorem ipsum dolor sit amet,                Lorem ipsum dolor sit amet,
consectetuer adipiscing elit. Quisque a    consect etuer adipiscing elit.
urna. Maecenas lobortis lacinia nibh.      Quisque a urna. Maecenas
In ac eleifend dolor pede lacinia felis.   lobortis lacinia nibh. In ac
llus dolor enim, consectetuer id,
accumsan non, mollis in, neque.
Aliquam eu tellus. Morbi imperdiet,
                                           300px
eros gravida dictum suscipit, dui orci     accumsan non, mollis in,
dapibus erat, et pretium dui est eget      neque. Aliquam eu tellus.
velit. Proin                               Morbi imperdiet, eros
                                           gravida dictum suscipit, dui
The main block                             orci dapibus erat, et pretium
                                           dui est eget velit. Proin eget
Donec rhoncus, purus at vehicula           neque in ante .
mollis, lacus massa pulvinar nunc, vel
semper neque enim quis nulla. Nunc
rhoncus tincidunt eros. Nulla euismod,
dui id commodo viverra, pede leo
aliquam diam, non eleifend dolor pede
lacinia felis. llus dolor enim,
consectetuer id, accumsan non, mollis
in, neque. Aliquam eu tellus. Morbi
imperdiet, eros gravida dictum




             http://developer.yahoo.com/yui/grids/
grids.css

      YUI Blocks
Each content column is a block.
 Two Columns = Two Blocks.




     http://developer.yahoo.com/yui/grids/
grids.css

    YUI Blocks
<div id=quot;docquot;>
 <div class=quot;yui-bquot;></div>
 <div class=quot;yui-bquot;></div>
</div>




  http://developer.yahoo.com/yui/grids/
grids.css

   YUI Blocks
Now, identify the main
       block.




  http://developer.yahoo.com/yui/grids/
grids.css

<div id=quot;docquot;>
                    YUI Blocks
 <div id=quot;yui-mainquot;>
    <div class=quot;yui-bquot;></div>
 </div>
 <div class=quot;yui-bquot;></div>
</div>




        http://developer.yahoo.com/yui/grids/
grids.css


Next up, we need to set the
  template preset class




  http://developer.yahoo.com/yui/grids/
grids.css
Set your template preset:
 <div id=quot;docquot; classquot;yui-t3quot;>
   <div id=quot;yui-mainquot;>
      <div class=quot;yui-bquot;></div>
   </div>
   <div class=quot;yui-bquot;></div>
 </div>




   http://developer.yahoo.com/yui/grids/
grids.css

   Nested Grids
Grid holder: .yui-g
Units:       .yui-u




  http://developer.yahoo.com/yui/grids/
grids.css

        Nested Grids
<div class=quot;yui-gquot;>
   <div class=quot;yui-u firstquot;></div>
   <div class=quot;yui-uquot;></div>
</div>




       http://developer.yahoo.com/yui/grids/
grids.css
    .yui-g
                   Nested Grids
                   If not otherwise specified,
  50%      50%     each unit takes up 50% the
.yui-u   .yui-u    available space.
.first             Spacing (gutter) between
                   units is added automatically.




         http://developer.yahoo.com/yui/grids/
grids.css


but hey, what about a
three column layout?



   http://developer.yahoo.com/yui/grids/
grids.css
For three columns
  .yui-gb 
 
     1/3 -- 1/3 -- 1/3
For uneven distributions
  .yui-gc
 
      2/3 -- 1/3
 .yui-gd
    
   1/3 -- 2/3
 .yui-ge
    
   3/4 -- 1/4
 .yui-gf
    
   1/4 -- 3/4




   http://developer.yahoo.com/yui/grids/
grids.css

  Uneven Columns
<div class=”yui-ge“>
 <div clas=”yui-u first”></div>
 <div clas=”yui-u”></div>
</div>




     http://developer.yahoo.com/yui/grids/
grids.css
.yui-gb



     .yui-u.first   .yui-u            .yui-u



.yui-gd


     .yui-u.first            .yui-u




          http://developer.yahoo.com/yui/grids/
grids.css
.yui-gd



     .yui-u.first            .yui-u



.yui-gb


    .yui-u.first    .yui-u            .yui-u




          http://developer.yahoo.com/yui/grids/
1/3       1/3
            1
                      1/3
      1/3       1/3
                 1
                      1/3



  http://developer.yahoo.com/yui/grids/
Progressive Enhancement
Progressive Enhancement
Progressive Enhancement
                vs
               Text
      Graceful Degradation



Progressive Enhancement
Graceful Degradation
    Develop for the latest browsers,
    then provide a Text experience
                   lesser
      for users on older browsers.




Progressive Enhancement
Progressive Enhancement
    Develop from the ground up,
    “layering” enhancements, as
                 Text
     browsers can handle them.




Progressive Enhancement
The key to PE?
    The content is the center point.
      Everything Text is layered.
                  else




Progressive Enhancement
What is jQuery?


           http://jquery.com
jQuery is one of many
  javascript libraries.




                  http://jquery.com
So what makes it so cool?
★ Lightweight Footprint   ★ Easy to Learn
★ CSS1-3 Compliant        ★ No-Conflict Mode
★ Cross Browser           ★ Lots of plugins
★ Well Documented         ★ Vibrant Community




                                   http://jquery.com
Some examples of Progressive
Enhancement in Joomla! templating
★   First & Last class on modules
★   Teaser class on first paragraph in article
★   Rounded corners
★   Inject any presentational markup
★   Tweaking the polls module
★   Add class to images based on their alignment
★   Zebra striping on tables (or anything else for that matter)




                                                http://jquery.com
Templating features
  in Joomla! 1.5



              http://joomla.org
Templating features in J! 1.5
 ★ Template Overrides
 ★ Module Chromes
 ★ Template Parameters
 ★ Remove MooTools
 ★ Built in Split Menu




                         http://joomla.org
Template Overrides
Modify the xhtml output of any module
or component without touching any of
        the core Joomla! files.




                            http://joomla.org
Template Overrides
components / com_content / views / category / tmpl


 templates / your_template / html / com_content /




                                       http://joomla.org
Module Chrome
Joomla! 1.0.x we were limited to built in use
 the built in chromes. With Joomla! 1.5, we
 are now able to customize and create our
             own module chromes.




                                 http://joomla.org
<jdoc:include type=quot;modulesquot; name=quot;leftquot; style=quot;rawquot; />


   <ul class=quot;menuquot;>
     <li><!-- various menu items --></li>
   </ul>




                                         http://joomla.org
<jdoc:include type=quot;modulesquot; name=quot;leftquot; style=quot;xhtmlquot; />

 <div class=quot;moduletable_menuquot;>
   <h3>Main Menu</h3>
   <ul class=quot;menuquot;>
     <li><!-- various menu items --></li>
   </ul>
 </div>




                                          http://joomla.org
<jdoc:include type=quot;modulesquot; name=quot;leftquot; style=quot;tablequot; />
<table cellpadding=quot;0quot; cellspacing=quot;0quot; class=quot;moduletable_menuquot;>
  <tr>
    <th valign=quot;topquot;>Main Menu</th>
  </tr>
  <tr>
    <td>
       <ul class=quot;menuquot;>
         <li><!-- various menu items --></li>
       </ul>
    </td>
  </tr>
</table>




                                              http://joomla.org
<jdoc:include type=quot;modulesquot; name=quot;leftquot; style=quot;horzquot; />
    <table cellspacing=quot;1quot; cellpadding=quot;0quot; border=quot;0quot; width=quot;100%quot;>
      <tr>
        <td valign=quot;topquot;>
           <table cellpadding=quot;0quot; cellspacing=quot;0quot; class=quot;moduletable_menuquot;>
             <tr>
               <th valign=quot;topquot;>Main Menu</th>
             </tr>
             <tr>
               <td>
                  <ul class=quot;menuquot;>
                    <li><!-- various menu items --></li>
                  </ul>
               </td>
             </tr>
           </table>
        </td>
      </tr>
    </table>




                                                               http://joomla.org
<jdoc:include type=quot;modulesquot; name=quot;leftquot; style=quot;roundedquot; />
           <div class=quot;module_menuquot;>
             <div>
               <div>
                  <div>
                    <h3>Main Menu</h3>
                    <ul class=quot;menuquot;>
                      <li><!-- various menu items --></li>
                    </ul>
                  </div>
               </div>
             </div>
           </div>




                                                http://joomla.org
<jdoc:include type=quot;modulesquot; name=quot;leftquot; style=quot;outlinequot; />

 <div class=quot;mod-previewquot;>
   <div class=quot;mod-preview-infoquot;>left[outline]</div>
   <div class=quot;mod-preview-wrapperquot;>
     <ul class=quot;menuquot;>
        <li><!-- various menu items --></li>
     </ul>
   </div>
 </div>




                                            http://joomla.org
<jdoc:include type=quot;modulesquot; name=quot;leftquot; style=quot;customquot; />

<?php
defined('_JEXEC') or die('Restricted access');
function modChrome_custom($module, &$params, &$attribs) { ?>
<div class=quot;module <?php echo $params->get('moduleclass_sfx'); ?>quot; id=quot;mod<?php
echo $module->id; ?>quot;>
    <?php if ($module->showtitle != 0) : ?>
    <?php
    if(isset($_COOKIE['mod'.$module->id])) $modhide = $_COOKIE['mod'.$module->id];
    else $modhide = 'show';
    ?>
    <h3><span><?php echo $module->title; ?></span></h3>
    <?php endif; ?>
    <div class=quot;mod-contentquot;><?php echo $module->content; ?></div>
</div>
<?php } ?>




                                                            http://joomla.org
Joomla! 1.5 & MooTools
<?php
    $user =& JFactory::getUser();
    if($user->get('guest') == 1 or $user->usertype == 'Registered') {
        $headerstuff = $this->getHeadData();
        unset($headerstuff['scripts'][$this->baseurl.'/media/system/js/mootools.js']);
        unset($headerstuff['scripts'][$this->baseurl.'/media/system/js/caption.js']);
        $this->setHeadData($headerstuff);
    }
?>




                                                              http://joomla.org
Joomla! 1.5 & MooTools
<?php
    $user =& JFactory::getUser();
    if($user->get('guest') == 1 or $user->usertype == 'Registered') {
        $headerstuff = $this->getHeadData();
        unset($headerstuff['scripts'][$this->baseurl.'/media/system/js/mootools.js']);
        unset($headerstuff['scripts'][$this->baseurl.'/media/system/js/caption.js']);
        $this->setHeadData($headerstuff);
    }
?>




                                                              http://joomla.org
Template Parameters
 Give your users an easy way to
 customize their template.




                          http://joomla.org
Template Parameters
 Get your templates index.php and templateDetails.xml talking!
<?php
$template_width      =   $this->params->get('template_width');
$template_style      =   $this->params->get('template_style');
$template_logo       =   $this->params->get('template_logo');
$template_header     =   $this->params->get('template_header');
$template_mootools   =   $this->params->get('template_mootools');
?>




                                                http://joomla.org
Template Parameters
Get your templates index.php and templateDetails.xml talking!

<params>
 <param type=quot;spacerquot; default=quot;Logo Options:quot; />
 <param name=quot;logo_typequot; type=quot;listquot; default=quot;0quot; label=quot;Logo Typequot;
description=quot;Select which width you would like your site to be.quot;>
   <option value=quot;0quot;>Linked Inline Image</option>
   <option value=quot;1quot;>Linked Plain Text</option>
   <option value=quot;2quot;>Linked H1 Text</option>
 </param>




                                                 http://joomla.org
Questions?



  http://www.flickr.com/photos/oreilly/6648470/

                        http://prothemer.com

More Related Content

Recently uploaded

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
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
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
🐬 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
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 

Recently uploaded (20)

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
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
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 

Featured

Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 

Featured (20)

Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 

Rapid Template Development Part 1

  • 1. Rapid Template Development with Joomla, YUI & jQuery Chris Rault, JoomlaJunkie.com CMSExpo, Denver Colorado - December 08 http://joomlajunkie.com http://prothemer.com http://cmsexpo.net
  • 2. What is a framework? “A framework can be defined as a set of tools, libraries, conventions & best practices, that attempt to abstract routine task intro generic modules that can be reused. The goal behind using a framework is reduce time spent on repetitive tasks, allowing the designer or developer to focus on tasks that are unique to a given project, rather than reinventing the wheel each time around.” [Framework For Designers, by Jeff Croft] http://joomlajunkie.com http://prothemer.com http://cmsexpo.net
  • 3. Types of frameworks ✤ CSS Frameworks ✤ Javascript Frameworks ✤ PHP Frameworks ✤ Content Management Frameworks ✤ Web Application Frameworks http://joomlajunkie.com http://prothemer.com http://cmsexpo.net
  • 4. Advantages of using a framework ✤ Increase Productivity ✤ Avoid common mistakes ✤ Better team workflow ✤ Optimal browser compatibility ✤ Built for growth ✤ Normalize your code base http://joomlajunkie.com http://prothemer.com http://cmsexpo.net
  • 5. Disadvantages of using a framework ✤ You need time to understand the framework ✤ Could inherit someone elseʼs bugs ✤ Reduces the need to learn ✤ Sometimes bloated source code http://joomlajunkie.com http://prothemer.com http://cmsexpo.net
  • 6. Things that can be abstracted ✤ Browser Resets ✤ Base Typography ✤ Basic Styles for Forms ✤ Generic / reusable classes ✤ Grids http://joomlajunkie.com http://prothemer.com http://cmsexpo.net
  • 7. Yahoo User Interface otherwise referred to as YUI (you-weee) http://developer.yahoo.com/yui/grids/
  • 8. What is YUI? YUI is a powerful javascript library of reusable utilities and controls that can be used to build rich interactive applications. http://developer.yahoo.com/yui/grids/
  • 9. ..but wait, thereʼs more! The YUI Library also includes several core CSS resources.. http://developer.yahoo.com/yui/grids/
  • 10. Say hello to YUI CSS! ✤ Developed by Yahoo! ✤ Authored by Nate Koechley ✤ 4kb in size(!!) ✤ BSD License http://developer.yahoo.com/yui/grids/
  • 11. The Goals of YUI CSS ✤ Provide Stability ✤ Normalize Differences ✤ Solve recurring problems ✤ Centrally manage complexity http://developer.yahoo.com/yui/grids/
  • 13. reset.css http://developer.yahoo.com/yui/grids/
  • 14. fonts.css reset.css http://developer.yahoo.com/yui/grids/
  • 15. grid.css fonts.css reset.css http://developer.yahoo.com/yui/grids/
  • 16. yui summary: ✤ Four preset page widths ✤ Six preset templates ✤ The ability to stack or nest subdivided regions.. ✤ Of one, two, three or four columns. ✤ 4kb in size ✤ Over 1000 page layout combinations http://developer.yahoo.com/yui/grids/
  • 17. page widths: 750px t 974px Page Widths 950px 100% http://developer.yahoo.com/yui/grids/
  • 22. grids.css Control the page from the root node: <body> <div></div> </body> http://developer.yahoo.com/yui/grids/
  • 23. grids.css Available ID values: 750px centered #doc 950px centered #doc2 100% fluid #doc3 974px centered #doc4 http://developer.yahoo.com/yui/grids/
  • 24. grids.css Width: 750px Centered: <body> <div id=quot;docquot;></div> </body> http://developer.yahoo.com/yui/grids/
  • 25. grids.css Width: 950px Centered: <body> <div id=quot;doc2quot;></div> </body> http://developer.yahoo.com/yui/grids/
  • 26. grids.css Width: 100% Fluid <body> <div id=quot;doc3quot;></div> </body> http://developer.yahoo.com/yui/grids/
  • 27. grids.css Width: 974px Centered: <body> <div id=quot;doc4quot;></div> </body> http://developer.yahoo.com/yui/grids/
  • 28. grids.css Elastic vs Fixed? Page widths are in EM’s, but can be easily overridden to have a fixed width. http://developer.yahoo.com/yui/grids/
  • 29. grids.css For example... #doc{ width: 750px; } http://developer.yahoo.com/yui/grids/
  • 30. grids.css What you put into the root level div is up to you.. http://developer.yahoo.com/yui/grids/
  • 31. grids.css Basic Page Structure <body> #hd <div id=quot;docquot;> <div id=quot;hdquot;></div> <div id=quot;bdquot;></div> #bd <div id=quot;ftquot;></div> </div> </body> #ft http://developer.yahoo.com/yui/grids/
  • 32. grids.css All except #doc3 are automatically centered http://developer.yahoo.com/yui/grids/
  • 33. grids.css A-Grade Browsers - Say what? http://developer.yahoo.com/yui/grids/
  • 34. grids.css Template Presets... Six presets templates that accommodate all IAB (Interactive Advertising Bureau) ad sizes. http://developer.yahoo.com/yui/grids/
  • 35. grids.css Template Presets: .yui-t1 160 on left .yui-t4 180 on right .yui-t2 180 on left .yui-t5 240 on right .yui-t3 300 on left .yui-t6 300 on right http://developer.yahoo.com/yui/grids/
  • 38. Template 1: 160px left Lorem ipsum Lorem ipsum dolor sit amet, consectetuer dol or sit amet, adipiscing elit. Quisque a urna. Maecenas lobortis con sec te tuer lacinia nibh. In ac odio. Donec rhoncus, purus at adipisc ing elit. vehicula mollis, lacus massa pulvinar nunc, vel Quisque a semper neque enim quis nulla. Nunc rhoncus urna. Maecenas tincidunt eros. Nulla euismod, dui id commodo lo bortis lacinia viverra, pede leo aliquam diam, non eleifend nibh. The main block 160px accumsan non, mollis in, neque. Aliquam eu tellus. Donec rhoncus, Morbi imperdiet, eros gravida dictum suscipit, dui purus at orci dapibus erat, et pretium dui est eget velit. vehicula mollis, Proin eget neque in ante fringilla pulvinar. Proin vel lacus massa augue. Mauris aliquam tempus nibh. Curabitur pulvinar nunc, enim ante, laoreet ullamcorper, mollis in, dapibus vel semper quis, orci. Curabitur consequat, neque eu lobortis neque enim tristique, quam nibh posuere purus, in egestas mi quis nulla. posuere purus, in egestas neque ut pede. Nunc rhoncus Pellentesque lacinia, elit a tincidunt bibendum, nisl tincidunt eros. dolor consequat lorem, sit amet lobortis elit ligula Nulla euismod, at ante. dui id http://developer.yahoo.com/yui/grids/
  • 39. Template 2: 180px left Lorem ipsum dol or Lorem ipsum dolor sit amet, consectetuer sit amet, con sec te adipiscing elit. Quisque a urna. Maecenas tuer adipisc ing elit. lobortis lacinia nibh. In ac odio. Donec Quisque a urna. rhoncus, purus at vehicula mollis, lacus Maecenas lo bortis massa pulvinar nunc, vel semper neque enim lacinia nibh. quis nulla. Nunc rhoncus tincidunt eros. Nulla euismod, dui id commodo viverra, pede leo 180px aliquam diam, non eleifend Donec rhoncus, purus at vehicula The main block mollis, lacus massa accumsan non, mollis in, neque. Aliquam eu pulvinar nunc, vel tellus. Morbi imperdiet, eros gravida dictum semper neque enim suscipit, dui orci dapibus erat, et pretium dui quis nulla. Nunc est eget velit. Proin eget neque in ante rhoncus tincidunt fringilla pulvinar. Proin vel augue. Mauris eros. Nulla euismod, aliquam tempus nibh. Curabitur enim ante, dui id laoreet ullamcorper, mollis in, dapibus quis, orci. Curabitur consequat, neque eu lobortis tristique, quam nibh posuere purus, in egestas mi posuere purus, in egestas neque ut pede. Pellentesque lacinia, elit a tincidunt bibendum, nisl dolor consequat lorem, sit amet lobortis elit ligula at ante. http://developer.yahoo.com/yui/grids/
  • 40. Template 3: 300px left Lorem ipsum dol or sit Lorem ipsum dolor sit amet, consectetuer amet, con sec te tuer adipiscing elit. Quisque a urna. Maecenas adipisc ing elit. Quisque a lobortis lacinia nibh. In ac odio. Donec urna. Maecenas lo bortis rhoncus, purus at vehicula mollis, lacus lacinia nibh. massa pulvinar nunc, vel semper neque enim quis nulla. Nunc rhoncus tincidunt 300px eros. Nulla euismod, dui id commodo viverra, pede leo aliquam diam, non Donec rhoncus, purus at eleifend vehicula mollis, lacus massa pulvinar nunc, vel semper neque enim quis The main block nulla. Nunc rhoncus accumsan non, mollis in, neque. tincidunt eros. Nulla Aliquam eu tellus. Morbi imperdiet, eros euismod, dui id gravida dictum suscipit, dui orci dapibus erat, et pretium dui est eget velit. Proin eget neque in ante fringilla pulvinar. Proin vel augue. Curabitur consequat, neque eu lobortis tristique, quam nibh posuere purus, in egestas mi posuere purus, in egestas neque ut pede. Pellentesque lacinia, elit a tincidunt sit amet lobortis elit ligula at ante. http://developer.yahoo.com/yui/grids/
  • 41. Template 4: 180px Lorem ipsum dolor sit amet, consectetuer Lorem ipsum adipiscing elit. Quisque a urna. Maecenas lobortis dolor sit amet, lacinia nibh. In ac eleifend dolor pede lacinia felis. consect etuer llus dolor enim, consectetuer id, accumsan non, adipiscing elit. mollis in, neque. Aliquam eu tellus. Morbi Quisque a urna. imperdiet, eros gravida dictum suscipit, dui orci Maecenas dapibus erat, et pretium dui est eget velit. Proin lobortis lacinia nibh. In ac The main block Donec rhoncus, purus at vehicula mollis, lacus 180px massa pulvinar nunc, vel semper neque enim quis accumsan non, nulla. Nunc rhoncus tincidunt eros. Nulla mollis in, neque. euismod, dui id commodo viverra, pede leo Aliquam eu aliquam diam, non eleifend dolor pede lacinia tellus. Morbi felis. llus dolor enim, consectetuer id, accumsan imperdiet, eros non, mollis in, neque. Aliquam eu tellus. Morbi gravida dictum imperdiet, eros gravida dictum suscipit, dui orci suscipit, dui orci dapibus erat, et pretium dui est eget velit. Proin dapibus erat, et eget neque in ante fringilla pulvinar. Proin vel pretium dui est augue. Mauris aliquam tempus nibh. Curabitur eget velit. Proin enim ante, laoreet ullamcorper, mollis in. eget neque in ante . http://developer.yahoo.com/yui/grids/
  • 42. Template 5: 240px Lorem ipsum dolor sit amet, consectetuer Lorem ipsum dolor sit adipiscing elit. Quisque a urna. Maecenas amet, consect etuer lobortis lacinia nibh. In ac eleifend dolor adipiscing elit. pede lacinia felis. llus dolor enim, Quisque a urna. consectetuer id, accumsan non, mollis in, Maecenas lobortis neque. Aliquam eu tellus. Morbi imperdiet, lacinia nibh. In ac eros gravida dictum suscipit, dui orci dapibus erat, et pretium dui est eget velit. Proin 240px accumsan non, mollis The main block in, neque. Aliquam eu tellus. Morbi Donec rhoncus, purus at vehicula mollis, imperdiet, eros lacus massa pulvinar nunc, vel semper gravida dictum neque enim quis nulla. Nunc rhoncus suscipit, dui orci tincidunt eros. Nulla euismod, dui id dapibus erat, et commodo viverra, pede leo aliquam diam, pretium dui est eget non eleifend dolor pede lacinia felis. llus velit. Proin eget neque dolor enim, consectetuer id, accumsan non, in ante . mollis in, neque. Aliquam eu tellus. Morbi imperdiet, eros gravida dictum suscipit, dui orci dapibus erat, et pretium dui est eget velit. Proin eget neque in ante fringilla pulvinar. http://developer.yahoo.com/yui/grids/
  • 43. Template 6: 300px Lorem ipsum dolor sit amet, Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque a consect etuer adipiscing elit. urna. Maecenas lobortis lacinia nibh. Quisque a urna. Maecenas In ac eleifend dolor pede lacinia felis. lobortis lacinia nibh. In ac llus dolor enim, consectetuer id, accumsan non, mollis in, neque. Aliquam eu tellus. Morbi imperdiet, 300px eros gravida dictum suscipit, dui orci accumsan non, mollis in, dapibus erat, et pretium dui est eget neque. Aliquam eu tellus. velit. Proin Morbi imperdiet, eros gravida dictum suscipit, dui The main block orci dapibus erat, et pretium dui est eget velit. Proin eget Donec rhoncus, purus at vehicula neque in ante . mollis, lacus massa pulvinar nunc, vel semper neque enim quis nulla. Nunc rhoncus tincidunt eros. Nulla euismod, dui id commodo viverra, pede leo aliquam diam, non eleifend dolor pede lacinia felis. llus dolor enim, consectetuer id, accumsan non, mollis in, neque. Aliquam eu tellus. Morbi imperdiet, eros gravida dictum http://developer.yahoo.com/yui/grids/
  • 44. grids.css YUI Blocks Each content column is a block. Two Columns = Two Blocks. http://developer.yahoo.com/yui/grids/
  • 45. grids.css YUI Blocks <div id=quot;docquot;> <div class=quot;yui-bquot;></div> <div class=quot;yui-bquot;></div> </div> http://developer.yahoo.com/yui/grids/
  • 46. grids.css YUI Blocks Now, identify the main block. http://developer.yahoo.com/yui/grids/
  • 47. grids.css <div id=quot;docquot;> YUI Blocks <div id=quot;yui-mainquot;> <div class=quot;yui-bquot;></div> </div> <div class=quot;yui-bquot;></div> </div> http://developer.yahoo.com/yui/grids/
  • 48. grids.css Next up, we need to set the template preset class http://developer.yahoo.com/yui/grids/
  • 49. grids.css Set your template preset: <div id=quot;docquot; classquot;yui-t3quot;> <div id=quot;yui-mainquot;> <div class=quot;yui-bquot;></div> </div> <div class=quot;yui-bquot;></div> </div> http://developer.yahoo.com/yui/grids/
  • 50. grids.css Nested Grids Grid holder: .yui-g Units: .yui-u http://developer.yahoo.com/yui/grids/
  • 51. grids.css Nested Grids <div class=quot;yui-gquot;> <div class=quot;yui-u firstquot;></div> <div class=quot;yui-uquot;></div> </div> http://developer.yahoo.com/yui/grids/
  • 52. grids.css .yui-g Nested Grids If not otherwise specified, 50% 50% each unit takes up 50% the .yui-u .yui-u available space. .first Spacing (gutter) between units is added automatically. http://developer.yahoo.com/yui/grids/
  • 53. grids.css but hey, what about a three column layout? http://developer.yahoo.com/yui/grids/
  • 54. grids.css For three columns .yui-gb 1/3 -- 1/3 -- 1/3 For uneven distributions .yui-gc 2/3 -- 1/3 .yui-gd 1/3 -- 2/3 .yui-ge 3/4 -- 1/4 .yui-gf 1/4 -- 3/4 http://developer.yahoo.com/yui/grids/
  • 55. grids.css Uneven Columns <div class=”yui-ge“> <div clas=”yui-u first”></div> <div clas=”yui-u”></div> </div> http://developer.yahoo.com/yui/grids/
  • 56. grids.css .yui-gb .yui-u.first .yui-u .yui-u .yui-gd .yui-u.first .yui-u http://developer.yahoo.com/yui/grids/
  • 57. grids.css .yui-gd .yui-u.first .yui-u .yui-gb .yui-u.first .yui-u .yui-u http://developer.yahoo.com/yui/grids/
  • 58. 1/3 1/3 1 1/3 1/3 1/3 1 1/3 http://developer.yahoo.com/yui/grids/
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 69. Progressive Enhancement vs Text Graceful Degradation Progressive Enhancement
  • 70. Graceful Degradation Develop for the latest browsers, then provide a Text experience lesser for users on older browsers. Progressive Enhancement
  • 71. Progressive Enhancement Develop from the ground up, “layering” enhancements, as Text browsers can handle them. Progressive Enhancement
  • 72. The key to PE? The content is the center point. Everything Text is layered. else Progressive Enhancement
  • 73. What is jQuery? http://jquery.com
  • 74. jQuery is one of many javascript libraries. http://jquery.com
  • 75. So what makes it so cool? ★ Lightweight Footprint ★ Easy to Learn ★ CSS1-3 Compliant ★ No-Conflict Mode ★ Cross Browser ★ Lots of plugins ★ Well Documented ★ Vibrant Community http://jquery.com
  • 76. Some examples of Progressive Enhancement in Joomla! templating ★ First & Last class on modules ★ Teaser class on first paragraph in article ★ Rounded corners ★ Inject any presentational markup ★ Tweaking the polls module ★ Add class to images based on their alignment ★ Zebra striping on tables (or anything else for that matter) http://jquery.com
  • 77. Templating features in Joomla! 1.5 http://joomla.org
  • 78. Templating features in J! 1.5 ★ Template Overrides ★ Module Chromes ★ Template Parameters ★ Remove MooTools ★ Built in Split Menu http://joomla.org
  • 79. Template Overrides Modify the xhtml output of any module or component without touching any of the core Joomla! files. http://joomla.org
  • 80. Template Overrides components / com_content / views / category / tmpl templates / your_template / html / com_content / http://joomla.org
  • 81. Module Chrome Joomla! 1.0.x we were limited to built in use the built in chromes. With Joomla! 1.5, we are now able to customize and create our own module chromes. http://joomla.org
  • 82. <jdoc:include type=quot;modulesquot; name=quot;leftquot; style=quot;rawquot; /> <ul class=quot;menuquot;> <li><!-- various menu items --></li> </ul> http://joomla.org
  • 83. <jdoc:include type=quot;modulesquot; name=quot;leftquot; style=quot;xhtmlquot; /> <div class=quot;moduletable_menuquot;> <h3>Main Menu</h3> <ul class=quot;menuquot;> <li><!-- various menu items --></li> </ul> </div> http://joomla.org
  • 84. <jdoc:include type=quot;modulesquot; name=quot;leftquot; style=quot;tablequot; /> <table cellpadding=quot;0quot; cellspacing=quot;0quot; class=quot;moduletable_menuquot;> <tr> <th valign=quot;topquot;>Main Menu</th> </tr> <tr> <td> <ul class=quot;menuquot;> <li><!-- various menu items --></li> </ul> </td> </tr> </table> http://joomla.org
  • 85. <jdoc:include type=quot;modulesquot; name=quot;leftquot; style=quot;horzquot; /> <table cellspacing=quot;1quot; cellpadding=quot;0quot; border=quot;0quot; width=quot;100%quot;> <tr> <td valign=quot;topquot;> <table cellpadding=quot;0quot; cellspacing=quot;0quot; class=quot;moduletable_menuquot;> <tr> <th valign=quot;topquot;>Main Menu</th> </tr> <tr> <td> <ul class=quot;menuquot;> <li><!-- various menu items --></li> </ul> </td> </tr> </table> </td> </tr> </table> http://joomla.org
  • 86. <jdoc:include type=quot;modulesquot; name=quot;leftquot; style=quot;roundedquot; /> <div class=quot;module_menuquot;> <div> <div> <div> <h3>Main Menu</h3> <ul class=quot;menuquot;> <li><!-- various menu items --></li> </ul> </div> </div> </div> </div> http://joomla.org
  • 87. <jdoc:include type=quot;modulesquot; name=quot;leftquot; style=quot;outlinequot; /> <div class=quot;mod-previewquot;> <div class=quot;mod-preview-infoquot;>left[outline]</div> <div class=quot;mod-preview-wrapperquot;> <ul class=quot;menuquot;> <li><!-- various menu items --></li> </ul> </div> </div> http://joomla.org
  • 88. <jdoc:include type=quot;modulesquot; name=quot;leftquot; style=quot;customquot; /> <?php defined('_JEXEC') or die('Restricted access'); function modChrome_custom($module, &$params, &$attribs) { ?> <div class=quot;module <?php echo $params->get('moduleclass_sfx'); ?>quot; id=quot;mod<?php echo $module->id; ?>quot;> <?php if ($module->showtitle != 0) : ?> <?php if(isset($_COOKIE['mod'.$module->id])) $modhide = $_COOKIE['mod'.$module->id]; else $modhide = 'show'; ?> <h3><span><?php echo $module->title; ?></span></h3> <?php endif; ?> <div class=quot;mod-contentquot;><?php echo $module->content; ?></div> </div> <?php } ?> http://joomla.org
  • 89. Joomla! 1.5 & MooTools <?php $user =& JFactory::getUser(); if($user->get('guest') == 1 or $user->usertype == 'Registered') { $headerstuff = $this->getHeadData(); unset($headerstuff['scripts'][$this->baseurl.'/media/system/js/mootools.js']); unset($headerstuff['scripts'][$this->baseurl.'/media/system/js/caption.js']); $this->setHeadData($headerstuff); } ?> http://joomla.org
  • 90. Joomla! 1.5 & MooTools <?php $user =& JFactory::getUser(); if($user->get('guest') == 1 or $user->usertype == 'Registered') { $headerstuff = $this->getHeadData(); unset($headerstuff['scripts'][$this->baseurl.'/media/system/js/mootools.js']); unset($headerstuff['scripts'][$this->baseurl.'/media/system/js/caption.js']); $this->setHeadData($headerstuff); } ?> http://joomla.org
  • 91. Template Parameters Give your users an easy way to customize their template. http://joomla.org
  • 92. Template Parameters Get your templates index.php and templateDetails.xml talking! <?php $template_width = $this->params->get('template_width'); $template_style = $this->params->get('template_style'); $template_logo = $this->params->get('template_logo'); $template_header = $this->params->get('template_header'); $template_mootools = $this->params->get('template_mootools'); ?> http://joomla.org
  • 93. Template Parameters Get your templates index.php and templateDetails.xml talking! <params> <param type=quot;spacerquot; default=quot;Logo Options:quot; /> <param name=quot;logo_typequot; type=quot;listquot; default=quot;0quot; label=quot;Logo Typequot; description=quot;Select which width you would like your site to be.quot;> <option value=quot;0quot;>Linked Inline Image</option> <option value=quot;1quot;>Linked Plain Text</option> <option value=quot;2quot;>Linked H1 Text</option> </param> http://joomla.org

Editor's Notes