7. PROPER HEADINGS
• H tags are possibly most important for SEOs
• One H1 per page
8. PROPER HEADINGS
• H tags are possibly most important for SEOs
• One H1 per page
• Opening page H1 should be company name
and tagline/short description.
9. PROPER HEADINGS
• H tags are possibly most important for SEOs
• One H1 per page
• Opening page H1 should be company name
and tagline/short description.
• H1 tags on all inner pages should be article
title.
10. PROPER HEADINGS
• H tags are possibly most important for SEOs
• One H1 per page
• Opening page H1 should be company name
and tagline/short description.
• H1 tags on all inner pages should be article
title.
• NEVER skip a tag! (ie. H2 to H4)
12. LOGO CODE FOR YOUR
TEMPLATE
if( JURI::current() == JURI::base() ) { ?>
<h1 id="company-logo">
<a href="<?php echo JURI::base(); ?>">
Company Name
</a>
</h1>
16. HEADINGS INSIDE OF YOUR
TEMPLATE
• In your overrides you should use the same logic:
if( JURI::current() == JURI::base() ) {
$h = 2;
} else {
$h = 1;
}
<h<?php echo $h; ?>>Title</h<?php echo $h; ?>}
17. HEADINGS INSIDE OF YOUR
TEMPLATE
• In your overrides you should use the same logic:
if( JURI::current() == JURI::base() ) {
$h = 2;
} else {
$h = 1;
}
<h<?php echo $h; ?>>Title</h<?php echo $h; ?>}
• Module titles are virtually always H2
19. IMAGES
• Use alt tags on images which you want people to
know what it is. (ie. If image wasn't there, would
the description add to the content?)
20. IMAGES
• Use alt tags on images which you want people to
know what it is. (ie. If image wasn't there, would
the description add to the content?)
• Learn how to size images properly and how to
compress them. Extra size slows down site and
can lower SEO value.
23. WHAT ABOUT HTML5?
• No SEO advantage at this time
• Personally don’t recommend it as support is
less than HTML4.
24. WHAT ABOUT HTML5?
• No SEO advantage at this time
• Personally don’t recommend it as support is
less than HTML4.
• Only use if you have a specific market that you
know has the capability to properly display it.
25. WHAT ABOUT HTML5?
• No SEO advantage at this time
• Personally don’t recommend it as support is
less than HTML4.
• Only use if you have a specific market that you
know has the capability to properly display it.
• It’s a great movement, but it’s really still the
Wild Wild West.
28. LEARN THE JOOMLA LANGUAGE
• Why should you learn the Joomla! library for
template development?
29. LEARN THE JOOMLA LANGUAGE
• Why should you learn the Joomla! library for
template development?
• Allows you to do advanced logic with your
template.
30. LEARN THE JOOMLA LANGUAGE
• Why should you learn the Joomla! library for
template development?
• Allows you to do advanced logic with your
template.
• Gives you options you never had before
41. MAKE YOUR TEMPLATE
UPGRADABLE
In templateDetails.xml the opening is:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE install PUBLIC "-//Joomla! 1.6//
DTD template 1.0//EN" "http://
www.joomla.org/xml/dtd/1.6/template-
install.dtd">
<extension version="1.7" type="template"
client="site" method=”upgrade”>
61. ADD AS MANY VARIABLES AS
POSSIBLE TO BODY TAG CLASS
62. ADD AS MANY VARIABLES AS
POSSIBLE TO BODY TAG CLASS
<?php
$body = '';
if( JRequest::getInt( 'Itemid' ) ) {
$body .= 'itemid-'.JRequest::getInt( 'Itemid' );
}
if( JRequest::getInt( 'id' ) ) {
$body .= ' id-'.JRequest::getInt( 'id' );
}
if( JRequest::getVar( 'task' ) ) {
$body .= ' task-'.JRequest::getVar( 'task' );
}
63. ADD AS MANY VARIABLES AS
POSSIBLE TO BODY TAG CLASS
64. ADD AS MANY VARIABLES AS
POSSIBLE TO BODY TAG CLASS
if( JRequest::getVar( 'view' ) ) {
$body .= ' view-'.JRequest::getVar( 'view' );
}
if( JRequest::getVar( 'layout' ) ) {
$body .= ' layout-'.JRequest::getVar( 'layout' );
}
if( JRequest::getVar( 'option' ) ) {
$body .= ' option-'.JRequest::getVar( 'option' );
}
65. ADD AS MANY VARIABLES AS
POSSIBLE TO BODY TAG CLASS
66. ADD AS MANY VARIABLES AS
POSSIBLE TO BODY TAG CLASS
$body .= ' lang-' . $this->language;
$body .= ' direction-' . $this->direction;
if( JURI::current() == JURI::base() ) {
$body .= ' frontpage’;
}
74. HOW WOULD YOU USE THE
MENU_PARENT CODE?
In the CSS you could use it to change the
sidebar color for each parent menu and inherit
into each child.
.menu_parent-1 #sidebar {
background: #ccc;
}
You can stack body classes safely:
.view-article.menu_parent-1 #sidebar
81. CREATING A NEW TEMPLATE
• Templates will not show up in Template
Manager without being installed
82. CREATING A NEW TEMPLATE
• Templates will not show up in Template
Manager without being installed
• Clicking Discover in Extension Manager
will make templates show in Templates tab
in Template Manager, but not in Styles
96. KEY POINTS FOR SPEEDING
UP YOUR TEMPLATE
• Optimize your images
97. KEY POINTS FOR SPEEDING
UP YOUR TEMPLATE
• Optimize your images
• Make sprites with your images
98. KEY POINTS FOR SPEEDING
UP YOUR TEMPLATE
• Optimize your images
• Make sprites with your images
• Combine CSS and JavaScript into one file for
each
99. KEY POINTS FOR SPEEDING
UP YOUR TEMPLATE
• Optimize your images
• Make sprites with your images
• Combine CSS and JavaScript into one file for
each
• Don't use "on the fly" compression plugins
100. KEY POINTS FOR SPEEDING
UP YOUR TEMPLATE
• Optimize your images
• Make sprites with your images
• Combine CSS and JavaScript into one file for
each
• Don't use "on the fly" compression plugins
• If you use a CSS and/or JavaScript compression
plugin then make sure it stores it somehow
instead of compressing on each load.
102. KEY POINTS FOR SPEEDING
UP YOUR TEMPLATE
• Use a CDN for your template resources
103. KEY POINTS FOR SPEEDING
UP YOUR TEMPLATE
• Use a CDN for your template resources
• If possible, remove calls in component or
modules for library’s if they are already used so
you don’t have them loading twice.
106. EXTENSIONS WE USE FOR
DEVELOPMENT
• Advanced Module Manager (www.nonumber.nl)
107. EXTENSIONS WE USE FOR
DEVELOPMENT
• Advanced Module Manager (www.nonumber.nl)
• CSS3 Automated Generator (www.corephp.com)
108. EXTENSIONS WE USE FOR
DEVELOPMENT
• Advanced Module Manager (www.nonumber.nl)
• CSS3 Automated Generator (www.corephp.com)
• JCE (www.joomlacontenteditor.net/)
109. EXTENSIONS WE USE FOR
DEVELOPMENT
• Advanced Module Manager (www.nonumber.nl)
• CSS3 Automated Generator (www.corephp.com)
• JCE (www.joomlacontenteditor.net/)
• Mass Content (www.baticore.com)
128. MASS CONTENT
Mass Content allows you to enter several
articles, categories, tags, etc. at once, including
assigning to menu item.
129.
130. Q&A
“If we would have new
knowledge, we must get a
whole world of new
questions.”
- Susanne K. Langer
Notas del editor
\n
\n
Style is the LAST thing you should think about when choosing tags. Base it on semantics.\n
Style is the LAST thing you should think about when choosing tags. Base it on semantics.\nIf you want to style according to H tags then make classes called .H1, .H2, etc.\n
Style is the LAST thing you should think about when choosing tags. Base it on semantics.\nIf you want to style according to H tags then make classes called .H1, .H2, etc.\n
Style is the LAST thing you should think about when choosing tags. Base it on semantics.\nIf you want to style according to H tags then make classes called .H1, .H2, etc.\n
Style is the LAST thing you should think about when choosing tags. Base it on semantics.\nIf you want to style according to H tags then make classes called .H1, .H2, etc.\n
Style is the LAST thing you should think about when choosing tags. Base it on semantics.\nIf you want to style according to H tags then make classes called .H1, .H2, etc.\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Example: change module positions according to category, section or even inherit through to all child items in a menu.\n
Example: change module positions according to category, section or even inherit through to all child items in a menu.\n
Example: change module positions according to category, section or even inherit through to all child items in a menu.\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Here we are grabbing info from the menu to determine the parent item and inheriting through to all children. This was originally created for a library site that wanted unique colors for each menu area.\n
Here we are grabbing info from the menu to determine the parent item and inheriting through to all children. This was originally created for a library site that wanted unique colors for each menu area.\n