SlideShare une entreprise Scribd logo
1  sur  54
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

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
 

Tendances (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
 

Similaire à EXTEND JOOMLA FORMS

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
 

Similaire à EXTEND JOOMLA FORMS (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
 

Plus de 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
 

Plus de 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
 

Dernier

Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
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
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
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
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
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
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
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
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 

Dernier (20)

Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
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
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
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
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
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
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
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
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 

EXTEND JOOMLA FORMS

  • 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