SlideShare a Scribd company logo
1 of 39
Download to read offline
Learning Joomla! 
in a weekend 
Rules and Tricks for 
programmers 
Applies to Joomla! CMS versions 2.5 and 3.x 
Document version 1.1. 
Updated: 28th September 2014 
Created by Valentin Despa
This is for you if ... 
- are new to Joomla!. 
- need to quickly develop an extension in Joomla 
- do not have much time to get started. 
- already have a decent experience in PHP. 
- you know how to install a web server / database on your 
development machine. 
- OOP and MVC mean something for you.
What this is NOT ... 
- a step by step guide on how to create extensions 
- a tutorial for installing Joomla 
- so relevant if you are building just a template 
- a programming tutorial as you will not find a single line of 
code inside 
- a hand-on guide but more like bla bla about the topic
Hello World! 
My name is Valentin Despa. I am a PHP developer and I 
have been using Joomla starting with version 1.5. Since 
2013 I am also member in the Joomla! Bug Squad (JBS). 
You can find me on Joomla! StackExchange answering 
programming questions or on the issue tracker and github 
testing and fixing bugs. 
I am writing this because I wanted to share with you my 
experience of learning Joomla!
Let us be realistic 
I totally understand your desire to learn quickly and finish 
whatever task you are on right now on time. 
Maybe you do not even care very much about learning 
Joomla. You just want to get something to work. That is 
fine. 
Extension development does take some time and 
experience, so probably few will learn Joomla from zero in 
a weekend and deploy an extension by Monday.
CONTENTS 
1. Introduction in Joomla 
2. 5 Rules to Keep you on Track 
3. 5 Tips to Make your Life easier 
4. Getting started (aka. And now what?) 
5. Resources (Books, Videos)
1. Introduction in Jooma! 
A few words about Joomla! 
● Joomla! is an open source CMS, created and 
maintained by volunteers and many developers use it 
as platform for developing extensions, which extend 
Joomla! beyond the basic functionality of a CMS. 
● In runs in PHP 5.3+ and can use one of the supported 
database engines: MySQL / MariaDB, MSSQL and 
PostgreSQL.
1. Introduction in Jooma! 
Note about Joomla! versions 
At the time of this writing, Joomla 3.3 is the latest version. Next 
versions which are largely compatible with one another. Always keep 
your installation updated! 
On the Internet, you will also find documentation for Joomla 2.5 or 1.7 
and 1.6. which still can be relevant. If you find any examples / 
documentation for Joomla 1.5 it will probably be too outdated, so better 
ignore it. 
Also Joomla! Framework is a standalone PHP framework, has little to 
do with the CMS, so don’t refer to it, as you probably don’t need it.
Installing Joomla! 
Go to www.joomla.org. If you have no idea what you need, 
download Joomla 3, it’s the best for your needs probably. 
For the development installation, to see as much as the 
features enabled, install the sample data for testing. 
Ideally you would want to use two installations of Joomla! 
on your development system: 
- one to include in your IDE 
- one for test-installing your extension
What the heck?? 
While researching, you will find a lot of different ways of developing in 
Joomla. Let’s break it down: 
- Legacy MVC - This is the current wide adopted method. Don’t let 
the word legacy scare you. Most of the core components rely on it. 
Also a lot of 3rd party extensions. This is where you should start! 
- New MVC - a new design introduced in Joomla but with little 
adoption. I would stay away from it, at least now. 
- Joomla! Framework - this is a standalone framework like Zend, 
Symfony etc. This is NOT what you need in the Joomla CMS. 
- FOF (Framework on Framework) is a Rapid Application 
Development framework. You may want to look into it later.
5 
Rules to Keep you on Track
Rule 1 
Understanding the architecture your 
extension needs.
A piece of advice 
Don’t focus on what you need to do, focus on learning 
and understanding how things work. 
What I mean by this is you shouldn’t start building your extension 
yet. Understand how Joomla! and other extensions work first. 
You will probably find lots of tutorials explaining how to do 
something, but few will explain why you do something like this. The 
reality is that you will need to find the answer yourself by 
understanding the code that you write.
Joomla! architecture 
Joomla! in build on top of the Joomla! Platform or informally called 
Joomla! API (which later evolved as a standalone PHP framework 
under the name Joomla! Framework). 
The nice thing about Joomla! is that it uses components, templates, 
modules and plugins to display everything that you see. So go ahead 
and check the source code of different core extensions and learn from 
them.
Your extension architecture 
Most of the time you will want to build a component as this is a basic 
building block which can provide a lot of functionality. This is the case 
especially if you are listing items from a database, you want to edit them etc. 
However it’s important to understand what you want to do and what extension 
type you need. Best is to do a search first, you are not the first one building 
something. 
Quite often just an extension type is not enough, so you will use a combination 
of them. You will notice that some extension providers choose to deliver their 
extension as a package (inside it could be components, modules, plugins - 
there is actually no restriction).
Rule 2 
Setup a proper development 
environment
Choosing the right IDE 
Please don’t use Notepad++ or something similar for 
development. It just does not work. I really mean it! 
Good open-source & free solutions are Eclipse Standard 
(with PDT) and Netbeans. 
Commercial, but absolutely worth the money is PhpStorm. 
Read more about Setting up your workstation for Joomla! development.
Configuring your debugger 
The most important feature you need to have in your IDE up 
and running is the Debugger. 
In Eclipse / Netbeans it’s a bit tricky to configure, but there are 
plenty of tutorials out there. Take your time and do it right. 
When something does not work right, go with the debugger 
through Joomla!. You will learn a lot. 
Don’t skip this part! Do it now! It will get back at you later. I promise.
Rule 3 
Keep it simple
You are NOT the first one! 
Even if it seems that what you need to do is sort of the never 
done before, it is very unlikely to be like that. 
Try to break your project into smaller pieces. Solve one issue 
at a time. If you understand your extension, you will be able to 
find similar functionality and fill the gaps yourself. 
Start small and evolve.
Rule 4 
Look into extensions that have a similar 
functionality
Inspecting the Joomla core 
There are some basic core components 
which are worth inspection: Banners 
(com_banners) and , especially the backend 
part. 
Understand the code, go with the debugger, 
modify.
Don’t be afraid to look inside 
Most of the time you will be extending base 
classes to achieve a certain functionality. 
Go checkout this classes you extend. There 
are all under /libraries/joomla or 
/libraries/legacy.
Rule 5 
Knowing what to Search for
How can I build a plugin??? Help 
THIS IS IMPORTANT! Actually in Joomla! a plugin (in the 
general sense) is generally called “EXTENSION”. 
There are many types of extensions, and it IMPORTANT to 
understand the distinction between them, especially 
when asking questions on user forums or searching for 
documentation. 
Read more about Extension types in Joomla!
5 
Tips to Make your Life easier
Tip 1 
Using the Component Creator
Component Creator 
The Component Creator for Joomla *, is a 
commercial online tool for generating the main files 
and structure. It also offers a free tier, which is just 
enough to get you started. 
It will save you hours of work and get you on the 
right track sooner. 
* I am not affiliated with this product / company. This is not a referral link or similar.
Tip 2 
Ask the experts
Know how to Ask 
There are a lot of online communities out 
there eager to answer your questions. But 
you need to know how to ask.
A few tips 
● Invest some time to research. There is a good chance somebody 
else had the same issue in the past. 
● Make the question as clear as possible. A lot of questions are 
too vague and are really hard to answer. 
● Make the question making it as short as possible. Nobody 
wants to read the whole history of your extension. Strip out 
everything that is not relevant. 
● Share a minimum code / sample where something is not working. 
Don’t throw tons of lines of code that nobody reads. 
● If you hear things like This is not a good idea, I would not do it like 
that this means: YOU ARE ON A WRONG TRACK.
Tip 3, 4, 5 ... 
Not finished yet :(
And now what? 
aka. 
Getting started
Your first extension! 
A starting point is the tutorial Developing a 
MVC Component. While not very advanced, 
it walks you through the basic things in 
Joomla. 
More developer resources are available under the 
Developer portal.
And now what? 
Actually there is no path on learning Joomla. Sorry 
to disappoint you. Each has different needs and 
knowledge. 
The only clear path is by experimenting, reading, 
coding... 
Find a book that has good reviews, follow some 
tutorials.
Resources
Resources: Books 
Joomla! Programming Book by Mark Dexter and Louis Landry - written for Joomla 2.5 but still relevant 
for Joomla 3, it’s an almost 600 pages book. It focuses on explaining how Joomla works. Highly 
recommended but it needs more than a weekend to read.
Resources: Video 
This is a list of resources I’ve personally tested and found 
valuable: 
● Learn the Art of Joomla with Andrew Eddie - around two hours of learning material for Joomla 
1.6 and 1.7, mostly still relevant today. Worth seeing. (free) 
● Joomla! 1.7: Programming and Packaging Extensions with Joseph LeBlanc (commercial)
Thanks for reading this! 
I wish you a good luck in learning Joomla! 
I would love to get some feedback from 
you regarding your Joomla learning 
experience and this presentation. 
Write me on Twitter @vdespa

More Related Content

What's hot

Phone 81 development_for_absolute_beginners
Phone 81 development_for_absolute_beginnersPhone 81 development_for_absolute_beginners
Phone 81 development_for_absolute_beginnersJose Luis Fernandez
 
#LSCon 2015: 10 quick learning hacks that started my session
#LSCon 2015: 10 quick learning hacks that started my session#LSCon 2015: 10 quick learning hacks that started my session
#LSCon 2015: 10 quick learning hacks that started my sessionglowman71
 
Point Out - a Twitter Client For Powerpoint
Point Out - a Twitter Client For Powerpoint Point Out - a Twitter Client For Powerpoint
Point Out - a Twitter Client For Powerpoint korffr
 
I Want 2 Do Project Tell Me Wat 2 Do
I Want 2 Do Project Tell Me Wat 2 DoI Want 2 Do Project Tell Me Wat 2 Do
I Want 2 Do Project Tell Me Wat 2 DoFelipe Cerda
 
Keynote- We're going wrong: Choosing the web's future. Peter Paul Koch
Keynote- We're going wrong: Choosing the web's future. Peter Paul KochKeynote- We're going wrong: Choosing the web's future. Peter Paul Koch
Keynote- We're going wrong: Choosing the web's future. Peter Paul KochFuture Insights
 
The Drupal 7 Worst Practices Catalogue
The Drupal 7 Worst Practices CatalogueThe Drupal 7 Worst Practices Catalogue
The Drupal 7 Worst Practices CatalogueAlexandre Israël
 
Delivering Successful Online Presentations
Delivering Successful Online PresentationsDelivering Successful Online Presentations
Delivering Successful Online Presentationssharynrjk
 
Evaluation6- technologies
Evaluation6- technologiesEvaluation6- technologies
Evaluation6- technologiesasheigh johnson
 
Video Captions and Transcripts Made Easy, or at least easier
Video Captions and Transcripts Made Easy, or at least easierVideo Captions and Transcripts Made Easy, or at least easier
Video Captions and Transcripts Made Easy, or at least easierD2L Barry
 
schedule_SPRING_dm77
schedule_SPRING_dm77schedule_SPRING_dm77
schedule_SPRING_dm77tutorialsruby
 
10 Bright Ideas to make your Brightspace Courses More Accessible to Students ...
10 Bright Ideas to make your Brightspace Courses More Accessible to Students ...10 Bright Ideas to make your Brightspace Courses More Accessible to Students ...
10 Bright Ideas to make your Brightspace Courses More Accessible to Students ...D2L Barry
 
Media Studies - Technology used
Media Studies - Technology usedMedia Studies - Technology used
Media Studies - Technology usedThomas Hesselberg
 
Learn, Code, and Teach Model
Learn, Code, and Teach ModelLearn, Code, and Teach Model
Learn, Code, and Teach ModelYahmis Yahaya
 
From classroom to Sakai
From classroom to Sakai From classroom to Sakai
From classroom to Sakai christian bond
 

What's hot (20)

Phone 81 development_for_absolute_beginners
Phone 81 development_for_absolute_beginnersPhone 81 development_for_absolute_beginners
Phone 81 development_for_absolute_beginners
 
#LSCon 2015: 10 quick learning hacks that started my session
#LSCon 2015: 10 quick learning hacks that started my session#LSCon 2015: 10 quick learning hacks that started my session
#LSCon 2015: 10 quick learning hacks that started my session
 
Dopp xhtml tutorial
Dopp xhtml tutorialDopp xhtml tutorial
Dopp xhtml tutorial
 
Meet Windows PowerShell
Meet Windows PowerShellMeet Windows PowerShell
Meet Windows PowerShell
 
Test ss 2
Test ss 2Test ss 2
Test ss 2
 
Point Out - a Twitter Client For Powerpoint
Point Out - a Twitter Client For Powerpoint Point Out - a Twitter Client For Powerpoint
Point Out - a Twitter Client For Powerpoint
 
I Want 2 Do Project Tell Me Wat 2 Do
I Want 2 Do Project Tell Me Wat 2 DoI Want 2 Do Project Tell Me Wat 2 Do
I Want 2 Do Project Tell Me Wat 2 Do
 
Keynote- We're going wrong: Choosing the web's future. Peter Paul Koch
Keynote- We're going wrong: Choosing the web's future. Peter Paul KochKeynote- We're going wrong: Choosing the web's future. Peter Paul Koch
Keynote- We're going wrong: Choosing the web's future. Peter Paul Koch
 
The Drupal 7 Worst Practices Catalogue
The Drupal 7 Worst Practices CatalogueThe Drupal 7 Worst Practices Catalogue
The Drupal 7 Worst Practices Catalogue
 
Delivering Successful Online Presentations
Delivering Successful Online PresentationsDelivering Successful Online Presentations
Delivering Successful Online Presentations
 
eval 6 feedback
eval 6 feedbackeval 6 feedback
eval 6 feedback
 
Evaluation6- technologies
Evaluation6- technologiesEvaluation6- technologies
Evaluation6- technologies
 
E6 improved
E6 improvedE6 improved
E6 improved
 
Video Captions and Transcripts Made Easy, or at least easier
Video Captions and Transcripts Made Easy, or at least easierVideo Captions and Transcripts Made Easy, or at least easier
Video Captions and Transcripts Made Easy, or at least easier
 
schedule_SPRING_dm77
schedule_SPRING_dm77schedule_SPRING_dm77
schedule_SPRING_dm77
 
10 Bright Ideas to make your Brightspace Courses More Accessible to Students ...
10 Bright Ideas to make your Brightspace Courses More Accessible to Students ...10 Bright Ideas to make your Brightspace Courses More Accessible to Students ...
10 Bright Ideas to make your Brightspace Courses More Accessible to Students ...
 
Media Studies - Technology used
Media Studies - Technology usedMedia Studies - Technology used
Media Studies - Technology used
 
Extended slow parts
Extended slow partsExtended slow parts
Extended slow parts
 
Learn, Code, and Teach Model
Learn, Code, and Teach ModelLearn, Code, and Teach Model
Learn, Code, and Teach Model
 
From classroom to Sakai
From classroom to Sakai From classroom to Sakai
From classroom to Sakai
 

Similar to Learning Joomla! in a weekend (for developers)

Developing Joomla! 1.5 Extensions, Explained
Developing Joomla! 1.5 Extensions, ExplainedDeveloping Joomla! 1.5 Extensions, Explained
Developing Joomla! 1.5 Extensions, ExplainedMitch Pirtle
 
Getting Started with the Joomla! Framework
Getting Started with the Joomla! FrameworkGetting Started with the Joomla! Framework
Getting Started with the Joomla! FrameworkMichael Babker
 
Recipe of a rockstar developer
Recipe of a rockstar developerRecipe of a rockstar developer
Recipe of a rockstar developerTopu Newaj
 
10 tips to save you time and frustration while programming
10 tips to save you time and frustration while programming10 tips to save you time and frustration while programming
10 tips to save you time and frustration while programmingHugo Shi
 
Joomla Seo Presentation
Joomla Seo PresentationJoomla Seo Presentation
Joomla Seo Presentationalledia
 
Joomla Tutorial: Joomla 2.5 a first look
Joomla Tutorial: Joomla 2.5 a first lookJoomla Tutorial: Joomla 2.5 a first look
Joomla Tutorial: Joomla 2.5 a first lookTim Plummer
 
Joomla2 5-afirstlook-120214054019-phpapp01
Joomla2 5-afirstlook-120214054019-phpapp01Joomla2 5-afirstlook-120214054019-phpapp01
Joomla2 5-afirstlook-120214054019-phpapp01Deepak Sangramsingh
 
Surviving the technical interview
Surviving the technical interviewSurviving the technical interview
Surviving the technical interviewEric Brooke
 
Joomla CMS SEMINAR PPT
Joomla CMS SEMINAR PPTJoomla CMS SEMINAR PPT
Joomla CMS SEMINAR PPTPinky Mondal
 
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Molieremfrancis
 
Troubleshooting mule
Troubleshooting muleTroubleshooting mule
Troubleshooting muleSon Nguyen
 
Debugging WordPress for Site Owners
Debugging WordPress for Site OwnersDebugging WordPress for Site Owners
Debugging WordPress for Site OwnersAndrew Wikel
 
WordCamp Atlanta Presentation
WordCamp Atlanta PresentationWordCamp Atlanta Presentation
WordCamp Atlanta PresentationThomas Griffin
 
On Selecting JavaScript Frameworks (Women Who Code 10/15)
On Selecting JavaScript Frameworks (Women Who Code 10/15)On Selecting JavaScript Frameworks (Women Who Code 10/15)
On Selecting JavaScript Frameworks (Women Who Code 10/15)Zoe Landon
 
How to become a software developer
How to become a software developerHow to become a software developer
How to become a software developerEyob Lube
 

Similar to Learning Joomla! in a weekend (for developers) (20)

Developing Joomla! 1.5 Extensions, Explained
Developing Joomla! 1.5 Extensions, ExplainedDeveloping Joomla! 1.5 Extensions, Explained
Developing Joomla! 1.5 Extensions, Explained
 
Getting Started with the Joomla! Framework
Getting Started with the Joomla! FrameworkGetting Started with the Joomla! Framework
Getting Started with the Joomla! Framework
 
Joomlaplatform en
Joomlaplatform enJoomlaplatform en
Joomlaplatform en
 
Recipe of a rockstar developer
Recipe of a rockstar developerRecipe of a rockstar developer
Recipe of a rockstar developer
 
10 tips to save you time and frustration while programming
10 tips to save you time and frustration while programming10 tips to save you time and frustration while programming
10 tips to save you time and frustration while programming
 
Joomla Seo Presentation
Joomla Seo PresentationJoomla Seo Presentation
Joomla Seo Presentation
 
Joomla Tutorial: Joomla 2.5 a first look
Joomla Tutorial: Joomla 2.5 a first lookJoomla Tutorial: Joomla 2.5 a first look
Joomla Tutorial: Joomla 2.5 a first look
 
Joomla2 5-afirstlook-120214054019-phpapp01
Joomla2 5-afirstlook-120214054019-phpapp01Joomla2 5-afirstlook-120214054019-phpapp01
Joomla2 5-afirstlook-120214054019-phpapp01
 
Wordpress vs joomla
Wordpress vs joomlaWordpress vs joomla
Wordpress vs joomla
 
Surviving the technical interview
Surviving the technical interviewSurviving the technical interview
Surviving the technical interview
 
Joomla tempates talk
Joomla tempates talkJoomla tempates talk
Joomla tempates talk
 
Joomla CMS SEMINAR PPT
Joomla CMS SEMINAR PPTJoomla CMS SEMINAR PPT
Joomla CMS SEMINAR PPT
 
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
 
Joomla Tutorial
Joomla TutorialJoomla Tutorial
Joomla Tutorial
 
Troubleshooting mule
Troubleshooting muleTroubleshooting mule
Troubleshooting mule
 
Debugging WordPress for Site Owners
Debugging WordPress for Site OwnersDebugging WordPress for Site Owners
Debugging WordPress for Site Owners
 
WordCamp Atlanta Presentation
WordCamp Atlanta PresentationWordCamp Atlanta Presentation
WordCamp Atlanta Presentation
 
On Selecting JavaScript Frameworks (Women Who Code 10/15)
On Selecting JavaScript Frameworks (Women Who Code 10/15)On Selecting JavaScript Frameworks (Women Who Code 10/15)
On Selecting JavaScript Frameworks (Women Who Code 10/15)
 
How to become a software developer
How to become a software developerHow to become a software developer
How to become a software developer
 
FAQ's in Joomla 2.5
FAQ's in Joomla 2.5FAQ's in Joomla 2.5
FAQ's in Joomla 2.5
 

Recently uploaded

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
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
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
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
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 

Recently uploaded (20)

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
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...
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
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
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 

Learning Joomla! in a weekend (for developers)

  • 1. Learning Joomla! in a weekend Rules and Tricks for programmers Applies to Joomla! CMS versions 2.5 and 3.x Document version 1.1. Updated: 28th September 2014 Created by Valentin Despa
  • 2. This is for you if ... - are new to Joomla!. - need to quickly develop an extension in Joomla - do not have much time to get started. - already have a decent experience in PHP. - you know how to install a web server / database on your development machine. - OOP and MVC mean something for you.
  • 3. What this is NOT ... - a step by step guide on how to create extensions - a tutorial for installing Joomla - so relevant if you are building just a template - a programming tutorial as you will not find a single line of code inside - a hand-on guide but more like bla bla about the topic
  • 4. Hello World! My name is Valentin Despa. I am a PHP developer and I have been using Joomla starting with version 1.5. Since 2013 I am also member in the Joomla! Bug Squad (JBS). You can find me on Joomla! StackExchange answering programming questions or on the issue tracker and github testing and fixing bugs. I am writing this because I wanted to share with you my experience of learning Joomla!
  • 5. Let us be realistic I totally understand your desire to learn quickly and finish whatever task you are on right now on time. Maybe you do not even care very much about learning Joomla. You just want to get something to work. That is fine. Extension development does take some time and experience, so probably few will learn Joomla from zero in a weekend and deploy an extension by Monday.
  • 6. CONTENTS 1. Introduction in Joomla 2. 5 Rules to Keep you on Track 3. 5 Tips to Make your Life easier 4. Getting started (aka. And now what?) 5. Resources (Books, Videos)
  • 7. 1. Introduction in Jooma! A few words about Joomla! ● Joomla! is an open source CMS, created and maintained by volunteers and many developers use it as platform for developing extensions, which extend Joomla! beyond the basic functionality of a CMS. ● In runs in PHP 5.3+ and can use one of the supported database engines: MySQL / MariaDB, MSSQL and PostgreSQL.
  • 8. 1. Introduction in Jooma! Note about Joomla! versions At the time of this writing, Joomla 3.3 is the latest version. Next versions which are largely compatible with one another. Always keep your installation updated! On the Internet, you will also find documentation for Joomla 2.5 or 1.7 and 1.6. which still can be relevant. If you find any examples / documentation for Joomla 1.5 it will probably be too outdated, so better ignore it. Also Joomla! Framework is a standalone PHP framework, has little to do with the CMS, so don’t refer to it, as you probably don’t need it.
  • 9. Installing Joomla! Go to www.joomla.org. If you have no idea what you need, download Joomla 3, it’s the best for your needs probably. For the development installation, to see as much as the features enabled, install the sample data for testing. Ideally you would want to use two installations of Joomla! on your development system: - one to include in your IDE - one for test-installing your extension
  • 10. What the heck?? While researching, you will find a lot of different ways of developing in Joomla. Let’s break it down: - Legacy MVC - This is the current wide adopted method. Don’t let the word legacy scare you. Most of the core components rely on it. Also a lot of 3rd party extensions. This is where you should start! - New MVC - a new design introduced in Joomla but with little adoption. I would stay away from it, at least now. - Joomla! Framework - this is a standalone framework like Zend, Symfony etc. This is NOT what you need in the Joomla CMS. - FOF (Framework on Framework) is a Rapid Application Development framework. You may want to look into it later.
  • 11. 5 Rules to Keep you on Track
  • 12. Rule 1 Understanding the architecture your extension needs.
  • 13. A piece of advice Don’t focus on what you need to do, focus on learning and understanding how things work. What I mean by this is you shouldn’t start building your extension yet. Understand how Joomla! and other extensions work first. You will probably find lots of tutorials explaining how to do something, but few will explain why you do something like this. The reality is that you will need to find the answer yourself by understanding the code that you write.
  • 14. Joomla! architecture Joomla! in build on top of the Joomla! Platform or informally called Joomla! API (which later evolved as a standalone PHP framework under the name Joomla! Framework). The nice thing about Joomla! is that it uses components, templates, modules and plugins to display everything that you see. So go ahead and check the source code of different core extensions and learn from them.
  • 15. Your extension architecture Most of the time you will want to build a component as this is a basic building block which can provide a lot of functionality. This is the case especially if you are listing items from a database, you want to edit them etc. However it’s important to understand what you want to do and what extension type you need. Best is to do a search first, you are not the first one building something. Quite often just an extension type is not enough, so you will use a combination of them. You will notice that some extension providers choose to deliver their extension as a package (inside it could be components, modules, plugins - there is actually no restriction).
  • 16. Rule 2 Setup a proper development environment
  • 17. Choosing the right IDE Please don’t use Notepad++ or something similar for development. It just does not work. I really mean it! Good open-source & free solutions are Eclipse Standard (with PDT) and Netbeans. Commercial, but absolutely worth the money is PhpStorm. Read more about Setting up your workstation for Joomla! development.
  • 18. Configuring your debugger The most important feature you need to have in your IDE up and running is the Debugger. In Eclipse / Netbeans it’s a bit tricky to configure, but there are plenty of tutorials out there. Take your time and do it right. When something does not work right, go with the debugger through Joomla!. You will learn a lot. Don’t skip this part! Do it now! It will get back at you later. I promise.
  • 19. Rule 3 Keep it simple
  • 20. You are NOT the first one! Even if it seems that what you need to do is sort of the never done before, it is very unlikely to be like that. Try to break your project into smaller pieces. Solve one issue at a time. If you understand your extension, you will be able to find similar functionality and fill the gaps yourself. Start small and evolve.
  • 21. Rule 4 Look into extensions that have a similar functionality
  • 22. Inspecting the Joomla core There are some basic core components which are worth inspection: Banners (com_banners) and , especially the backend part. Understand the code, go with the debugger, modify.
  • 23. Don’t be afraid to look inside Most of the time you will be extending base classes to achieve a certain functionality. Go checkout this classes you extend. There are all under /libraries/joomla or /libraries/legacy.
  • 24. Rule 5 Knowing what to Search for
  • 25. How can I build a plugin??? Help THIS IS IMPORTANT! Actually in Joomla! a plugin (in the general sense) is generally called “EXTENSION”. There are many types of extensions, and it IMPORTANT to understand the distinction between them, especially when asking questions on user forums or searching for documentation. Read more about Extension types in Joomla!
  • 26. 5 Tips to Make your Life easier
  • 27. Tip 1 Using the Component Creator
  • 28. Component Creator The Component Creator for Joomla *, is a commercial online tool for generating the main files and structure. It also offers a free tier, which is just enough to get you started. It will save you hours of work and get you on the right track sooner. * I am not affiliated with this product / company. This is not a referral link or similar.
  • 29. Tip 2 Ask the experts
  • 30. Know how to Ask There are a lot of online communities out there eager to answer your questions. But you need to know how to ask.
  • 31. A few tips ● Invest some time to research. There is a good chance somebody else had the same issue in the past. ● Make the question as clear as possible. A lot of questions are too vague and are really hard to answer. ● Make the question making it as short as possible. Nobody wants to read the whole history of your extension. Strip out everything that is not relevant. ● Share a minimum code / sample where something is not working. Don’t throw tons of lines of code that nobody reads. ● If you hear things like This is not a good idea, I would not do it like that this means: YOU ARE ON A WRONG TRACK.
  • 32. Tip 3, 4, 5 ... Not finished yet :(
  • 33. And now what? aka. Getting started
  • 34. Your first extension! A starting point is the tutorial Developing a MVC Component. While not very advanced, it walks you through the basic things in Joomla. More developer resources are available under the Developer portal.
  • 35. And now what? Actually there is no path on learning Joomla. Sorry to disappoint you. Each has different needs and knowledge. The only clear path is by experimenting, reading, coding... Find a book that has good reviews, follow some tutorials.
  • 37. Resources: Books Joomla! Programming Book by Mark Dexter and Louis Landry - written for Joomla 2.5 but still relevant for Joomla 3, it’s an almost 600 pages book. It focuses on explaining how Joomla works. Highly recommended but it needs more than a weekend to read.
  • 38. Resources: Video This is a list of resources I’ve personally tested and found valuable: ● Learn the Art of Joomla with Andrew Eddie - around two hours of learning material for Joomla 1.6 and 1.7, mostly still relevant today. Worth seeing. (free) ● Joomla! 1.7: Programming and Packaging Extensions with Joseph LeBlanc (commercial)
  • 39. Thanks for reading this! I wish you a good luck in learning Joomla! I would love to get some feedback from you regarding your Joomla learning experience and this presentation. Write me on Twitter @vdespa