SlideShare a Scribd company logo
1 of 54
Download to read offline
Extend Joomla Forms 
Using Plugins 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
My name is Jisse Reitsma 
Developer 
Owner of Yireo 
Joomla! & Magento 
Extensions & services 
Tutorials & blogs 
Sponsoring JWC2014 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Plugins I wrote 
Language Domains 
Auto Login IP 
Demo Site 
Fancybox 
HTTP Authenticatie 
New Relic 
Piwik 
WebP 
ScriptMerge 
SEF Test 
SSL Redirection 
Static Content 
Trademark 
32+ MageBridge plugins 
10+ SimpleLists plugins 
8+ Dynamic404 plugins 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Book release in November 2014 
English 
368 pages 
Available through: 
Yireo Shop (Europe) 
Amazon (US & world wide) 
#deadtreeformat (no ebook) 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Extend Joomla Forms Using Plugins 
Part I - Events & JForm 
Part II - Code 
Part III - Braindump 
Presentation online: http://slideshare.net/yireo 
Tweets: @yireo / @jissereitsma 
Code: github.com/yireo/JoomlaPluginsBook 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Part I: 
Events & JForm 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Extensions 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 
Component 
Modules 
Plugins 
Libraries 
Language files
Plugin groups 
Authentication 
Content 
System 
User 
Editors 
Editor Buttons 
Search 
Finder 
CAPTCHA 
Extension 
Quick Icon 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Content events 
onContentPrepareForm 
onContentAfterSave 
onContentAfterDelete 
onContentBeforeDisplay 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
JForm 
Joomla core library for handling forms 
XML form definition + PHP logic 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 
Tasks 
Form generation (HTML) 
Validation 
Filtering
MVC 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 
Model 
View 
Controller
MVC workflow (simple) 
User requests page 
Controller calls view 
View fetches data from model 
View shows page 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
MVC workflow (form) 
User requests form 
Controller calls view 
View shows form 
User submits form (POST) 
Controller picks up on POST 
Controller validates & filters form 
Model stores form data 
Controller redirects back to form or other page 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
MVC workflow (form) 
User requests form 
Controller calls view 
View shows form (JForm) 
User submits form (POST) 
Controller picks up on POST 
Controller validates & filters form (JForm) 
Model stores form data 
Controller redirects back to form or other page 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Part II: 
Code 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Content events 
onContentPrepareForm 
onContentAfterSave 
onContentAfterDelete 
onContentBeforeDisplay 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Goal 
Add a custom field to backends article form 
Store that fields value in a separate database table 
Show that fields value in the same form again 
Show that fields value in the frontend 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Goal 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Goal 
Add a custom field to backends article form 
Store that fields value in a separate database table 
Show that fields value in the same form again 
Show that fields value in the frontend 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Goal 
Add a custom field to backends article form 
onContentPrepareForm 
Store that fields value in a separate database table 
onContentAfterSave 
Show that fields value in the same form again 
onContentPrepareForm 
Show that fields value in the frontend 
onContentBeforeDisplay 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Content Plugin files 
plugins/content/example/example.php 
plugins/content/example/example.xml 
plugins/content/exampe/form/default.xml 
administrator/languages/en-GB/en-GB.plg_content_example.ini 
administrator/languages/en-GB/en-GB.plg_content_example.sys.ini 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Content Plugin files 
plugins/content/example/example.php 
plugins/content/example/example.xml 
plugins/content/exampe/form/default.xml 
administrator/languages/en-GB/en-GB.plg_content_example.ini 
administrator/languages/en-GB/en-GB.plg_content_example.sys.ini 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Language files (1/2) 
PLG_CONTENT_EXAMPLE="Content ­Example" 
PLG_CONTENT_EXAMPLE_DESC="An example Content Plugin" 
PLG_CONTENT_EXAMPLE_FIELD_EXAMPLE_LABEL=”Test” 
PLG_CONTENT_EXAMPLE_FIELD_EXAMPLE_DESC=”New field” 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Language files (2/2) 
*.sys.ini = Always loaded 
Add plugin title + description, but not much more 
*.ini = Only loaded specifically 
When editing a plugin in backend 
When showing plugin in frontend ($autoLoadLanguage = true) 
Add all language strings you need (backend + frontend) 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Content Plugin files 
plugins/content/example/example.php 
plugins/content/example/example.xml 
plugins/content/exampe/form/default.xml 
administrator/languages/en-GB/en-GB.plg_content_example.ini 
administrator/languages/en-GB/en-GB.plg_content_example.sys.ini 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
XML manifest 
<?xml version="1.0" encoding="utf­8"?> 
<extension version="3.0" type="plugin" group="content"> 
<name>PLG_CONTENT_EXAMPLE</name> 
<description>PLG_CONTENT_EXAMPLE_DESC</description> 
<version>0.0.1</version> 
<files> 
<filename plugin=”example”>example.php</filename> 
<folder>form</folder> 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 
</files> 
<languages> 
<language tag=”en­GB”> 
en­GB. 
plg_content_example.ini</language> 
<language tag=”en­GB”> 
en­GB. 
plg_content_example.sys.ini</language> 
</languages> 
</extension>
Content Plugin files 
plugins/content/example/example.php 
plugins/content/example/example.xml 
plugins/content/exampe/form/default.xml 
administrator/languages/en-GB/en-GB.plg_content_example.ini 
administrator/languages/en-GB/en-GB.plg_content_example.sys.ini 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
XML form 
<?xml version="1.0" encoding="utf­8"?> 
<form> 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 
<fields> 
<fieldset name="jmetadata"> 
<field name="example" type="text" 
label="PLG_CONTENT_EXAMPLE_FIELD_EXAMPLE_LABEL" 
description="PLG_CONTENT_EXAMPLE_FIELD_EXAMPLE_DESC" 
/> 
</fieldset> 
</fields> 
</form>
Content Plugin files 
plugins/content/example/example.php 
plugins/content/example/example.xml 
plugins/content/exampe/form/default.xml 
administrator/languages/en-GB/en-GB.plg_content_example.ini 
administrator/languages/en-GB/en-GB.plg_content_example.sys.ini 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Content Plugin - basic structure 
<?php 
defined('_JEXEC') or die(); 
class plgContentExample extends JPlugin 
{ 
} 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Content Plugin - basic structure 
<?php 
defined('_JEXEC') or die(); 
class plgContentExample extends JPlugin 
{ 
public function onContentPrepareForm($form, $data) {} 
public function onContentAfterSave($context, $item, $isNew) {} 
public function onContentBeforeDisplay($context, $item, $params, $page) {} 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 
}
Goal 
Add a custom field to backends article form 
onContentPrepareForm 
Store that fields value in a separate database table 
onContentAfterSave 
Show that fields value in the same form again 
onContentPrepareForm 
Show that fields value in the frontend 
onContentBeforeDisplay 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
onContentPrepareForm 
public function onContentPrepareForm($form, $data) 
{ 
... 
JForm::addFormPath(__DIR__.'/form'); // subfolder “form” 
$form­> 
loadFile('default'); // file “form/default.xml” 
... 
return true; 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 
}
onContentPrepareForm 
public function onContentPrepareForm($form, $data) 
{ 
if (!($form instanceof JForm)) 
{ 
$this­>_ 
subject­> 
setError('JERROR_NOT_A_FORM'); 
return false; 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 
} 
$name = $form­> 
getName(); 
if (!in_array($name, array('com_content.article'))) 
{ 
return true; 
} 
...
onContentPrepareForm 
... 
if(!empty($data­> 
id)) 
{ 
$data = $this­> 
loadExample($data); 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 
} 
return true; 
}
loadExample 
protected function loadExample($data) 
{ 
$db = JFactory::getDbo(); 
$query = $db­> 
getQuery(true); 
$query­> 
select('*') 
­> 
from($db­> 
quoteName('#__example')) 
­> 
where($db­> 
quoteName('content_id') . ' = '.$data­> 
id); 
$db­> 
setQuery($query); 
$exampleData = $db­> 
loadAssoc(); 
$data­> 
example = $exampleData['example']; 
return $data; 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 
}
Goal 
Add a custom field to backends article form 
onContentPrepareForm 
Store that fields value in a separate database table 
onContentAfterSave 
Show that fields value in the same form again 
onContentPrepareForm 
Show that fields value in the frontend 
onContentBeforeDisplay 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
onContentAfterSave 
public function onContentAfterSave( 
$context, $article, $isNew 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 
) 
{ 
if (!in_array($context, array('com_content.article'))) 
{ 
return true; 
} 
...
onContentAfterSave 
... 
$jinput = JFactory::getApplication()­> 
input; 
$form = $jinput­> 
post­> 
get('jform', null, 'array'); 
if (is_array($form) && isset($form['example'])) 
{ 
$example = $form['example']; 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 
} 
else 
{ 
return true; 
} 
...
onContentAfterSave 
... 
$content_id = $article­> 
id; 
$this­> 
saveExample($content_id, $context, $example); 
return true; 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 
}
saveExample 
protected function saveExample($content_id, $context, $test) 
{ 
$db = JFactory::getDbo(); 
$query = $db­> 
getQuery(true); 
$query­> 
select($db­> 
quoteName('content_id')) 
­> 
from($db­> 
quoteName('#__example')) 
­> 
where($db­> 
quoteName('content_id').'='.$content_id); 
$db­> 
setQuery($query); 
$db­> 
execute() 
$exists = (bool)$db­> 
getNumRows(); 
... 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
saveExample 
... 
$data = new stdClass(); 
$data­> 
content_id = $content_id; 
$data­> 
context = $context; 
$data­> 
example = $example; 
if($exists) { 
$result = $db­> 
updateObject('#__example', $data, 
'content_id'); 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 
} else { 
$result = $db­> 
insertObject('#__example', $data); 
} 
return true; 
}
Goal 
Add a custom field to backends article form 
onContentPrepareForm 
Store that fields value in a separate database table 
onContentAfterSave 
Show that fields value in the same form again 
onContentPrepareForm 
Show that fields value in the frontend 
onContentBeforeDisplay 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
onContentBeforeDisplay 
public function onContentBeforeDisplay( 
$context, &$row, &$params, $page = 0) 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 
{ 
if(!empty($row­> 
id)) 
{ 
$row = $this­> 
loadExample($row); 
} 
if (!empty($row­> 
example)) 
{ 
$row­> 
text .= '<p>EXAMPLE: '.$row­> 
example.'<p>'; 
} 
}
Part 3: 
Braindump 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Forms are everywhere 
Article form 
Category form 
User profile form 
Menu-Item form 
Contact form 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
JForm manipulation 
$form->load($xml) 
$form->loadFile($file) 
$form->bind($data) 
$form->getField($name, $group, $value) 
$form->removeField($field) 
$form->setField($xml) 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
JForm output 
$form->getInput($field, $group) 
$form->getLabel($field, $group) 
$form->getName($field, $group) 
$form->getValue($field, $group) 
$form->renderField($field, $group) 
$form->getFieldset($fieldset) 
$form->getFieldsets($group) 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Showing new field values 
4 times the same event 
onContentPrepare 
onContentAfterTitle 
onContentBeforeDisplay 
onContentAfterDisplay 
Template override 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
Loading a language file - Joomla! 2.5 
public function __construct(& $subject, $config) 
{ 
parent::__construct($subject, $config); 
$this­> 
loadLanguage(); 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 
}
Loading a language file - Joomla! 3.x 
protected $autoloadLanguage = true; 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
github.com 
/yireo 
/JoomlaPluginsBook 
/chapter05 
https://github.com/yireo/JoomlaPluginsBook/tree/master/chapter05 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
@yireo 
opening up technology 
Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo 
Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14

