SlideShare a Scribd company logo
1 of 33
Download to read offline
Ανάπτυξη εφαρμογών για Joomla!
!"#ί% &' (#')ά(+ (' ,'--.ά /'% ,+ (0 FOF

!ά#$%&' 2013 – 1& Joomla! Frappé
Τι είναι αυτό το FOF?
!ά#$%&' 2013 – 1& Joomla! Frappé
Ναι, ξέρω τι σκέφτεστε
“Ό!. 2+έ ,04, ό!., ό!. ά--0 έ&' 6'('#',έ&0 framework!”

!ά#$%&' 2013 – 1& Joomla! Frappé
Το FOF επεκτείνει το Joomla! framework
7+& (0 '&(.6'8./(ά 9-ή#"%

!ά#$%&' 2013 – 1& Joomla! Frappé
DRY - Μην Επαναλαμβάνεστε
!"#ώ (0 copy/paste (04 ί;.04 6ώ;.6' ='&ά 6'. ='&ά 6'. ='&ά !"# $"%ά !"# $"%ά 6'. ='&ά 6'. ='&ά...

!ά#$%&' 2013 – 1& Joomla! Frappé
Το λιγότερο είναι περισσότερο
Convention over configuration – -.>ό(+#0% !#ό&0%, 6ό90%, 6ώ;.6'% 6'. bugs

!ά#$%&' 2013 – 1& Joomla! Frappé
Δεν επιβάλλει τον τρόπο σκέψης του
7+& έ!+. ,'ύ#' 604(.ά, '--ά έ!+. 9#0/'#,0@ό,+&' triggers, >+>0&ό(' 9#0/8έ("&...

!ά#$%&' 2013 – 1& Joomla! Frappé
Παίζει καλά με τ’άλλα παιδιά
A4,)'(ό ,+ Joomla! 2.5 6'. 3.0.

!ά#$%&' 2013 – 1& Joomla! Frappé
Προς τα πίσω συμβατότητα
7+& έ!+. ='B&.6έ%, 60/,0>0&.6έ% '--'>έ% '9’(C ,.' ,έ#' /(C& ά--C

!ά#$%&' 2013 – 1& Joomla! Frappé
Λίγη ιστορία
D"% B(ά/',+ "% +;ώ

!ά#$%&' 2013 – 1& Joomla! Frappé
Ιούλιος 2009 – Βασικές MVC κλάσεις
7.6έ% ,04 6-ά/+.%, +9+6(+ί&04& (0 JModel 6'. /.', +-'!./(090.0ύ& (0& copy & paste 6ώ;.6'

!ά#$%&' 2013 – 1& Joomla! Frappé
Σεπτέμβριος 2011 – Γϊναμε κανονικό framework
E'/.6ά, (' +ί!' 9ά#+. ,+ έ&' ά--0 framework 904 ,04 έ6'&+ (C& @"ή 9'(ί&.

!ά#$%&' 2013 – 1& Joomla! Frappé
THIS. IS. NIKEA!
      (Η Σπάρτη είχε άλλες δουλειές να κάνει)




Σεπτέμβριος 2011 – Γϊναμε κανονικό framework
E'/.6ά, (' +ί!' 9ά#+. ,+ έ&' ά--0 framework 904 ,04 έ6'&+ (C& @"ή 9'(ί&.

!ά#$%&' 2013 – 1& Joomla! Frappé
Οκτώβριος 2011 – HMVC
+&ώ +ί!' 60--ή/+. ,έ/' /(0 '+#09-ά&0, /(0 έ;'B0%, /(0 F-. E+&.@έ-0% >.' 4 ώ#+%

!ά#$%&' 2013 – 1& Joomla! Frappé
Μάιος 2012 – Δημόσια έκδοση
/(0 /4&έ;#.0 J and Beyond 2012

!ά#$%&' 2013 – 1& Joomla! Frappé
Ιούνιος 2012 – Bootstrap & jQuery
A(0 9#0'.#+(.6ό 9'6έ(0 Akeeba Strapper

!ά#$%&' 2013 – 1& Joomla! Frappé
Φεβρουάριος 2013 – η έκδοση 2.0 ΔΕΝ μπήκε στο Joomla! 3
(0 090ί0, (+-.6ά, +ί&'. 6ά(. 6'-ό!

!ά#$%&' 2013 – 1& Joomla! Frappé
Στο μυαλό μιας εφαρμογής σε FOF
G.' +9ί/6+HC /(0 ό#0B0 71/2 +&ό% 6(.#ί04 >#'B+ί"& /(0 G'&!ά('&

!ά#$%&' 2013 – 1& Joomla! Frappé
Μερικές γενικές σκέψεις
✤   A!+;ό% RESTful, '--ά ό!. 6'. (ό/0

✤   D#0/έ>>./C “9#ώ(' 0. 49C#+/ί+%”. F&/",'(",έ&C 490/(ή#.=C JSON
    6'. ;.'B'&ή% '48+&(.6090ίC/C 904 '&0ί>+. (C& 9ό#(' >.' 9'#0!ή
    ;+;0,έ&"& /+ +B'#,0>έ% (web, desktop, mobile 6'. ;+&
    /4,,'@+ύ+('.)

✤   Ό!., (0 OAuth ;+& 490/(C#ί@+('. ('6ό,';). G.' ;.6.ά ,'% )'/./,έ&C
    /+ TOTP 6'. AES-256 ,έ80;0% ;.'B'&0ύ% '48+&(.6090ίC/C% 6'. (0
    '9-ό HTTP Basic Authentication 490/(C#ί@0&('. ή;C.

✤   D'#έ!04,+ HMVC #ή&'() !"#ί% &' !#+.'/(+ί &' ='&',ά8+(+ &'
    B(.ά!&+(+ +B'#,0>έ% /+ Joomla! (/+ '&(ί8+/C ,+ (0 9#0(+.&ό,+&0
    Joomla! Framework, ό('& 6'. '& +ί&'. έ(0.,0)
Προσοχή: Απαραίτητη η γονική συναίνεση
6'. C /(0.!+.ώ;C% >&ώ/C (C% '>>-.6ή%

!ά#$%&' 2013 – 1& Joomla! Frappé
Convention over Configuration
Convention over configuration in
the Dispatcher

✤   The Dispatcher is your component’s router. It routes the request to the
    appropriate Controller based on conventions:

    ✤   A POST request gets routed to the save task

    ✤   A GET request to a plural view name gets routed to the browse
        task

    ✤   A front-end GET request with an ID gets routed to the read task

    ✤   A back-end GET request with an ID gets routed to the edit task
Convention over configuration in
Models

✤   Tables are named as #__component_view, e.g. #__todo_items

✤   Auto increment field is named component_view_id, e.g. todo_item_id

✤   Magic fields: enabled, created_by, created_on, modified_by,
    modified_on, locked_by, locked_on, hits

✤   You can override defaults without copying & pasting code, ever.
    Copy & paste is the devil!
Convention over configuration in
Controllers

✤   Default tasks (not RESTful!): browse, read, edit, add, delete, save,
    apply, ...

✤   Customize with onBeforeMethod and onAfterMethod methods, e.g.
    onBeforeSave. Don't copy & paste code.

✤   All MVC objects can be passed a $config array to customize them. It
    "flows" from dispatcher to component to model and view.

✤   FOF guesses the task if it's missing based on plural/singular view
    name and existence of ID in the query
Convention over configuration in
Views

✤   Views inherit from FOFView and its specialized children, e.g.
    FOFViewHtml

✤   Customize using the onTask methods, e.g. onBrowse

✤   The toolbar is handled outside the view, in a FOFToolbar descendant
    class. Override it with a toolbar.php file in the component's root.

✤   Magic toolbar methods, e.g. onItemsBrowse allow you to customize
    the toolbar without copying & pasting code.
Epic features
HMVC – Hierarchical MVC



✤   Include the results of component views anywhere (other views, other
    component, modules, ...)

✤   FOFDispatcher::getTmpInstance(‘com_foobar’, ‘items’, array(‘layout’
    => ‘fancy’))->dispatch();
Reuse view templates



✤   Load a view template from another view, component, ...

✤   echo $this->loadAnyTemplate('site:com_foobar/item/form');
Media files overrides



✤   Load media files like this:
    FOFTemplateUtils::addCSS('media://com_foobar/css/frontend.css');

✤   Media overrides are inside the template folder, e.g.
    templates/tpl_example/media/com_foobar/css/frontend.css
Services first – automatic JSON
and CSV views

✤   Just add format=json or format=csv

✤   JSON: You have an instant JSON-based remote API for your
    components

✤   CSV: You can quickly export whatever you see in the backend to
    Excel, Numbers, LibreOffice, Google Docs, etc.

✤   Transparent authentication support using URL parameters or HTTP
    Basic Authentication
XML-based views


✤   It’s JForm on double dose of steroids

✤   Browse, read and edit views from XML templates

✤   You don’t need to write any PHP or HTML, but you can mix
    traditional PHP-based and XML-based templates, even in the same
    view

✤   Overridable with Joomla! template overrides
Resources and community
http://akeeba.info/fof
Over and out.

More Related Content

What's hot

From jQuery to App Store in 30 Minutes
From jQuery to App Store in 30 MinutesFrom jQuery to App Store in 30 Minutes
From jQuery to App Store in 30 Minutesedill3484
 
WordPress&映像配信セミナー+さぶみっと!オフ会 - 第1回 さぶみっと! WEB制作セミナー Supported by NTTスマートコネクト
WordPress&映像配信セミナー+さぶみっと!オフ会 - 第1回 さぶみっと! WEB制作セミナー Supported by NTTスマートコネクトWordPress&映像配信セミナー+さぶみっと!オフ会 - 第1回 さぶみっと! WEB制作セミナー Supported by NTTスマートコネクト
WordPress&映像配信セミナー+さぶみっと!オフ会 - 第1回 さぶみっと! WEB制作セミナー Supported by NTTスマートコネクトHiromichi Koga
 
シックス・アパート・フレームワーク
シックス・アパート・フレームワークシックス・アパート・フレームワーク
シックス・アパート・フレームワークTakatsugu Shigeta
 
Build a Better Editing Experience with Advanced Custom Fields - #WCTO16
Build a Better Editing Experience with Advanced Custom Fields - #WCTO16Build a Better Editing Experience with Advanced Custom Fields - #WCTO16
Build a Better Editing Experience with Advanced Custom Fields - #WCTO16Jeseph Meyers
 
Class 3 create an absolute layout with css abs position (aptana)
Class 3  create an absolute layout with css abs position (aptana)Class 3  create an absolute layout with css abs position (aptana)
Class 3 create an absolute layout with css abs position (aptana)Erin M. Kidwell
 
Script type
Script typeScript type
Script typejjadsan
 
J!Layout Overrides Einstieg und Beispiele
J!Layout Overrides Einstieg und BeispieleJ!Layout Overrides Einstieg und Beispiele
J!Layout Overrides Einstieg und BeispieleNiels Nübel
 
Cornell Presentation
Cornell PresentationCornell Presentation
Cornell Presentationcconradi215
 
i18n for Plugin and Theme Developers, WordCamp Milano 2016
i18n for Plugin and Theme Developers, WordCamp Milano 2016i18n for Plugin and Theme Developers, WordCamp Milano 2016
i18n for Plugin and Theme Developers, WordCamp Milano 2016Sergey Biryukov
 
Joomla Day UK 2009 Menus Presentation
Joomla Day UK 2009 Menus PresentationJoomla Day UK 2009 Menus Presentation
Joomla Day UK 2009 Menus PresentationChris Davenport
 
Conditional Love - Using WordPress Conditional Tags to Write More Effective T...
Conditional Love - Using WordPress Conditional Tags to Write More Effective T...Conditional Love - Using WordPress Conditional Tags to Write More Effective T...
Conditional Love - Using WordPress Conditional Tags to Write More Effective T...Christian Nolen
 
Class 4 handout w css3 using j fiddle
Class 4 handout w css3 using j fiddleClass 4 handout w css3 using j fiddle
Class 4 handout w css3 using j fiddleErin M. Kidwell
 
The Multipack Presents: "Wrestling With Asp.Net And Web Standards" by Anthony...
The Multipack Presents: "Wrestling With Asp.Net And Web Standards" by Anthony...The Multipack Presents: "Wrestling With Asp.Net And Web Standards" by Anthony...
The Multipack Presents: "Wrestling With Asp.Net And Web Standards" by Anthony...Anthony Williams
 
Don’t Panic: How To Troubleshoot Your WordPress Site
Don’t Panic: How To Troubleshoot Your WordPress SiteDon’t Panic: How To Troubleshoot Your WordPress Site
Don’t Panic: How To Troubleshoot Your WordPress SiteWordCamp Sydney
 
Class 4 handout two column layout w mobile web design
Class 4 handout two column layout w mobile web designClass 4 handout two column layout w mobile web design
Class 4 handout two column layout w mobile web designErin M. Kidwell
 
Writing PHP – The WordPress Way! by Rahul Bansal @WordCamp Mumbai 2017
Writing PHP – The WordPress Way! by Rahul Bansal  @WordCamp Mumbai 2017Writing PHP – The WordPress Way! by Rahul Bansal  @WordCamp Mumbai 2017
Writing PHP – The WordPress Way! by Rahul Bansal @WordCamp Mumbai 2017rtCamp
 

What's hot (20)

From jQuery to App Store in 30 Minutes
From jQuery to App Store in 30 MinutesFrom jQuery to App Store in 30 Minutes
From jQuery to App Store in 30 Minutes
 
WordPress&映像配信セミナー+さぶみっと!オフ会 - 第1回 さぶみっと! WEB制作セミナー Supported by NTTスマートコネクト
WordPress&映像配信セミナー+さぶみっと!オフ会 - 第1回 さぶみっと! WEB制作セミナー Supported by NTTスマートコネクトWordPress&映像配信セミナー+さぶみっと!オフ会 - 第1回 さぶみっと! WEB制作セミナー Supported by NTTスマートコネクト
WordPress&映像配信セミナー+さぶみっと!オフ会 - 第1回 さぶみっと! WEB制作セミナー Supported by NTTスマートコネクト
 
シックス・アパート・フレームワーク
シックス・アパート・フレームワークシックス・アパート・フレームワーク
シックス・アパート・フレームワーク
 
Build a Better Editing Experience with Advanced Custom Fields - #WCTO16
Build a Better Editing Experience with Advanced Custom Fields - #WCTO16Build a Better Editing Experience with Advanced Custom Fields - #WCTO16
Build a Better Editing Experience with Advanced Custom Fields - #WCTO16
 
Class 3 create an absolute layout with css abs position (aptana)
Class 3  create an absolute layout with css abs position (aptana)Class 3  create an absolute layout with css abs position (aptana)
Class 3 create an absolute layout with css abs position (aptana)
 
Script type
Script typeScript type
Script type
 
J!Layout Overrides Einstieg und Beispiele
J!Layout Overrides Einstieg und BeispieleJ!Layout Overrides Einstieg und Beispiele
J!Layout Overrides Einstieg und Beispiele
 
Cornell Presentation
Cornell PresentationCornell Presentation
Cornell Presentation
 
i18n for Plugin and Theme Developers, WordCamp Milano 2016
i18n for Plugin and Theme Developers, WordCamp Milano 2016i18n for Plugin and Theme Developers, WordCamp Milano 2016
i18n for Plugin and Theme Developers, WordCamp Milano 2016
 
Joomla Day UK 2009 Menus Presentation
Joomla Day UK 2009 Menus PresentationJoomla Day UK 2009 Menus Presentation
Joomla Day UK 2009 Menus Presentation
 
Conditional Love - Using WordPress Conditional Tags to Write More Effective T...
Conditional Love - Using WordPress Conditional Tags to Write More Effective T...Conditional Love - Using WordPress Conditional Tags to Write More Effective T...
Conditional Love - Using WordPress Conditional Tags to Write More Effective T...
 
Wiidget
WiidgetWiidget
Wiidget
 
Class 4 handout w css3 using j fiddle
Class 4 handout w css3 using j fiddleClass 4 handout w css3 using j fiddle
Class 4 handout w css3 using j fiddle
 
The Multipack Presents: "Wrestling With Asp.Net And Web Standards" by Anthony...
The Multipack Presents: "Wrestling With Asp.Net And Web Standards" by Anthony...The Multipack Presents: "Wrestling With Asp.Net And Web Standards" by Anthony...
The Multipack Presents: "Wrestling With Asp.Net And Web Standards" by Anthony...
 
Don’t Panic: How To Troubleshoot Your WordPress Site
Don’t Panic: How To Troubleshoot Your WordPress SiteDon’t Panic: How To Troubleshoot Your WordPress Site
Don’t Panic: How To Troubleshoot Your WordPress Site
 
Class 4 handout two column layout w mobile web design
Class 4 handout two column layout w mobile web designClass 4 handout two column layout w mobile web design
Class 4 handout two column layout w mobile web design
 
Word Camp Fukuoka2010
Word Camp Fukuoka2010Word Camp Fukuoka2010
Word Camp Fukuoka2010
 
SlideShare Instant
SlideShare InstantSlideShare Instant
SlideShare Instant
 
SlideShare Instant
SlideShare InstantSlideShare Instant
SlideShare Instant
 
Writing PHP – The WordPress Way! by Rahul Bansal @WordCamp Mumbai 2017
Writing PHP – The WordPress Way! by Rahul Bansal  @WordCamp Mumbai 2017Writing PHP – The WordPress Way! by Rahul Bansal  @WordCamp Mumbai 2017
Writing PHP – The WordPress Way! by Rahul Bansal @WordCamp Mumbai 2017
 

Viewers also liked

Using the PicCollage App for Reading Comprehension
Using the PicCollage App for Reading ComprehensionUsing the PicCollage App for Reading Comprehension
Using the PicCollage App for Reading ComprehensionJennifer Jones
 
Game Based Learning for Language Learners
Game Based Learning for Language LearnersGame Based Learning for Language Learners
Game Based Learning for Language LearnersShelly Sanchez Terrell
 
Guided Reading: Making the Most of It
Guided Reading: Making the Most of ItGuided Reading: Making the Most of It
Guided Reading: Making the Most of ItJennifer Jones
 
What Makes Great Infographics
What Makes Great InfographicsWhat Makes Great Infographics
What Makes Great InfographicsSlideShare
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShareKapost
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareEmpowered Presentations
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation OptimizationOneupweb
 
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingHow To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingContent Marketing Institute
 
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...SlideShare
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShareSlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShareSlideShare
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksSlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShareSlideShare
 

Viewers also liked (16)

Using the PicCollage App for Reading Comprehension
Using the PicCollage App for Reading ComprehensionUsing the PicCollage App for Reading Comprehension
Using the PicCollage App for Reading Comprehension
 
VentureWell Open conference presentation March 25 2017 v2 bill copy
VentureWell Open conference presentation March 25 2017 v2 bill copyVentureWell Open conference presentation March 25 2017 v2 bill copy
VentureWell Open conference presentation March 25 2017 v2 bill copy
 
15 Teaching Ideas for 2017
15 Teaching Ideas for 201715 Teaching Ideas for 2017
15 Teaching Ideas for 2017
 
Game Based Learning for Language Learners
Game Based Learning for Language LearnersGame Based Learning for Language Learners
Game Based Learning for Language Learners
 
Guided Reading: Making the Most of It
Guided Reading: Making the Most of ItGuided Reading: Making the Most of It
Guided Reading: Making the Most of It
 
What Makes Great Infographics
What Makes Great InfographicsWhat Makes Great Infographics
What Makes Great Infographics
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShare
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
 
You Suck At PowerPoint!
You Suck At PowerPoint!You Suck At PowerPoint!
You Suck At PowerPoint!
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization
 
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingHow To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
 
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShare
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & Tricks
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 

Similar to Build Joomla Extensions with FOF Framework

Joomla Day UK 2009 Template Design Presentation
Joomla Day UK 2009 Template Design PresentationJoomla Day UK 2009 Template Design Presentation
Joomla Day UK 2009 Template Design PresentationChris Davenport
 
Joomla! Day UK 2009 Template Design
Joomla! Day UK 2009 Template DesignJoomla! Day UK 2009 Template Design
Joomla! Day UK 2009 Template DesignAndy Wallace
 
Flash Templates- Joomla!Days NL 2009 #jd09nl
Flash Templates- Joomla!Days NL 2009 #jd09nlFlash Templates- Joomla!Days NL 2009 #jd09nl
Flash Templates- Joomla!Days NL 2009 #jd09nlJoomla!Days Netherlands
 
Flash templates for Joomla!
Flash templates for Joomla!Flash templates for Joomla!
Flash templates for Joomla!Herman Peeren
 
WordPress Development Confoo 2010
WordPress Development Confoo 2010WordPress Development Confoo 2010
WordPress Development Confoo 2010Brendan Sera-Shriar
 
Mobile Your Joomla Site
Mobile Your Joomla SiteMobile Your Joomla Site
Mobile Your Joomla SiteKyle Ledbetter
 
WordPress 3.0 at DC PHP
WordPress 3.0 at DC PHPWordPress 3.0 at DC PHP
WordPress 3.0 at DC PHPandrewnacin
 
How to learn to build your own PHP framework
How to learn to build your own PHP frameworkHow to learn to build your own PHP framework
How to learn to build your own PHP frameworkDinh Pham
 
Hanoi php day 2008 - 01.pham cong dinh - how.to.build.your.own.framework
Hanoi php day 2008 - 01.pham cong dinh - how.to.build.your.own.frameworkHanoi php day 2008 - 01.pham cong dinh - how.to.build.your.own.framework
Hanoi php day 2008 - 01.pham cong dinh - how.to.build.your.own.frameworkNguyen Duc Phu
 
Building Single Page Application (SPA) with Symfony2 and AngularJS
Building Single Page Application (SPA) with Symfony2 and AngularJSBuilding Single Page Application (SPA) with Symfony2 and AngularJS
Building Single Page Application (SPA) with Symfony2 and AngularJSAntonio Peric-Mazar
 
Rey Bango - HTML5: polyfills and shims
Rey Bango -  HTML5: polyfills and shimsRey Bango -  HTML5: polyfills and shims
Rey Bango - HTML5: polyfills and shimsStarTech Conference
 
How to Develop Your First Ever Joomla Template?
How to Develop Your First Ever Joomla Template?How to Develop Your First Ever Joomla Template?
How to Develop Your First Ever Joomla Template?damienwoods
 
More Secrets of JavaScript Libraries
More Secrets of JavaScript LibrariesMore Secrets of JavaScript Libraries
More Secrets of JavaScript Librariesjeresig
 
Javascript
JavascriptJavascript
Javascripttimsplin
 
jQtouch, Building Awesome Webapps
jQtouch, Building Awesome WebappsjQtouch, Building Awesome Webapps
jQtouch, Building Awesome WebappsHome
 

Similar to Build Joomla Extensions with FOF Framework (20)

Joomla Day UK 2009 Template Design Presentation
Joomla Day UK 2009 Template Design PresentationJoomla Day UK 2009 Template Design Presentation
Joomla Day UK 2009 Template Design Presentation
 
Joomla! Day UK 2009 Template Design
Joomla! Day UK 2009 Template DesignJoomla! Day UK 2009 Template Design
Joomla! Day UK 2009 Template Design
 
Flash Templates- Joomla!Days NL 2009 #jd09nl
Flash Templates- Joomla!Days NL 2009 #jd09nlFlash Templates- Joomla!Days NL 2009 #jd09nl
Flash Templates- Joomla!Days NL 2009 #jd09nl
 
Flash templates for Joomla!
Flash templates for Joomla!Flash templates for Joomla!
Flash templates for Joomla!
 
Taking your Web App for a walk
Taking your Web App for a walkTaking your Web App for a walk
Taking your Web App for a walk
 
Seven deadly theming sins
Seven deadly theming sinsSeven deadly theming sins
Seven deadly theming sins
 
WordPress Development Confoo 2010
WordPress Development Confoo 2010WordPress Development Confoo 2010
WordPress Development Confoo 2010
 
Mobilize Joomla
Mobilize JoomlaMobilize Joomla
Mobilize Joomla
 
Mobile Your Joomla Site
Mobile Your Joomla SiteMobile Your Joomla Site
Mobile Your Joomla Site
 
WordPress 3.0 at DC PHP
WordPress 3.0 at DC PHPWordPress 3.0 at DC PHP
WordPress 3.0 at DC PHP
 
How to learn to build your own PHP framework
How to learn to build your own PHP frameworkHow to learn to build your own PHP framework
How to learn to build your own PHP framework
 
Hanoi php day 2008 - 01.pham cong dinh - how.to.build.your.own.framework
Hanoi php day 2008 - 01.pham cong dinh - how.to.build.your.own.frameworkHanoi php day 2008 - 01.pham cong dinh - how.to.build.your.own.framework
Hanoi php day 2008 - 01.pham cong dinh - how.to.build.your.own.framework
 
Building Single Page Application (SPA) with Symfony2 and AngularJS
Building Single Page Application (SPA) with Symfony2 and AngularJSBuilding Single Page Application (SPA) with Symfony2 and AngularJS
Building Single Page Application (SPA) with Symfony2 and AngularJS
 
Magento++
Magento++Magento++
Magento++
 
Rey Bango - HTML5: polyfills and shims
Rey Bango -  HTML5: polyfills and shimsRey Bango -  HTML5: polyfills and shims
Rey Bango - HTML5: polyfills and shims
 
How to Develop Your First Ever Joomla Template?
How to Develop Your First Ever Joomla Template?How to Develop Your First Ever Joomla Template?
How to Develop Your First Ever Joomla Template?
 
More Secrets of JavaScript Libraries
More Secrets of JavaScript LibrariesMore Secrets of JavaScript Libraries
More Secrets of JavaScript Libraries
 
Javascript
JavascriptJavascript
Javascript
 
Introduce Django
Introduce DjangoIntroduce Django
Introduce Django
 
jQtouch, Building Awesome Webapps
jQtouch, Building Awesome WebappsjQtouch, Building Awesome Webapps
jQtouch, Building Awesome Webapps
 

More from Nicholas Dionysopoulos

Hidden in plain site – joomla! hidden secrets for code monkeys
Hidden in plain site – joomla! hidden secrets for code monkeysHidden in plain site – joomla! hidden secrets for code monkeys
Hidden in plain site – joomla! hidden secrets for code monkeysNicholas Dionysopoulos
 
Rapid application development with FOF
Rapid application development with FOFRapid application development with FOF
Rapid application development with FOFNicholas Dionysopoulos
 
Joomla! Security 101 - Joomla! Day Bosnia and Herzegovina 2013
Joomla! Security 101 - Joomla! Day Bosnia and Herzegovina 2013Joomla! Security 101 - Joomla! Day Bosnia and Herzegovina 2013
Joomla! Security 101 - Joomla! Day Bosnia and Herzegovina 2013Nicholas Dionysopoulos
 
JWC - Rapid application development with FOF
JWC - Rapid application development with FOFJWC - Rapid application development with FOF
JWC - Rapid application development with FOFNicholas Dionysopoulos
 
FOF Rapid Application Development on Joomla! - Joomla! Day Denmark 2012
FOF Rapid Application Development on Joomla! - Joomla! Day Denmark 2012FOF Rapid Application Development on Joomla! - Joomla! Day Denmark 2012
FOF Rapid Application Development on Joomla! - Joomla! Day Denmark 2012Nicholas Dionysopoulos
 
Advanced Akeeba Backup (Joomla! Day Denmark 2012)
Advanced Akeeba Backup (Joomla! Day Denmark 2012)Advanced Akeeba Backup (Joomla! Day Denmark 2012)
Advanced Akeeba Backup (Joomla! Day Denmark 2012)Nicholas Dionysopoulos
 
Joomla! Day Deutschland 2012 - Advanced Akeeba Backup
Joomla! Day Deutschland 2012 - Advanced Akeeba BackupJoomla! Day Deutschland 2012 - Advanced Akeeba Backup
Joomla! Day Deutschland 2012 - Advanced Akeeba BackupNicholas Dionysopoulos
 
Joomla! Day Deutschland 2012 - Active Security
Joomla! Day Deutschland 2012 - Active SecurityJoomla! Day Deutschland 2012 - Active Security
Joomla! Day Deutschland 2012 - Active SecurityNicholas Dionysopoulos
 
Joomla! Day Poland 2012 - Monetize your site with Akeeba Subscriptions
Joomla! Day Poland 2012 - Monetize your site with Akeeba SubscriptionsJoomla! Day Poland 2012 - Monetize your site with Akeeba Subscriptions
Joomla! Day Poland 2012 - Monetize your site with Akeeba SubscriptionsNicholas Dionysopoulos
 
Joomla! Day Poland 2012 - Advanced Akeeba Backup - Beyond just backing up you...
Joomla! Day Poland 2012 - Advanced Akeeba Backup - Beyond just backing up you...Joomla! Day Poland 2012 - Advanced Akeeba Backup - Beyond just backing up you...
Joomla! Day Poland 2012 - Advanced Akeeba Backup - Beyond just backing up you...Nicholas Dionysopoulos
 
Joomla! Day Poland 2012 - Active Security for Joomla! sites
Joomla! Day Poland 2012 - Active Security for Joomla! sitesJoomla! Day Poland 2012 - Active Security for Joomla! sites
Joomla! Day Poland 2012 - Active Security for Joomla! sitesNicholas Dionysopoulos
 

More from Nicholas Dionysopoulos (11)

Hidden in plain site – joomla! hidden secrets for code monkeys
Hidden in plain site – joomla! hidden secrets for code monkeysHidden in plain site – joomla! hidden secrets for code monkeys
Hidden in plain site – joomla! hidden secrets for code monkeys
 
Rapid application development with FOF
Rapid application development with FOFRapid application development with FOF
Rapid application development with FOF
 
Joomla! Security 101 - Joomla! Day Bosnia and Herzegovina 2013
Joomla! Security 101 - Joomla! Day Bosnia and Herzegovina 2013Joomla! Security 101 - Joomla! Day Bosnia and Herzegovina 2013
Joomla! Security 101 - Joomla! Day Bosnia and Herzegovina 2013
 
JWC - Rapid application development with FOF
JWC - Rapid application development with FOFJWC - Rapid application development with FOF
JWC - Rapid application development with FOF
 
FOF Rapid Application Development on Joomla! - Joomla! Day Denmark 2012
FOF Rapid Application Development on Joomla! - Joomla! Day Denmark 2012FOF Rapid Application Development on Joomla! - Joomla! Day Denmark 2012
FOF Rapid Application Development on Joomla! - Joomla! Day Denmark 2012
 
Advanced Akeeba Backup (Joomla! Day Denmark 2012)
Advanced Akeeba Backup (Joomla! Day Denmark 2012)Advanced Akeeba Backup (Joomla! Day Denmark 2012)
Advanced Akeeba Backup (Joomla! Day Denmark 2012)
 
Joomla! Day Deutschland 2012 - Advanced Akeeba Backup
Joomla! Day Deutschland 2012 - Advanced Akeeba BackupJoomla! Day Deutschland 2012 - Advanced Akeeba Backup
Joomla! Day Deutschland 2012 - Advanced Akeeba Backup
 
Joomla! Day Deutschland 2012 - Active Security
Joomla! Day Deutschland 2012 - Active SecurityJoomla! Day Deutschland 2012 - Active Security
Joomla! Day Deutschland 2012 - Active Security
 
Joomla! Day Poland 2012 - Monetize your site with Akeeba Subscriptions
Joomla! Day Poland 2012 - Monetize your site with Akeeba SubscriptionsJoomla! Day Poland 2012 - Monetize your site with Akeeba Subscriptions
Joomla! Day Poland 2012 - Monetize your site with Akeeba Subscriptions
 
Joomla! Day Poland 2012 - Advanced Akeeba Backup - Beyond just backing up you...
Joomla! Day Poland 2012 - Advanced Akeeba Backup - Beyond just backing up you...Joomla! Day Poland 2012 - Advanced Akeeba Backup - Beyond just backing up you...
Joomla! Day Poland 2012 - Advanced Akeeba Backup - Beyond just backing up you...
 
Joomla! Day Poland 2012 - Active Security for Joomla! sites
Joomla! Day Poland 2012 - Active Security for Joomla! sitesJoomla! Day Poland 2012 - Active Security for Joomla! sites
Joomla! Day Poland 2012 - Active Security for Joomla! sites
 

Recently uploaded

costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
"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
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 

Recently uploaded (20)

costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
"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...
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 

Build Joomla Extensions with FOF Framework

  • 1. Ανάπτυξη εφαρμογών για Joomla! !"#ί% &' (#')ά(+ (' ,'--.ά /'% ,+ (0 FOF !ά#$%&' 2013 – 1& Joomla! Frappé
  • 2. Τι είναι αυτό το FOF? !ά#$%&' 2013 – 1& Joomla! Frappé
  • 3. Ναι, ξέρω τι σκέφτεστε “Ό!. 2+έ ,04, ό!., ό!. ά--0 έ&' 6'('#',έ&0 framework!” !ά#$%&' 2013 – 1& Joomla! Frappé
  • 4. Το FOF επεκτείνει το Joomla! framework 7+& (0 '&(.6'8./(ά 9-ή#"% !ά#$%&' 2013 – 1& Joomla! Frappé
  • 5. DRY - Μην Επαναλαμβάνεστε !"#ώ (0 copy/paste (04 ί;.04 6ώ;.6' ='&ά 6'. ='&ά 6'. ='&ά !"# $"%ά !"# $"%ά 6'. ='&ά 6'. ='&ά... !ά#$%&' 2013 – 1& Joomla! Frappé
  • 6. Το λιγότερο είναι περισσότερο Convention over configuration – -.>ό(+#0% !#ό&0%, 6ό90%, 6ώ;.6'% 6'. bugs !ά#$%&' 2013 – 1& Joomla! Frappé
  • 7. Δεν επιβάλλει τον τρόπο σκέψης του 7+& έ!+. ,'ύ#' 604(.ά, '--ά έ!+. 9#0/'#,0@ό,+&' triggers, >+>0&ό(' 9#0/8έ("&... !ά#$%&' 2013 – 1& Joomla! Frappé
  • 8. Παίζει καλά με τ’άλλα παιδιά A4,)'(ό ,+ Joomla! 2.5 6'. 3.0. !ά#$%&' 2013 – 1& Joomla! Frappé
  • 9. Προς τα πίσω συμβατότητα 7+& έ!+. ='B&.6έ%, 60/,0>0&.6έ% '--'>έ% '9’(C ,.' ,έ#' /(C& ά--C !ά#$%&' 2013 – 1& Joomla! Frappé
  • 10. Λίγη ιστορία D"% B(ά/',+ "% +;ώ !ά#$%&' 2013 – 1& Joomla! Frappé
  • 11. Ιούλιος 2009 – Βασικές MVC κλάσεις 7.6έ% ,04 6-ά/+.%, +9+6(+ί&04& (0 JModel 6'. /.', +-'!./(090.0ύ& (0& copy & paste 6ώ;.6' !ά#$%&' 2013 – 1& Joomla! Frappé
  • 12. Σεπτέμβριος 2011 – Γϊναμε κανονικό framework E'/.6ά, (' +ί!' 9ά#+. ,+ έ&' ά--0 framework 904 ,04 έ6'&+ (C& @"ή 9'(ί&. !ά#$%&' 2013 – 1& Joomla! Frappé
  • 13. THIS. IS. NIKEA! (Η Σπάρτη είχε άλλες δουλειές να κάνει) Σεπτέμβριος 2011 – Γϊναμε κανονικό framework E'/.6ά, (' +ί!' 9ά#+. ,+ έ&' ά--0 framework 904 ,04 έ6'&+ (C& @"ή 9'(ί&. !ά#$%&' 2013 – 1& Joomla! Frappé
  • 14. Οκτώβριος 2011 – HMVC +&ώ +ί!' 60--ή/+. ,έ/' /(0 '+#09-ά&0, /(0 έ;'B0%, /(0 F-. E+&.@έ-0% >.' 4 ώ#+% !ά#$%&' 2013 – 1& Joomla! Frappé
  • 15. Μάιος 2012 – Δημόσια έκδοση /(0 /4&έ;#.0 J and Beyond 2012 !ά#$%&' 2013 – 1& Joomla! Frappé
  • 16. Ιούνιος 2012 – Bootstrap & jQuery A(0 9#0'.#+(.6ό 9'6έ(0 Akeeba Strapper !ά#$%&' 2013 – 1& Joomla! Frappé
  • 17. Φεβρουάριος 2013 – η έκδοση 2.0 ΔΕΝ μπήκε στο Joomla! 3 (0 090ί0, (+-.6ά, +ί&'. 6ά(. 6'-ό! !ά#$%&' 2013 – 1& Joomla! Frappé
  • 18. Στο μυαλό μιας εφαρμογής σε FOF G.' +9ί/6+HC /(0 ό#0B0 71/2 +&ό% 6(.#ί04 >#'B+ί"& /(0 G'&!ά('& !ά#$%&' 2013 – 1& Joomla! Frappé
  • 19. Μερικές γενικές σκέψεις ✤ A!+;ό% RESTful, '--ά ό!. 6'. (ό/0 ✤ D#0/έ>>./C “9#ώ(' 0. 49C#+/ί+%”. F&/",'(",έ&C 490/(ή#.=C JSON 6'. ;.'B'&ή% '48+&(.6090ίC/C 904 '&0ί>+. (C& 9ό#(' >.' 9'#0!ή ;+;0,έ&"& /+ +B'#,0>έ% (web, desktop, mobile 6'. ;+& /4,,'@+ύ+('.) ✤ Ό!., (0 OAuth ;+& 490/(C#ί@+('. ('6ό,';). G.' ;.6.ά ,'% )'/./,έ&C /+ TOTP 6'. AES-256 ,έ80;0% ;.'B'&0ύ% '48+&(.6090ίC/C% 6'. (0 '9-ό HTTP Basic Authentication 490/(C#ί@0&('. ή;C. ✤ D'#έ!04,+ HMVC #ή&'() !"#ί% &' !#+.'/(+ί &' ='&',ά8+(+ &' B(.ά!&+(+ +B'#,0>έ% /+ Joomla! (/+ '&(ί8+/C ,+ (0 9#0(+.&ό,+&0 Joomla! Framework, ό('& 6'. '& +ί&'. έ(0.,0)
  • 20. Προσοχή: Απαραίτητη η γονική συναίνεση 6'. C /(0.!+.ώ;C% >&ώ/C (C% '>>-.6ή% !ά#$%&' 2013 – 1& Joomla! Frappé
  • 22. Convention over configuration in the Dispatcher ✤ The Dispatcher is your component’s router. It routes the request to the appropriate Controller based on conventions: ✤ A POST request gets routed to the save task ✤ A GET request to a plural view name gets routed to the browse task ✤ A front-end GET request with an ID gets routed to the read task ✤ A back-end GET request with an ID gets routed to the edit task
  • 23. Convention over configuration in Models ✤ Tables are named as #__component_view, e.g. #__todo_items ✤ Auto increment field is named component_view_id, e.g. todo_item_id ✤ Magic fields: enabled, created_by, created_on, modified_by, modified_on, locked_by, locked_on, hits ✤ You can override defaults without copying & pasting code, ever. Copy & paste is the devil!
  • 24. Convention over configuration in Controllers ✤ Default tasks (not RESTful!): browse, read, edit, add, delete, save, apply, ... ✤ Customize with onBeforeMethod and onAfterMethod methods, e.g. onBeforeSave. Don't copy & paste code. ✤ All MVC objects can be passed a $config array to customize them. It "flows" from dispatcher to component to model and view. ✤ FOF guesses the task if it's missing based on plural/singular view name and existence of ID in the query
  • 25. Convention over configuration in Views ✤ Views inherit from FOFView and its specialized children, e.g. FOFViewHtml ✤ Customize using the onTask methods, e.g. onBrowse ✤ The toolbar is handled outside the view, in a FOFToolbar descendant class. Override it with a toolbar.php file in the component's root. ✤ Magic toolbar methods, e.g. onItemsBrowse allow you to customize the toolbar without copying & pasting code.
  • 27. HMVC – Hierarchical MVC ✤ Include the results of component views anywhere (other views, other component, modules, ...) ✤ FOFDispatcher::getTmpInstance(‘com_foobar’, ‘items’, array(‘layout’ => ‘fancy’))->dispatch();
  • 28. Reuse view templates ✤ Load a view template from another view, component, ... ✤ echo $this->loadAnyTemplate('site:com_foobar/item/form');
  • 29. Media files overrides ✤ Load media files like this: FOFTemplateUtils::addCSS('media://com_foobar/css/frontend.css'); ✤ Media overrides are inside the template folder, e.g. templates/tpl_example/media/com_foobar/css/frontend.css
  • 30. Services first – automatic JSON and CSV views ✤ Just add format=json or format=csv ✤ JSON: You have an instant JSON-based remote API for your components ✤ CSV: You can quickly export whatever you see in the backend to Excel, Numbers, LibreOffice, Google Docs, etc. ✤ Transparent authentication support using URL parameters or HTTP Basic Authentication
  • 31. XML-based views ✤ It’s JForm on double dose of steroids ✤ Browse, read and edit views from XML templates ✤ You don’t need to write any PHP or HTML, but you can mix traditional PHP-based and XML-based templates, even in the same view ✤ Overridable with Joomla! template overrides