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

シックス・アパート・フレームワーク
シックス・アパート・フレームワークシックス・アパート・フレームワーク
シックス・アパート・フレームワーク
Takatsugu Shigeta
 
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 type
jjadsan
 
Cornell Presentation
Cornell PresentationCornell Presentation
Cornell Presentation
cconradi215
 
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
Erin M. Kidwell
 
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
Erin M. Kidwell
 

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

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
 

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 Joomla! Frappe - Κατασκευή εφαρμογών για το Joomla! χωρίς να τραβάτε τα μαλιά σας με το FOF

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
Nguyen Duc Phu
 
Rey Bango - HTML5: polyfills and shims
Rey Bango -  HTML5: polyfills and shimsRey Bango -  HTML5: polyfills and shims
Rey Bango - HTML5: polyfills and shims
StarTech Conference
 
Javascript
JavascriptJavascript
Javascript
timsplin
 
jQtouch, Building Awesome Webapps
jQtouch, Building Awesome WebappsjQtouch, Building Awesome Webapps
jQtouch, Building Awesome Webapps
Home
 

Similar to Joomla! Frappe - Κατασκευή εφαρμογών για το Joomla! χωρίς να τραβάτε τα μαλιά σας με το FOF (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

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
Nicholas 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! sites
Nicholas 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

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Recently uploaded (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

Joomla! Frappe - Κατασκευή εφαρμογών για το Joomla! χωρίς να τραβάτε τα μαλιά σας με το FOF

  • 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