More Related Content

What's hot

Wordpress Intro
Wordpress IntroWordpress Intro
Wordpress IntroRicha Goel
 
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile designDreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile designDee Sadler
 
WordPress for Beginners
WordPress for BeginnersWordPress for Beginners
WordPress for BeginnersMichelle Ames
 
How to Create WordPress Website in Easy Steps
How to Create WordPress Website in Easy StepsHow to Create WordPress Website in Easy Steps
How to Create WordPress Website in Easy StepsSingsys Pte Ltd
 
Joomla Explained - As Easy as 1, 2, 3
Joomla Explained - As Easy as 1, 2, 3Joomla Explained - As Easy as 1, 2, 3
Joomla Explained - As Easy as 1, 2, 3Rod Martin
 
Joomla Template Tutorial
Joomla Template TutorialJoomla Template Tutorial
Joomla Template Tutorialbrighteyes
 
Introduction To Simple WordPress Plugin Development
Introduction To Simple WordPress Plugin DevelopmentIntroduction To Simple WordPress Plugin Development
Introduction To Simple WordPress Plugin DevelopmentBruce L Chamoff
 
Beginning WordPress Plugin Development
Beginning WordPress Plugin DevelopmentBeginning WordPress Plugin Development
Beginning WordPress Plugin DevelopmentAizat Faiz
 
