SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Joomla!
               Components
                        (Uma Visão Geral)



René Muniz
Desenvolvedor Joomla!
Fábrica Livre
Por que?
Conceitos

• PHP (Doh!)
• OOP (Programação Orientada a Objetos)
• MVC (Model-View-Controller)
• Joomla! Framework
Programação Orientada
   a Objetos (OOP)
Objeto
class StarFighter
  {
              public $size;
              public $color;
              public $wings;
              public $droid;
              public $guns = array();

             function accelerate() {
                 /* Procedure to accelerate here */
             }

             function shoot() {
                 /* Procedure to shoot something here */
             }
  }

  $XWing         = new StarFighter();
  $XWing->size   = "2.2 metters";
  $XWing->color
 = "#FFFFFF";
  $XWing->wings
 = "4";
  $XWing->droid
 = "1";
  $XWing->guns
  = array("regular" => 4, "bomb" => 1);




Classe StarFighter
Model-View-Controller
Modelo == Objeto
View == Interface
Controller == Regras
Joomla! Framework
Joomla!
Joomla’s API   (http://api.joomla.org)

JFactory, JRoute, JText, JVersion, JApplication, JApplicationHelper, JComponentHelper, JController, JMenu,
JModel, JModuleHelper, JPathway, JRouter, JView, JObject, JObservable, JObserver, JTree, JNode, JCache,
JCacheCallback, JCacheOutput, JCachePage, JCacheStorage, JCacheStorageApc, JCacheStorageEaccelerator,
JCacheStorageFile, JCacheStorageMemcache, JCacheStorageXCache, JCacheView, JClientHelper, JFTP,
JLDAP, JDatabase, JDatabaseMySQL, JDatabaseMySQLi, JRecordSet, JTable, JTableARO, JTableAROGroup,
JTableCategory, JTableComponent, JTableContent, JTableMenu, JTableMenuTypes, JTableModule,
JTablePlugin, JTableSection, JTableSession, JTableUser, JDocument, JDocumentError, JDocumentFeed,
JDocumentHTML, 
 JDocumentPDF, JDocumentRaw, JDocumentRenderer, JDocumentRendererAtom,
JDocumentRendererComponent, JDocumentRendererHead, 
 J D o c u m e n t R e n d e r e r M e s s a g e ,
JDocumentRendererModule, JDocumentRendererModules, JDocumentRendererRSS, JBrowser, JRequest,
JResponse, JURI, JError, JException, JLog, JProfiler, JDispatcher, JEvent, JArchive, JArchiveBzip2, JArchiveGzip,
JArchiveTar, JArchiveZip, JFile, JFolder, JPath, JFilterInput, JFilterOutput, JButton, JButtonConfirm,
JButtonCustom, JButtonHelp, JButtonLink, JButtonPopup, JButtonSeparator, JButtonStandard, JEditor,
JElement, JElementCalendar, JElementCategory, JElementEditors, JElementFileList, JElementFolderList,
JElementHelpsites, JElementHidden, JElementImageList, JElementLanguages, JElementList, JElementMenu,
JElementMenuItem, JElementPassword, JElementRadio, JElementSection, JElementSpacer, JElementSQL,
JElementText, JElementTextarea, JElementTimezones, JElementUserGroup, JHtml, JHtmlBehavior,
JHtmlContent, JHtmlEmail, JHtmlForm, JHtmlGrid, JHtmlImage, JHtmlList, JHtmlMenu, JHtmlSelect,
JPagination, JPane, JParameter, JToolBar, JInstaller, JInstallerComponent, JInstallerHelper, JInstallerLanguage,
JInstallerModule, JInstallerPlugin, JInstallerTemplate, JHelp, JLanguageHelper, JLanguage, JMailHelper, JMail,
JPluginHelper, JPlugin, JRegistry, JRegistryFormat, JRegistryFormatINI, JRegistryFormatPHP,
JRegistryFormatXML, JSession, JSessionStorage, JSessionStorageApc, JSessionStorageDatabase,
JSessionStorageEaccelerator, JSessionStorageMemcache, JSessionStorageNone, JSessionStorageXcache,
JAuthentication, JAuthorization, JUserHelper, JUser, JArrayHelper, JBuffer, JDate, JSimpleCrypt, JSimpleXML,
JSimpleXMLElement, JString, JUtility
Getting Started
     Hello World!
Criando um componente
         Para um componente básico
          são necessários 5 arquivos

 • site/hello.php
 • site/controller.php
 • site/views/hello/view.html.php
 • site/views/hello/tmpl/default.php
 • hello.xml
index.php?option=com_hello&view=hello
      /**
 *   @package    Joomla.Tutorials
 *   @subpackage Components
 *   components/com_hello/hello.php
 *   @link http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_1
 *   @license    GNU/GPL
*/

// No direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

// Require the base controller

require_once( JPATH_COMPONENT.DS.'controller.php' );

// Require specific controller if requested
if($controller = JRequest::getWord('controller')) {
    $path = JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php';
    if (file_exists($path)) {
        require_once $path;
    } else {
        $controller = '';
    }
}

// Create the controller
$classname    = 'HelloController'.$controller;
$controller   = new $classname( );

// Perform the Request task
$controller->execute( JRequest::getVar( 'task' ) );

// Redirect if set by the controller
$controller->redirect();


site/hello.php
/**
*    @package    Joomla.Tutorials
*    @subpackage Components
*    @link http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_1
*    @license    GNU/GPL
*/

// No direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport('joomla.application.component.controller');

/**
  * Hello World Component Controller
  *
  * @package     Joomla.Tutorials
  * @subpackage Components
  */
class HelloController extends JController
{
     /**
       * Method to display the view
       *
       * @access    public
       */
     function display()
     {
          parent::display();
     }
}

site/controller.php
/**
 *   @package    Joomla.Tutorials
 *   @subpackage Components
 *   @link http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_1
 *   @license    GNU/GPL
*/

// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.application.component.view' );

/**
  * HTML View class for the HelloWorld Component
  *
  * @package HelloWorld
  */
class HelloViewHello extends JView
{
     function display($tpl = null)
     {
         $greeting = "Hello World!";
         $this->assignRef( 'greeting', $greeting );

          parent::display($tpl);
     }
}



site/views/hello/view.html.php
<?php
             // No direct access
             defined( '_JEXEC' ) or die( 'Restricted access' );
             ?>

             <h1><?php echo $this->greeting; ?></h1>




site/views/hello/tmpl/default.php
<?xml version="1.0" encoding="utf-8"?>
<install type="component" version="1.5.0">
 <name>Hello</name>
 <!-- The following elements are optional and free of formatting constraints -->
 <creationDate>2007-02-22</creationDate>
 <author>John Doe</author>
 <authorEmail>john.doe@example.org</authorEmail>
 <authorUrl>http://www.example.org</authorUrl>
 <copyright>Copyright Info</copyright>
 <license>License Info</license>
 <!-- The version string is recorded in the components table -->
 <version>1.01</version>
 <!-- The description is optional and defaults to the name -->
 <description>Description of the component ...</description>

 <!-- Site Main File Copy Section -->
 <!-- Note the folder attribute: This attribute describes the folder
      to copy FROM in the package to install therefore files copied
      in this section are copied from /site/ in the package -->
 <files folder="site">
  <filename>controller.php</filename>
  <filename>hello.php</filename>
  <filename>index.html</filename>
  <filename>views/index.html</filename>
  <filename>views/hello/index.html</filename>
  <filename>views/hello/view.html.php</filename>
  <filename>views/hello/tmpl/default.php</filename>
  <filename>views/hello/tmpl/index.html</filename>
 </files>
</install>

site/views/hello/tmpl/default.php
Perguntas?
             rene.muniz@fabricalivre.com.br




http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_1

Mais conteúdo relacionado

Mais procurados

Система рендеринга в Magento
Система рендеринга в MagentoСистема рендеринга в Magento
Система рендеринга в Magento
Magecom Ukraine
 
Gravity Forms Hooks & Filters
Gravity Forms Hooks & FiltersGravity Forms Hooks & Filters
Gravity Forms Hooks & Filters
iamdangavin
 
The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010
Fabien Potencier
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011
Chris Alfano
 
Beginning PHPUnit
Beginning PHPUnitBeginning PHPUnit
Beginning PHPUnit
Jace Ju
 
Zf2 how arrays will save your project
Zf2   how arrays will save your projectZf2   how arrays will save your project
Zf2 how arrays will save your project
Michelangelo van Dam
 

Mais procurados (20)

Workshop quality assurance for php projects - ZendCon 2013
Workshop quality assurance for php projects - ZendCon 2013Workshop quality assurance for php projects - ZendCon 2013
Workshop quality assurance for php projects - ZendCon 2013
 
Mocking Dependencies in PHPUnit
Mocking Dependencies in PHPUnitMocking Dependencies in PHPUnit
Mocking Dependencies in PHPUnit
 
Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12
 
PhpBB meets Symfony2
PhpBB meets Symfony2PhpBB meets Symfony2
PhpBB meets Symfony2
 
Functional Structures in PHP
Functional Structures in PHPFunctional Structures in PHP
Functional Structures in PHP
 
Unit testing with zend framework PHPBenelux
Unit testing with zend framework PHPBeneluxUnit testing with zend framework PHPBenelux
Unit testing with zend framework PHPBenelux
 
Система рендеринга в Magento
Система рендеринга в MagentoСистема рендеринга в Magento
Система рендеринга в Magento
 
Gravity Forms Hooks & Filters
Gravity Forms Hooks & FiltersGravity Forms Hooks & Filters
Gravity Forms Hooks & Filters
 
The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010
 
Symfony2 - OSIDays 2010
Symfony2 - OSIDays 2010Symfony2 - OSIDays 2010
Symfony2 - OSIDays 2010
 
Unit testing with zend framework tek11
Unit testing with zend framework tek11Unit testing with zend framework tek11
Unit testing with zend framework tek11
 
PHP MVC
PHP MVCPHP MVC
PHP MVC
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011
 
Facelets
FaceletsFacelets
Facelets
 
Symfony2 and AngularJS
Symfony2 and AngularJSSymfony2 and AngularJS
Symfony2 and AngularJS
 
Beginning PHPUnit
Beginning PHPUnitBeginning PHPUnit
Beginning PHPUnit
 
Curso Symfony - Clase 4
Curso Symfony - Clase 4Curso Symfony - Clase 4
Curso Symfony - Clase 4
 
Zf2 how arrays will save your project
Zf2   how arrays will save your projectZf2   how arrays will save your project
Zf2 how arrays will save your project
 
Zend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_ToolZend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_Tool
 
Intermediate SQL with Ecto - LoneStar ElixirConf 2018
Intermediate SQL with Ecto - LoneStar ElixirConf 2018Intermediate SQL with Ecto - LoneStar ElixirConf 2018
Intermediate SQL with Ecto - LoneStar ElixirConf 2018
 

Semelhante a Joomla! Components - Uma visão geral

symfony on action - WebTech 207
symfony on action - WebTech 207symfony on action - WebTech 207
symfony on action - WebTech 207
patter
 
Javascript Frameworks for Joomla
Javascript Frameworks for JoomlaJavascript Frameworks for Joomla
Javascript Frameworks for Joomla
Luke Summerfield
 
Corephpcomponentpresentation 1211425966721657-8
Corephpcomponentpresentation 1211425966721657-8Corephpcomponentpresentation 1211425966721657-8
Corephpcomponentpresentation 1211425966721657-8
PrinceGuru MS
 

Semelhante a Joomla! Components - Uma visão geral (20)

symfony on action - WebTech 207
symfony on action - WebTech 207symfony on action - WebTech 207
symfony on action - WebTech 207
 
Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8
 
Prototype & jQuery
Prototype & jQueryPrototype & jQuery
Prototype & jQuery
 
Frontin like-a-backer
Frontin like-a-backerFrontin like-a-backer
Frontin like-a-backer
 
Beyond DOMReady: Ultra High-Performance Javascript
Beyond DOMReady: Ultra High-Performance JavascriptBeyond DOMReady: Ultra High-Performance Javascript
Beyond DOMReady: Ultra High-Performance Javascript
 
Wt unit 2 ppts client sied technology
Wt unit 2 ppts client sied technologyWt unit 2 ppts client sied technology
Wt unit 2 ppts client sied technology
 
Wt unit 2 ppts client side technology
Wt unit 2 ppts client side technologyWt unit 2 ppts client side technology
Wt unit 2 ppts client side technology
 
From CakePHP to Laravel
From CakePHP to LaravelFrom CakePHP to Laravel
From CakePHP to Laravel
 
Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014
 
Javascript Frameworks for Joomla
Javascript Frameworks for JoomlaJavascript Frameworks for Joomla
Javascript Frameworks for Joomla
 
Introduction to Zend Framework
Introduction to Zend FrameworkIntroduction to Zend Framework
Introduction to Zend Framework
 
前端概述
前端概述前端概述
前端概述
 
Core Php Component Presentation
Core Php Component PresentationCore Php Component Presentation
Core Php Component Presentation
 
Corephpcomponentpresentation 1211425966721657-8
Corephpcomponentpresentation 1211425966721657-8Corephpcomponentpresentation 1211425966721657-8
Corephpcomponentpresentation 1211425966721657-8
 
Fighting Fear-Driven-Development With PHPUnit
Fighting Fear-Driven-Development With PHPUnitFighting Fear-Driven-Development With PHPUnit
Fighting Fear-Driven-Development With PHPUnit
 
Living With Legacy Code
Living With Legacy CodeLiving With Legacy Code
Living With Legacy Code
 
What do you mean it needs to be Java based? How jython saved the day.
What do you mean it needs to be Java based? How jython saved the day.What do you mean it needs to be Java based? How jython saved the day.
What do you mean it needs to be Java based? How jython saved the day.
 
Ditching JQuery
Ditching JQueryDitching JQuery
Ditching JQuery
 
jQuery Basic API
jQuery Basic APIjQuery Basic API
jQuery Basic API
 
J query training
J query trainingJ query training
J query training
 

Último

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
 

Último (20)

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
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
 
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
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
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
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 

Joomla! Components - Uma visão geral

  • 1. Joomla! Components (Uma Visão Geral) René Muniz Desenvolvedor Joomla! Fábrica Livre
  • 3. Conceitos • PHP (Doh!) • OOP (Programação Orientada a Objetos) • MVC (Model-View-Controller) • Joomla! Framework
  • 4. Programação Orientada a Objetos (OOP)
  • 6. class StarFighter { public $size; public $color; public $wings; public $droid; public $guns = array(); function accelerate() { /* Procedure to accelerate here */ } function shoot() { /* Procedure to shoot something here */ } } $XWing = new StarFighter(); $XWing->size = "2.2 metters"; $XWing->color = "#FFFFFF"; $XWing->wings = "4"; $XWing->droid = "1"; $XWing->guns = array("regular" => 4, "bomb" => 1); Classe StarFighter
  • 13. Joomla’s API (http://api.joomla.org) JFactory, JRoute, JText, JVersion, JApplication, JApplicationHelper, JComponentHelper, JController, JMenu, JModel, JModuleHelper, JPathway, JRouter, JView, JObject, JObservable, JObserver, JTree, JNode, JCache, JCacheCallback, JCacheOutput, JCachePage, JCacheStorage, JCacheStorageApc, JCacheStorageEaccelerator, JCacheStorageFile, JCacheStorageMemcache, JCacheStorageXCache, JCacheView, JClientHelper, JFTP, JLDAP, JDatabase, JDatabaseMySQL, JDatabaseMySQLi, JRecordSet, JTable, JTableARO, JTableAROGroup, JTableCategory, JTableComponent, JTableContent, JTableMenu, JTableMenuTypes, JTableModule, JTablePlugin, JTableSection, JTableSession, JTableUser, JDocument, JDocumentError, JDocumentFeed, JDocumentHTML, JDocumentPDF, JDocumentRaw, JDocumentRenderer, JDocumentRendererAtom, JDocumentRendererComponent, JDocumentRendererHead, J D o c u m e n t R e n d e r e r M e s s a g e , JDocumentRendererModule, JDocumentRendererModules, JDocumentRendererRSS, JBrowser, JRequest, JResponse, JURI, JError, JException, JLog, JProfiler, JDispatcher, JEvent, JArchive, JArchiveBzip2, JArchiveGzip, JArchiveTar, JArchiveZip, JFile, JFolder, JPath, JFilterInput, JFilterOutput, JButton, JButtonConfirm, JButtonCustom, JButtonHelp, JButtonLink, JButtonPopup, JButtonSeparator, JButtonStandard, JEditor, JElement, JElementCalendar, JElementCategory, JElementEditors, JElementFileList, JElementFolderList, JElementHelpsites, JElementHidden, JElementImageList, JElementLanguages, JElementList, JElementMenu, JElementMenuItem, JElementPassword, JElementRadio, JElementSection, JElementSpacer, JElementSQL, JElementText, JElementTextarea, JElementTimezones, JElementUserGroup, JHtml, JHtmlBehavior, JHtmlContent, JHtmlEmail, JHtmlForm, JHtmlGrid, JHtmlImage, JHtmlList, JHtmlMenu, JHtmlSelect, JPagination, JPane, JParameter, JToolBar, JInstaller, JInstallerComponent, JInstallerHelper, JInstallerLanguage, JInstallerModule, JInstallerPlugin, JInstallerTemplate, JHelp, JLanguageHelper, JLanguage, JMailHelper, JMail, JPluginHelper, JPlugin, JRegistry, JRegistryFormat, JRegistryFormatINI, JRegistryFormatPHP, JRegistryFormatXML, JSession, JSessionStorage, JSessionStorageApc, JSessionStorageDatabase, JSessionStorageEaccelerator, JSessionStorageMemcache, JSessionStorageNone, JSessionStorageXcache, JAuthentication, JAuthorization, JUserHelper, JUser, JArrayHelper, JBuffer, JDate, JSimpleCrypt, JSimpleXML, JSimpleXMLElement, JString, JUtility
  • 14. Getting Started Hello World!
  • 15. Criando um componente Para um componente básico são necessários 5 arquivos • site/hello.php • site/controller.php • site/views/hello/view.html.php • site/views/hello/tmpl/default.php • hello.xml
  • 16. index.php?option=com_hello&view=hello /** * @package Joomla.Tutorials * @subpackage Components * components/com_hello/hello.php * @link http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_1 * @license GNU/GPL */ // No direct access defined( '_JEXEC' ) or die( 'Restricted access' ); // Require the base controller require_once( JPATH_COMPONENT.DS.'controller.php' ); // Require specific controller if requested if($controller = JRequest::getWord('controller')) { $path = JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php'; if (file_exists($path)) { require_once $path; } else { $controller = ''; } } // Create the controller $classname = 'HelloController'.$controller; $controller = new $classname( ); // Perform the Request task $controller->execute( JRequest::getVar( 'task' ) ); // Redirect if set by the controller $controller->redirect(); site/hello.php
  • 17. /** * @package Joomla.Tutorials * @subpackage Components * @link http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_1 * @license GNU/GPL */ // No direct access defined( '_JEXEC' ) or die( 'Restricted access' ); jimport('joomla.application.component.controller'); /** * Hello World Component Controller * * @package Joomla.Tutorials * @subpackage Components */ class HelloController extends JController { /** * Method to display the view * * @access public */ function display() { parent::display(); } } site/controller.php
  • 18. /** * @package Joomla.Tutorials * @subpackage Components * @link http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_1 * @license GNU/GPL */ // no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); jimport( 'joomla.application.component.view' ); /** * HTML View class for the HelloWorld Component * * @package HelloWorld */ class HelloViewHello extends JView { function display($tpl = null) { $greeting = "Hello World!"; $this->assignRef( 'greeting', $greeting ); parent::display($tpl); } } site/views/hello/view.html.php
  • 19. <?php // No direct access defined( '_JEXEC' ) or die( 'Restricted access' ); ?> <h1><?php echo $this->greeting; ?></h1> site/views/hello/tmpl/default.php
  • 20. <?xml version="1.0" encoding="utf-8"?> <install type="component" version="1.5.0"> <name>Hello</name> <!-- The following elements are optional and free of formatting constraints --> <creationDate>2007-02-22</creationDate> <author>John Doe</author> <authorEmail>john.doe@example.org</authorEmail> <authorUrl>http://www.example.org</authorUrl> <copyright>Copyright Info</copyright> <license>License Info</license> <!-- The version string is recorded in the components table --> <version>1.01</version> <!-- The description is optional and defaults to the name --> <description>Description of the component ...</description> <!-- Site Main File Copy Section --> <!-- Note the folder attribute: This attribute describes the folder to copy FROM in the package to install therefore files copied in this section are copied from /site/ in the package --> <files folder="site"> <filename>controller.php</filename> <filename>hello.php</filename> <filename>index.html</filename> <filename>views/index.html</filename> <filename>views/hello/index.html</filename> <filename>views/hello/view.html.php</filename> <filename>views/hello/tmpl/default.php</filename> <filename>views/hello/tmpl/index.html</filename> </files> </install> site/views/hello/tmpl/default.php
  • 21. Perguntas? rene.muniz@fabricalivre.com.br http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_1