SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

Semelhante a 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
 

Semelhante a 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
 

Mais 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
 

Mais 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
 

Último

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
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
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
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
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
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Último (20)

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
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
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
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
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)
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
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
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

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