RESS: An Evolution of Responsive Web Design
RESS: An Evolution of Responsive Web DesignRESS: An Evolution of Responsive Web Design
RESS: An Evolution of Responsive Web DesignDave Olsen
 
HTML5 and the web of tomorrow!
HTML5  and the  web of tomorrow!HTML5  and the  web of tomorrow!
HTML5 and the web of tomorrow!Christian Heilmann
 
Unobtrusive JavaScript
Unobtrusive JavaScriptUnobtrusive JavaScript
Unobtrusive JavaScriptdaveverwer
 
Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3Wahyu Putra
 
3 Langkah Mudah Membuat Website Dakwah (User Friendly - SEO Friendly - Mobile...
3 Langkah Mudah Membuat Website Dakwah (User Friendly - SEO Friendly - Mobile...3 Langkah Mudah Membuat Website Dakwah (User Friendly - SEO Friendly - Mobile...
3 Langkah Mudah Membuat Website Dakwah (User Friendly - SEO Friendly - Mobile...Wahyu Putra
 
8 Most Common Joomla! Hacks and How to Avoid Them
8 Most Common Joomla! Hacks and How to Avoid Them8 Most Common Joomla! Hacks and How to Avoid Them
8 Most Common Joomla! Hacks and How to Avoid ThemDaniel Kanchev
 
WordPress 2.5 Overview - Rich Media Institute
WordPress 2.5 Overview - Rich Media InstituteWordPress 2.5 Overview - Rich Media Institute
WordPress 2.5 Overview - Rich Media InstituteBrendan Sera-Shriar
 

What's hot (20)

Wordpress Intro
Wordpress IntroWordpress Intro
Wordpress Intro
 
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile designDreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile design
 
WordPress for Beginners
WordPress for BeginnersWordPress for Beginners
WordPress for Beginners
 
How to Create WordPress Website in Easy Steps
How to Create WordPress Website in Easy StepsHow to Create WordPress Website in Easy Steps
How to Create WordPress Website in Easy Steps
 
Web Standards
Web StandardsWeb Standards
Web Standards
 
Joomla Explained - As Easy as 1, 2, 3
Joomla Explained - As Easy as 1, 2, 3Joomla Explained - As Easy as 1, 2, 3
Joomla Explained - As Easy as 1, 2, 3
 
Joomla Template Tutorial
Joomla Template TutorialJoomla Template Tutorial
Joomla Template Tutorial
 
HTML5 and Joomla! 2.5 Template
HTML5 and Joomla! 2.5 TemplateHTML5 and Joomla! 2.5 Template
HTML5 and Joomla! 2.5 Template
 
Wordpress Basics
Wordpress BasicsWordpress Basics
Wordpress Basics
 
Joomla Presentations
Joomla PresentationsJoomla Presentations
Joomla Presentations
 
Introduction To Simple WordPress Plugin Development
Introduction To Simple WordPress Plugin DevelopmentIntroduction To Simple WordPress Plugin Development
Introduction To Simple WordPress Plugin Development
 
Beginning WordPress Plugin Development
Beginning WordPress Plugin DevelopmentBeginning WordPress Plugin Development
Beginning WordPress Plugin Development
 
Internet Librarian Slides
Internet Librarian SlidesInternet Librarian Slides
Internet Librarian Slides
 
RESS: An Evolution of Responsive Web Design
RESS: An Evolution of Responsive Web DesignRESS: An Evolution of Responsive Web Design
RESS: An Evolution of Responsive Web Design
 
HTML5 and the web of tomorrow!
HTML5  and the  web of tomorrow!HTML5  and the  web of tomorrow!
HTML5 and the web of tomorrow!
 
Unobtrusive JavaScript
Unobtrusive JavaScriptUnobtrusive JavaScript
Unobtrusive JavaScript
 
Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3Create Responsive Website Design with Bootstrap 3
Create Responsive Website Design with Bootstrap 3
 
3 Langkah Mudah Membuat Website Dakwah (User Friendly - SEO Friendly - Mobile...
3 Langkah Mudah Membuat Website Dakwah (User Friendly - SEO Friendly - Mobile...3 Langkah Mudah Membuat Website Dakwah (User Friendly - SEO Friendly - Mobile...
3 Langkah Mudah Membuat Website Dakwah (User Friendly - SEO Friendly - Mobile...
 
8 Most Common Joomla! Hacks and How to Avoid Them
8 Most Common Joomla! Hacks and How to Avoid Them8 Most Common Joomla! Hacks and How to Avoid Them
8 Most Common Joomla! Hacks and How to Avoid Them
 
WordPress 2.5 Overview - Rich Media Institute
WordPress 2.5 Overview - Rich Media InstituteWordPress 2.5 Overview - Rich Media Institute
WordPress 2.5 Overview - Rich Media Institute
 

Similar to Extend Joomla Forms Using Plugins

Joomla! templating
Joomla! templatingJoomla! templating
Joomla! templatingYireo
 
Joomla!: phpMyAdmin for Beginners
Joomla!: phpMyAdmin for BeginnersJoomla!: phpMyAdmin for Beginners
Joomla!: phpMyAdmin for BeginnersYireo
 
WordPress for Libraries PreConference Workshop
WordPress for Libraries PreConference WorkshopWordPress for Libraries PreConference Workshop
WordPress for Libraries PreConference WorkshopPolly Farrington
 
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012crokitta
 
Customizing Magento email templates
Customizing Magento email templatesCustomizing Magento email templates
Customizing Magento email templatesYireo
 
Joomla! and SSL
Joomla! and SSLJoomla! and SSL
Joomla! and SSLYireo
 
WordPress Developers Israel Meetup #1
WordPress Developers Israel Meetup #1WordPress Developers Israel Meetup #1
WordPress Developers Israel Meetup #1Yoav Farhi
 
SEO and Social Media for Multilingual and Multidevice Sites
SEO and Social Media for Multilingual and Multidevice SitesSEO and Social Media for Multilingual and Multidevice Sites
SEO and Social Media for Multilingual and Multidevice Sitesluckyboost
 
An Introduction To HTML5
An Introduction To HTML5An Introduction To HTML5
An Introduction To HTML5Robert Nyman
 
EECI2009 - From Design to Dynamic - Rapid ExpressionEngine Development
EECI2009 - From Design to Dynamic - Rapid ExpressionEngine DevelopmentEECI2009 - From Design to Dynamic - Rapid ExpressionEngine Development
EECI2009 - From Design to Dynamic - Rapid ExpressionEngine DevelopmentFortySeven Media
 
Web Development with HTML5, CSS3 & JavaScript
Web Development with HTML5, CSS3 & JavaScriptWeb Development with HTML5, CSS3 & JavaScript
Web Development with HTML5, CSS3 & JavaScriptEdureka!
 
Joomla! Day Los Angeles 2011 WebMatrix
Joomla! Day Los Angeles 2011 WebMatrixJoomla! Day Los Angeles 2011 WebMatrix
Joomla! Day Los Angeles 2011 WebMatrixAlice Pang
 
J day la 2011 webmatrix
J day la 2011 webmatrixJ day la 2011 webmatrix
J day la 2011 webmatrixAlice Pang
 
Index of jquery template 2 Minuteman Summer Web Dev.
Index of jquery template 2 Minuteman Summer Web Dev.Index of jquery template 2 Minuteman Summer Web Dev.
Index of jquery template 2 Minuteman Summer Web Dev.Daniel Downs
 

Similar to Extend Joomla Forms Using Plugins (20)

Joomla! templating
Joomla! templatingJoomla! templating
Joomla! templating
 
Joomla!: phpMyAdmin for Beginners
Joomla!: phpMyAdmin for BeginnersJoomla!: phpMyAdmin for Beginners
Joomla!: phpMyAdmin for Beginners
 
WordPress for Libraries PreConference Workshop
WordPress for Libraries PreConference WorkshopWordPress for Libraries PreConference Workshop
WordPress for Libraries PreConference Workshop
 
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
 
Customizing Magento email templates
Customizing Magento email templatesCustomizing Magento email templates
Customizing Magento email templates
 
Django crush course
Django crush course Django crush course
Django crush course
 
Joomla! and SSL
Joomla! and SSLJoomla! and SSL
Joomla! and SSL
 
Apex & jQuery Mobile
Apex & jQuery MobileApex & jQuery Mobile
Apex & jQuery Mobile
 
WordPress Developers Israel Meetup #1
WordPress Developers Israel Meetup #1WordPress Developers Israel Meetup #1
WordPress Developers Israel Meetup #1
 
Seven deadly theming sins
Seven deadly theming sinsSeven deadly theming sins
Seven deadly theming sins
 
Adobe & HTML5
Adobe & HTML5Adobe & HTML5
Adobe & HTML5
 
Mobile themes, QR codes, and shortURLs
Mobile themes, QR codes, and shortURLsMobile themes, QR codes, and shortURLs
Mobile themes, QR codes, and shortURLs
 
SEO and Social Media for Multilingual and Multidevice Sites
SEO and Social Media for Multilingual and Multidevice SitesSEO and Social Media for Multilingual and Multidevice Sites
SEO and Social Media for Multilingual and Multidevice Sites
 
An Introduction To HTML5
An Introduction To HTML5An Introduction To HTML5
An Introduction To HTML5
 
EECI2009 - From Design to Dynamic - Rapid ExpressionEngine Development
EECI2009 - From Design to Dynamic - Rapid ExpressionEngine DevelopmentEECI2009 - From Design to Dynamic - Rapid ExpressionEngine Development
EECI2009 - From Design to Dynamic - Rapid ExpressionEngine Development
 
Web Development with HTML5, CSS3 & JavaScript
Web Development with HTML5, CSS3 & JavaScriptWeb Development with HTML5, CSS3 & JavaScript
Web Development with HTML5, CSS3 & JavaScript
 
Joomla! Day Los Angeles 2011 WebMatrix
Joomla! Day Los Angeles 2011 WebMatrixJoomla! Day Los Angeles 2011 WebMatrix
Joomla! Day Los Angeles 2011 WebMatrix
 
J day la 2011 webmatrix
J day la 2011 webmatrixJ day la 2011 webmatrix
J day la 2011 webmatrix
 
Index of jquery template 2 Minuteman Summer Web Dev.
Index of jquery template 2 Minuteman Summer Web Dev.Index of jquery template 2 Minuteman Summer Web Dev.
Index of jquery template 2 Minuteman Summer Web Dev.
 
WordCamp Sofia 2012
WordCamp Sofia 2012WordCamp Sofia 2012
WordCamp Sofia 2012
 

More from Yireo

Faster Magento Integration Tests
Faster Magento Integration TestsFaster Magento Integration Tests
Faster Magento Integration TestsYireo
 
Mage-OS Nederland
Mage-OS NederlandMage-OS Nederland
Mage-OS NederlandYireo
 
Modernizing Vue Storefront 1
Modernizing Vue Storefront 1Modernizing Vue Storefront 1
Modernizing Vue Storefront 1Yireo
 
Magento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshop
Magento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshopMagento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshop
Magento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshopYireo
 
Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2
Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2
Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2Yireo
 
Magento 2 Seminar - Andra Lungu - API in Magento 2
Magento 2 Seminar - Andra Lungu - API in Magento 2Magento 2 Seminar - Andra Lungu - API in Magento 2
Magento 2 Seminar - Andra Lungu - API in Magento 2Yireo
 
Magento 2 Seminar - Roger Keulen - Machine learning
Magento 2 Seminar - Roger Keulen - Machine learningMagento 2 Seminar - Roger Keulen - Machine learning
Magento 2 Seminar - Roger Keulen - Machine learningYireo
 
Magento 2 Seminar - Miguel Balparda - M2 with PHP 7 and Varnish
Magento 2 Seminar - Miguel Balparda - M2 with PHP 7 and VarnishMagento 2 Seminar - Miguel Balparda - M2 with PHP 7 and Varnish
Magento 2 Seminar - Miguel Balparda - M2 with PHP 7 and VarnishYireo
 
Magento 2 Seminar - Maarten Schuiling - The App Economy
Magento 2 Seminar - Maarten Schuiling - The App EconomyMagento 2 Seminar - Maarten Schuiling - The App Economy
Magento 2 Seminar - Maarten Schuiling - The App EconomyYireo
 
Magento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelen
Magento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelenMagento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelen
Magento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelenYireo
 
Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2
Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2
Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2Yireo
 
Magento 2 Seminar - Arjen Miedema - Search Engine Optimisation
Magento 2 Seminar - Arjen Miedema - Search Engine OptimisationMagento 2 Seminar - Arjen Miedema - Search Engine Optimisation
Magento 2 Seminar - Arjen Miedema - Search Engine OptimisationYireo
 
Magento 2 Seminar - Tjitte Folkertsma - Beaumotica
Magento 2 Seminar - Tjitte Folkertsma - BeaumoticaMagento 2 Seminar - Tjitte Folkertsma - Beaumotica
Magento 2 Seminar - Tjitte Folkertsma - BeaumoticaYireo
 
Magento 2 Seminar - Jeroen Vermeulen Snelle Magento 2 Shops
Magento 2 Seminar - Jeroen Vermeulen  Snelle Magento 2 ShopsMagento 2 Seminar - Jeroen Vermeulen  Snelle Magento 2 Shops
Magento 2 Seminar - Jeroen Vermeulen Snelle Magento 2 ShopsYireo
 
Magento 2 Seminar - Christian Muench - Magerun2
Magento 2 Seminar - Christian Muench - Magerun2Magento 2 Seminar - Christian Muench - Magerun2
Magento 2 Seminar - Christian Muench - Magerun2Yireo
 
Magento 2 Seminar - Anton Kril - Magento 2 Summary
Magento 2 Seminar - Anton Kril - Magento 2 SummaryMagento 2 Seminar - Anton Kril - Magento 2 Summary
Magento 2 Seminar - Anton Kril - Magento 2 SummaryYireo
 
Magento 2 Seminar - Daniel Genis - Magento 2 benchmarks
Magento 2 Seminar - Daniel Genis - Magento 2 benchmarksMagento 2 Seminar - Daniel Genis - Magento 2 benchmarks
Magento 2 Seminar - Daniel Genis - Magento 2 benchmarksYireo
 
Magento 2 Seminar - Ben Marks - Keynote
Magento 2 Seminar - Ben Marks - KeynoteMagento 2 Seminar - Ben Marks - Keynote
Magento 2 Seminar - Ben Marks - KeynoteYireo
 
Magento 2 Seminar - Community agenda
Magento 2 Seminar - Community agendaMagento 2 Seminar - Community agenda
Magento 2 Seminar - Community agendaYireo
 
Magento 2 Seminar - Jisse Reitsma - Migratie Planning
Magento 2 Seminar - Jisse Reitsma - Migratie PlanningMagento 2 Seminar - Jisse Reitsma - Migratie Planning
Magento 2 Seminar - Jisse Reitsma - Migratie PlanningYireo
 

More from Yireo (20)

Faster Magento Integration Tests
Faster Magento Integration TestsFaster Magento Integration Tests
Faster Magento Integration Tests
 
Mage-OS Nederland
Mage-OS NederlandMage-OS Nederland
Mage-OS Nederland
 
Modernizing Vue Storefront 1
Modernizing Vue Storefront 1Modernizing Vue Storefront 1
Modernizing Vue Storefront 1
 
Magento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshop
Magento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshopMagento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshop
Magento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshop
 
Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2
Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2
Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2
 
Magento 2 Seminar - Andra Lungu - API in Magento 2
Magento 2 Seminar - Andra Lungu - API in Magento 2Magento 2 Seminar - Andra Lungu - API in Magento 2
Magento 2 Seminar - Andra Lungu - API in Magento 2
 
Magento 2 Seminar - Roger Keulen - Machine learning
Magento 2 Seminar - Roger Keulen - Machine learningMagento 2 Seminar - Roger Keulen - Machine learning
Magento 2 Seminar - Roger Keulen - Machine learning
 
Magento 2 Seminar - Miguel Balparda - M2 with PHP 7 and Varnish
Magento 2 Seminar - Miguel Balparda - M2 with PHP 7 and VarnishMagento 2 Seminar - Miguel Balparda - M2 with PHP 7 and Varnish
Magento 2 Seminar - Miguel Balparda - M2 with PHP 7 and Varnish
 
Magento 2 Seminar - Maarten Schuiling - The App Economy
Magento 2 Seminar - Maarten Schuiling - The App EconomyMagento 2 Seminar - Maarten Schuiling - The App Economy
Magento 2 Seminar - Maarten Schuiling - The App Economy
 
Magento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelen
Magento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelenMagento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelen
Magento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelen
 
Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2
Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2
Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2
 
Magento 2 Seminar - Arjen Miedema - Search Engine Optimisation
Magento 2 Seminar - Arjen Miedema - Search Engine OptimisationMagento 2 Seminar - Arjen Miedema - Search Engine Optimisation
Magento 2 Seminar - Arjen Miedema - Search Engine Optimisation
 
Magento 2 Seminar - Tjitte Folkertsma - Beaumotica
Magento 2 Seminar - Tjitte Folkertsma - BeaumoticaMagento 2 Seminar - Tjitte Folkertsma - Beaumotica
Magento 2 Seminar - Tjitte Folkertsma - Beaumotica
 
Magento 2 Seminar - Jeroen Vermeulen Snelle Magento 2 Shops
Magento 2 Seminar - Jeroen Vermeulen  Snelle Magento 2 ShopsMagento 2 Seminar - Jeroen Vermeulen  Snelle Magento 2 Shops
Magento 2 Seminar - Jeroen Vermeulen Snelle Magento 2 Shops
 
Magento 2 Seminar - Christian Muench - Magerun2
Magento 2 Seminar - Christian Muench - Magerun2Magento 2 Seminar - Christian Muench - Magerun2
Magento 2 Seminar - Christian Muench - Magerun2
 
Magento 2 Seminar - Anton Kril - Magento 2 Summary
Magento 2 Seminar - Anton Kril - Magento 2 SummaryMagento 2 Seminar - Anton Kril - Magento 2 Summary
Magento 2 Seminar - Anton Kril - Magento 2 Summary
 
Magento 2 Seminar - Daniel Genis - Magento 2 benchmarks
Magento 2 Seminar - Daniel Genis - Magento 2 benchmarksMagento 2 Seminar - Daniel Genis - Magento 2 benchmarks
Magento 2 Seminar - Daniel Genis - Magento 2 benchmarks
 
Magento 2 Seminar - Ben Marks - Keynote
Magento 2 Seminar - Ben Marks - KeynoteMagento 2 Seminar - Ben Marks - Keynote
Magento 2 Seminar - Ben Marks - Keynote
 
Magento 2 Seminar - Community agenda
Magento 2 Seminar - Community agendaMagento 2 Seminar - Community agenda
Magento 2 Seminar - Community agenda
 
Magento 2 Seminar - Jisse Reitsma - Migratie Planning
Magento 2 Seminar - Jisse Reitsma - Migratie PlanningMagento 2 Seminar - Jisse Reitsma - Migratie Planning
Magento 2 Seminar - Jisse Reitsma - Migratie Planning
 

Recently uploaded

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
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
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
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
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
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
 
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
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 

Recently uploaded (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
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
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
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
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 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
 
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
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 

Extend Joomla Forms Using Plugins

  • 1. Extend Joomla Forms Using Plugins Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 2. My name is Jisse Reitsma Developer Owner of Yireo Joomla! & Magento Extensions & services Tutorials & blogs Sponsoring JWC2014 Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 3. Plugins I wrote Language Domains Auto Login IP Demo Site Fancybox HTTP Authenticatie New Relic Piwik WebP ScriptMerge SEF Test SSL Redirection Static Content Trademark 32+ MageBridge plugins 10+ SimpleLists plugins 8+ Dynamic404 plugins Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 4. Book release in November 2014 English 368 pages Available through: Yireo Shop (Europe) Amazon (US & world wide) #deadtreeformat (no ebook) Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 5. Extend Joomla Forms Using Plugins Part I - Events & JForm Part II - Code Part III - Braindump Presentation online: http://slideshare.net/yireo Tweets: @yireo / @jissereitsma Code: github.com/yireo/JoomlaPluginsBook Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 6. Part I: Events & JForm Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 7. Extensions Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 Component Modules Plugins Libraries Language files
  • 8. Plugin groups Authentication Content System User Editors Editor Buttons Search Finder CAPTCHA Extension Quick Icon Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 9. Content events onContentPrepareForm onContentAfterSave onContentAfterDelete onContentBeforeDisplay Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 10. JForm Joomla core library for handling forms XML form definition + PHP logic Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 Tasks Form generation (HTML) Validation Filtering
  • 11. MVC Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 Model View Controller
  • 12. MVC workflow (simple) User requests page Controller calls view View fetches data from model View shows page Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 13. MVC workflow (form) User requests form Controller calls view View shows form User submits form (POST) Controller picks up on POST Controller validates & filters form Model stores form data Controller redirects back to form or other page Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 14. MVC workflow (form) User requests form Controller calls view View shows form (JForm) User submits form (POST) Controller picks up on POST Controller validates & filters form (JForm) Model stores form data Controller redirects back to form or other page Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 15. Part II: Code Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 16. Content events onContentPrepareForm onContentAfterSave onContentAfterDelete onContentBeforeDisplay Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 17. Goal Add a custom field to backends article form Store that fields value in a separate database table Show that fields value in the same form again Show that fields value in the frontend Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 18. Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 19. Goal Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 20. Goal Add a custom field to backends article form Store that fields value in a separate database table Show that fields value in the same form again Show that fields value in the frontend Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 21. Goal Add a custom field to backends article form onContentPrepareForm Store that fields value in a separate database table onContentAfterSave Show that fields value in the same form again onContentPrepareForm Show that fields value in the frontend onContentBeforeDisplay Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 22. Content Plugin files plugins/content/example/example.php plugins/content/example/example.xml plugins/content/exampe/form/default.xml administrator/languages/en-GB/en-GB.plg_content_example.ini administrator/languages/en-GB/en-GB.plg_content_example.sys.ini Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 23. Content Plugin files plugins/content/example/example.php plugins/content/example/example.xml plugins/content/exampe/form/default.xml administrator/languages/en-GB/en-GB.plg_content_example.ini administrator/languages/en-GB/en-GB.plg_content_example.sys.ini Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 24. Language files (1/2) PLG_CONTENT_EXAMPLE="Content ­Example" PLG_CONTENT_EXAMPLE_DESC="An example Content Plugin" PLG_CONTENT_EXAMPLE_FIELD_EXAMPLE_LABEL=”Test” PLG_CONTENT_EXAMPLE_FIELD_EXAMPLE_DESC=”New field” Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 25. Language files (2/2) *.sys.ini = Always loaded Add plugin title + description, but not much more *.ini = Only loaded specifically When editing a plugin in backend When showing plugin in frontend ($autoLoadLanguage = true) Add all language strings you need (backend + frontend) Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 26. Content Plugin files plugins/content/example/example.php plugins/content/example/example.xml plugins/content/exampe/form/default.xml administrator/languages/en-GB/en-GB.plg_content_example.ini administrator/languages/en-GB/en-GB.plg_content_example.sys.ini Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 27. XML manifest <?xml version="1.0" encoding="utf­8"?> <extension version="3.0" type="plugin" group="content"> <name>PLG_CONTENT_EXAMPLE</name> <description>PLG_CONTENT_EXAMPLE_DESC</description> <version>0.0.1</version> <files> <filename plugin=”example”>example.php</filename> <folder>form</folder> Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 </files> <languages> <language tag=”en­GB”> en­GB. plg_content_example.ini</language> <language tag=”en­GB”> en­GB. plg_content_example.sys.ini</language> </languages> </extension>
  • 28. Content Plugin files plugins/content/example/example.php plugins/content/example/example.xml plugins/content/exampe/form/default.xml administrator/languages/en-GB/en-GB.plg_content_example.ini administrator/languages/en-GB/en-GB.plg_content_example.sys.ini Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 29. XML form <?xml version="1.0" encoding="utf­8"?> <form> Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 <fields> <fieldset name="jmetadata"> <field name="example" type="text" label="PLG_CONTENT_EXAMPLE_FIELD_EXAMPLE_LABEL" description="PLG_CONTENT_EXAMPLE_FIELD_EXAMPLE_DESC" /> </fieldset> </fields> </form>
  • 30. Content Plugin files plugins/content/example/example.php plugins/content/example/example.xml plugins/content/exampe/form/default.xml administrator/languages/en-GB/en-GB.plg_content_example.ini administrator/languages/en-GB/en-GB.plg_content_example.sys.ini Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 31. Content Plugin - basic structure <?php defined('_JEXEC') or die(); class plgContentExample extends JPlugin { } Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 32. Content Plugin - basic structure <?php defined('_JEXEC') or die(); class plgContentExample extends JPlugin { public function onContentPrepareForm($form, $data) {} public function onContentAfterSave($context, $item, $isNew) {} public function onContentBeforeDisplay($context, $item, $params, $page) {} Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 }
  • 33. Goal Add a custom field to backends article form onContentPrepareForm Store that fields value in a separate database table onContentAfterSave Show that fields value in the same form again onContentPrepareForm Show that fields value in the frontend onContentBeforeDisplay Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 34. onContentPrepareForm public function onContentPrepareForm($form, $data) { ... JForm::addFormPath(__DIR__.'/form'); // subfolder “form” $form­> loadFile('default'); // file “form/default.xml” ... return true; Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 }
  • 35. onContentPrepareForm public function onContentPrepareForm($form, $data) { if (!($form instanceof JForm)) { $this­>_ subject­> setError('JERROR_NOT_A_FORM'); return false; Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 } $name = $form­> getName(); if (!in_array($name, array('com_content.article'))) { return true; } ...
  • 36. onContentPrepareForm ... if(!empty($data­> id)) { $data = $this­> loadExample($data); Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 } return true; }
  • 37. loadExample protected function loadExample($data) { $db = JFactory::getDbo(); $query = $db­> getQuery(true); $query­> select('*') ­> from($db­> quoteName('#__example')) ­> where($db­> quoteName('content_id') . ' = '.$data­> id); $db­> setQuery($query); $exampleData = $db­> loadAssoc(); $data­> example = $exampleData['example']; return $data; Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 }
  • 38. Goal Add a custom field to backends article form onContentPrepareForm Store that fields value in a separate database table onContentAfterSave Show that fields value in the same form again onContentPrepareForm Show that fields value in the frontend onContentBeforeDisplay Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 39. onContentAfterSave public function onContentAfterSave( $context, $article, $isNew Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 ) { if (!in_array($context, array('com_content.article'))) { return true; } ...
  • 40. onContentAfterSave ... $jinput = JFactory::getApplication()­> input; $form = $jinput­> post­> get('jform', null, 'array'); if (is_array($form) && isset($form['example'])) { $example = $form['example']; Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 } else { return true; } ...
  • 41. onContentAfterSave ... $content_id = $article­> id; $this­> saveExample($content_id, $context, $example); return true; Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 }
  • 42. saveExample protected function saveExample($content_id, $context, $test) { $db = JFactory::getDbo(); $query = $db­> getQuery(true); $query­> select($db­> quoteName('content_id')) ­> from($db­> quoteName('#__example')) ­> where($db­> quoteName('content_id').'='.$content_id); $db­> setQuery($query); $db­> execute() $exists = (bool)$db­> getNumRows(); ... Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 43. saveExample ... $data = new stdClass(); $data­> content_id = $content_id; $data­> context = $context; $data­> example = $example; if($exists) { $result = $db­> updateObject('#__example', $data, 'content_id'); Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 } else { $result = $db­> insertObject('#__example', $data); } return true; }
  • 44. Goal Add a custom field to backends article form onContentPrepareForm Store that fields value in a separate database table onContentAfterSave Show that fields value in the same form again onContentPrepareForm Show that fields value in the frontend onContentBeforeDisplay Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 45. onContentBeforeDisplay public function onContentBeforeDisplay( $context, &$row, &$params, $page = 0) Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 { if(!empty($row­> id)) { $row = $this­> loadExample($row); } if (!empty($row­> example)) { $row­> text .= '<p>EXAMPLE: '.$row­> example.'<p>'; } }
  • 46. Part 3: Braindump Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 47. Forms are everywhere Article form Category form User profile form Menu-Item form Contact form Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 48. JForm manipulation $form->load($xml) $form->loadFile($file) $form->bind($data) $form->getField($name, $group, $value) $form->removeField($field) $form->setField($xml) Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 49. JForm output $form->getInput($field, $group) $form->getLabel($field, $group) $form->getName($field, $group) $form->getValue($field, $group) $form->renderField($field, $group) $form->getFieldset($fieldset) $form->getFieldsets($group) Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 50. Showing new field values 4 times the same event onContentPrepare onContentAfterTitle onContentBeforeDisplay onContentAfterDisplay Template override Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 51. Loading a language file - Joomla! 2.5 public function __construct(& $subject, $config) { parent::__construct($subject, $config); $this­> loadLanguage(); Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14 }
  • 52. Loading a language file - Joomla! 3.x protected $autoloadLanguage = true; Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 53. github.com /yireo /JoomlaPluginsBook /chapter05 https://github.com/yireo/JoomlaPluginsBook/tree/master/chapter05 Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14
  • 54. @yireo opening up technology Presentation “Extend Joomla Forms Using Plugins” - http://slideshare.net/yireo Jisse Reitsma (jisse@yireo.com) - Twitter @yireo @jissereitsma #jwc14