dev con joomla componentes modulos plugins

Download Dev con Joomla componentes modulos plugins

If you can't read please download the document

Upload: ousli07

Post on 12-Jun-2015

3.323 views

Category:

Technology


7 download

DESCRIPTION

Como crear modulos e plugins para joomla

TRANSCRIPT

  • 1. Desenvolvemento en Joomla! 1.5 Toms Vilario Fidalgo II Xornadas de Programacin Web en Software Libre Ourense, 24 de Xuo de 2008

2. Contidos

  • Introducin
  • Instalacin, configuracin e posta en funcionamento
  • Arquitectura de Joomla! 1.5
    • Languages
    • Templates
    • Modules
    • Plugins
    • Components
  • API Base de datos
  • Integracin con outros frameworks
  • Referencias e conclusins

3. Introducin 4. Introducin

  • Joomla! un CMS desenvolvido en PHP baixo GNU/GPL. o resultado dunha bifurcacin e mellora de Mambo (Mambo 4.5.2.3).
  • O nome de Joomla! vn da palabra suajilijumlaque significa " todos xuntos " ou " como un todo ".
  • A primeira versin de Joomla! (Joomla! 1.0.0) publicouse 16 de setembro de 2005.
  • Actualmente est dispoible a versin Joomla! 1.5.3 construda baixo PHP 5.2

5. Introducin

  • Joomla un CMS moi flexible, en parte grazas ao fcil que resulta desenvolverextensins(compoentes, plugins, modules) .
  • As extensins sern o mecanismo co que conta Joomla! 1.5 para dotarse de maiores funcionalidades e contrarrestar as sas deficiencias (multi idioma, multi sitio, xestin de usuarios limitadas, ...).
  • Isto propicia a aparicin dunha gran comunidade de desenvolvedores que xera unha gran cantidade de extensins.

6. Introducin

  • A tendencia de Joomla! comparada con Drupal e TYPO3 en Google Trends
    • Joomla! 1.0 publicouse o 16 de setembro 2005

7.

  • O desenvolvemento de extensins de Joomla! evolucionou coa aparicin da nova versin 1.5
  • Creouse un potenteframeworke potenciouse o aspecto dePOOaproveitando as vantaxes de PHP 5.
  • Olvidmonos de PHP4:
    • http://gophp5.org/

Introducin 8. Instalacin 9. Instalacin

  • Requisitos (recomendados):
    • GNU/Linux
    • Apache 2.x
    • PHP 5.x
    • MySQL 5.x

http://joomlacode.org/gf/project/joomla/frs/?action=FrsReleaseBrowse&frs_package_id=3587

  • Descargar Joomla! 1.5 dende:

10. Instalacin

      • Antes de comezar a instalacin recomendable crear a base de datos:
  • $ mysqladmin u db_user p create joomla dende lia de comandos
  • ou dende phpmyadmin

11. Instalacin

      • O asistente de instalacin deJoomla componse de sete pasos:
  • Escoller o idioma do instalador
  • Chequeo de pre-instalacin
  • Licenza
  • Configuracin da base de datos
  • Configuracin do FTP
  • Outras configuracins
  • Finalizar

12. Instalacin

      • Paso 1: seleccin do idioma

13. Instalacin

      • Paso 2: revisin previa

14. Instalacin

      • Paso 3: licenza

15. Instalacin

      • Paso 4: configuracin da base de datos

16. Instalacin

      • Paso 5: configuracin do servidor FTP

17. Instalacin

      • Paso 6: configuracin principal

18. Instalacin

  • Ao finalizar a instalacinrecomndase obrgannosa eliminar o directorio de instalacin para poder comezar a traballar
  • Despois de eliminar o directorio de instalacin xa podemos traballar co Site ou Admin

19. Arquitectura 20.

  • O site de Joomla 1.5(Frontend/Principal/Sitio)

Arquitectura 21.

  • O administrator de Joomla 1.5(Backend/Administracin)

Arquitectura 22.

  • Estrutura de directorios separadas
    • parte de administracin(Administrator, Backend, administracin, ...)
    • parte pblica(Site, Frontend, frontal, ...)
  • Parte de administracin e pblica teen similitudes
  • Comparten o cartafol /libraries/
  • O funcionamento interno da administracin similar ao da parte pblica

http://localhost/joomla/administrator/index.php?option= com_conten t&task= add Arquitectura 23. 24. Arquitectura

  • Joomla 1.5 esta composto de mdulos, compoentes e plugins. ( Tamn poderamos considerar aostemplatese aosficheiros de idiomaextensins de Joomla!)
  • Osmdulo sson pequenos anacos de contido como pode ser un men,isto un modulo:
  • Ocompoente onde se mostra o contido principal en Joomla! (miniaplicacin)->s se executa un por peticin, o que se especifica no parmetrooption
  • Osplugin sresponden a eventos do sistema(login de usuarios, ao mostrar contidos, cando se autentican, ... )

25. Arquitectura 26.

  • A parte das extensins includas en Joomla! posible extender as funcionalidades por medio de novas extensins
  • As extensins instalaranse dende o administrador de extensins (no backend, obvio :-)

Arquitectura 27.

  • Component
  • Module
  • Plugin
  • Language
  • Tool : aplicacins externas que permiten xestionar ou facilitar o traballo dun sitio Joomla!
  • Special : extensin especficas que requiren doutras extensins para o seu funcionamento.
  • http://extensions.joomla.org

Arquitectura Onde atopar extensins para Joomla! ? 28. Arquitectura Joomla! est deseado a partires dun framework(agora todo son frameworks: CakePHP, Django, Ruby on Rails, FLOW3, ...;-) 29. Languages 30. Languages

  • Joomla! permite importar paquetes de idioma tendo traducida a interface do sitio ( site )e/ou administracin ( administrator ).
  • Entre as configuracins de Joomla! posible activar a depuracin de cadeas de idioma(Configuracin global | Sistema) .
  • Paquetes de idioma galego:
    • https://forxa.mancomun.org/projects/joomlagalego/
  • En casteln:
    • http://www.todosjuntos.org/content/view/55/1/

31. No xestor de idiomas establcese o idioma por defecto.Para ter un sitio con soporte multi idioma hai que botar man da extensin JoomFish:http://www.joomfish.net/ Languages 32. Na configuracin global habiltase a depuracin da lingua Languages 33. Na configuracin global habilitando o modo de depuracin obtemos informacin dos ficheiros de idioma cargados, cadeas sen traducin, consultas realizadas a base de datos, ... Languages 34.

  • Formato dun ficheiro de idioma INI (p.e.: /language/gl-ES/gl-ES.com_content.ini)
    • ACCESS LEVEL=Nivel de Acceso
    • ADD=Agregar
    • ALIGN=Aliar
    • ALL PAGES=Todas as pxinas
    • ALT TEXT=Texto alternativo
    • ALREADY EXISTS=Xa existe
    • ...
  • API para empregar a traducin

Languages 35.

  • $ mv en-GB.ini en-GB.properties
  • $prop2po-P en-GB.properties en-GB.pot
    • processing 1 files...
    • [###########################################] 100%
  • $ cp en-GB.pot gl-ES.po
  • $po2prop-t en-GB.pot gl-ES.po gl-ES.properties
  • $ mv gl-ES.properties gl-ES.ini
  • http://translate.sourceforge.net/wiki/toolkit/prop2po

Xerar o ficheiro PO para utilizar ferramentas de traducin de software: poEdit, Kbabel, gTranslator, ... Despois de traducir o ficheiro gl-ES.po convertilo a formato INI Languages 36. PoEdit facilita a edicin de ficheiros PO Languages 37. Templates 38.

  • O sistema de templates da versin 1.5 de Joomla sufriucambios destacablesdurante o proceso de desenvolvemento.
  • Inicialmente ase botar man do motor de plantillaspatTemplatee por cuestins de rendemento desbotouse a idea.
  • A biblioteca inda est no cartafos /libraries/ inclese por razns de compatibilidade.
    • http://trac.php-tools.net/patTemplate

Templates 39.

  • Novidades no motor de plantillas en J! 1.5:
    • Accesibilidade nas plantillas por defecto
    • Compatibilidade cara atrs, versins 1.0.x (legacy mode).
    • $this->countModules('user1 + user2').
    • Sentencias condicionais.
    • Deteccin automtica do uso do editor WYSIWYG.
    • Parametrizacin.
    • Soporte para mltiples follas de estilo (CSS).
    • Overrides, sobrescriben a sada por defecto das extensins.
  • http://www.joomla.org/component/option,com_jd-wp/Itemid,33/p,210/

Templates 40.

  • Instalacin de temas creados para Joomla!
  • Descargamos un tema p.e.- Go Vista Plain e instalmolo empregando o xestor de extensins do administrador de Joomla!
    • http://www.augs-burg.de/joomla/joomla1.5-templates.php

Templates 41. 42.

  • Deseamos unha plantilla de Joomla! propia
  • Partimos do seguinte deseo: http://www.intensivstation.ch/files/en_templates/2/template-3.html

Templates 43.

  • Definimos as nosas posicins (positions) onde situaremos os mdulos e o compoente (left, right, user1, ...)

Templates 44.

  • Empregamos para definir as posicins
  • < htmlxmlns= " http://www.w3.org/1999/xhtml "xml: lang = "en" lang = "en" >
  • < head >
  • < jdoc :includetype = "head"/>
  • head >
  • < body >
  • < div id = "container" >
  • < jdoc :includetype = "message"/>
  • < div id = "outer" >
  • < div id = "inner" >
  • < div id = "left" >< h2 > Esquerda h2 >
  • < jdoc :includetype = "modules" name = "left"/>
  • div >
  • < div id = "content" >
  • < h2 > Contido h2 >
  • < jdoc :includetype = "component"/>
  • div >
  • ...

Templates 45. Template Fortune 1.0 09/04/07 [email_address] http://vifito.es GNU/GPL Template de exemplo index.php templateDetails.xml template.png template_thumbnail.png media/3.css ... media/xhtml10.gif left right top fortune Templates templateDetails.xml 46.

  • Construmos un ficheiro .zip e instalamos a plantilla dende o administrador de extensins.
  • Resultado

Templates 47.

  • Referencias:
    • Titorial sobre plantillas para a versin 1.5
    • http://www.joomla.org/component/option,com_jd-wp/Itemid,33/p,210/
    • O titorial de referencia obrigatoria (imprescindible)
    • http://dev.joomla.org/downloads/Joomla15TemplateTutorial.zip

Templates 48. Modules 49. Modules

  • Imos desenvolver un mdulo simple que amose unha frase recuperada do programafortune( http://fortune-gui.sourceforge.net/ )
  • Por motivos de tempo vanse a quedar moitas cousas sen explicar, como o uso de parmetros, etc.

50.

  • Os mdulos atpanse situados no directorio/modules/dentro do directorio de instalacin de Joomla e por cada mdulo hai un cartafol con nomemod_nomeModulo.
  • O noso mdulo vaise a chamar fortune .
  • o cartafol do mdulo chamarase / mod_fortune/ .
  • Vemos a continuacin a estrutura do mdulo .

Modules 51. Estrutura do mdulo mod_fortune Modules 52. Modules -mod_fortune.php : ficheiro php co mesmo nome co mdulo, tomar o control do mdulo cando sexa chamado-helper.php : clase helper, serve para separar a lxica da presentacin. -directorio / tmpl/ : aqu gardaremos as plantillas que usaremos para a presentacin -Por defecto, sase o templatedefault.php -mod_fortune.xml : ficheiro xml necesario para xerar un instalable e onde especificaremos os parmetros do mdulo. 53. Cdigo dopunto de entradamod_fortune.php Modules mod_fortune/tmpl/default.php 56. Fortune vifito 1.0 18-06-2008 Mdulo que amosa unha mensaxe fortune aleatoria. [email_address] mod_fortune.php helper.php mod_fortune.xml tmpl/default.php Ficheiro XML utilizado polo instalador de Joomla! Modules 57. Resultado: Modules 58. Plugins 59.

  • Que son os plugins?
  • Son extensins que permiten modificar o comportamento do programa
  • Que fan os plugins?
  • Interceptan certos eventos prefijados para executar o noso cdigo antes ou despois do evento.
  • Existen varios tipos de plugins
  • Por cada tipo de plugin existe un directorio dentro do directorio plugins
  • Polo tanto temos o directorioplugins/content para os plugins de tipo content e as con todos os tipos.

Plugins 60. Plugins

  • authentication : autenticacin dos usuarios no proceso de login ( LDAP , openid, contas de google, ...)
  • content : procesar os tems de contidos
  • editors : editores WYSIWYG que poden ser utilizados para a edicin de contidos.
  • editors-xtd : extensins do editor (creacin de botns adicionais)
  • search : personalizacin das procuras realizadas nun sitio (inclur nas buscas resultados de novos compoentes)
  • system : escoita eventos do sistema
  • user : procesa as accins dun usuario
  • xmlrpc : crea respostas XML-RPC (APIs blogger, SITEMan, ...)

61.

  • Implementacin do plugin
  • Un plugin un obxecto que deriva da claseJPlugin .
  • Esta clase ten uns mtodos definidos que responden aos eventos do sistema (hooks)
  • Polo tanto teremos que sobrescribir o hook preciso para que reaccione a accin que desexemos.

Plugins 62.

  • Obxectivo do plugin: Amosarunha mensaxe antes do cada artigo
  • Estrutura do plugin Fortune

Plugins 63. Fortune Content vifito Xuo 2008 http://www.gnu.org/licenses/gpl-2.0.html [email_address] vifito.es 1.0 Insertar fortune antes do contido fortune.php Plugins plugins/content/fortune.xml 64. Plugins com_fortuneajax/views/fortuneajax/tmpl/view.html.php 80. Component Modelo Fortune Ajax Xuo 2008 vifito [email_address] http://vifito.es Copyleft GNU/GPL 0.1 Componente Fortune Ajax fortuneajax.xml fortuneajax.php controller.php models/fortuneajax.php views/fortuneajax/view.html.php views/fortuneajax/view.raw.php views/fortuneajax/tmpl/default.php 82. Component Resultado: 83. Component

  • Grazas a vista raw posible facer peticins Ajax. Agora un mdulo podera facer peticins HTTP va Ajax. (ver mdulo mod_fortuneajax)
  • Joomla! integra a librera javascript MooTools.OLLO: a ltima versin de MooTools a 1.12 e en Joomla! inclese a 1.11

84.

  • mod_fortuneajax fai peticins Ajax ao componente com_fortuneajax, pedindo a vista raw para que devolva s o contido e non todo o layout do sistema.

85.

  • Quedara pendente toda a parte da administracin:
  • http://dev.joomla.org/component/option,com_jd-wiki/Itemid,/ id,components:hello_world_mvc4/

Component 86. API Base de datos (core)

  • Para aproveitar as funcionalidades do framework de Joomla! usarconvencins :
    • Nome das tboas, recomendable en minsculas e coa seguinte sintaxe:
      • #__ _ p.e. jos_fortune_frases.( #__prefixo definido na instalacin, por defecto jos_)
    • Nome da clave primaria id , (integer auto_increment not null)
    • Nomes dos campos en minscula, palabras separadas por _.p.e. email_secundario

87. API Base de datos (core)

  • Nomes de campos comns con funcionalidades extra:
    • published : 0 -> no publicado1 -> publicado
    • hits : enteiro que garda os accesos dende o frontend dos visitantes (estatsticas)
    • Bloqueo da edicin:
      • checking_out , garda o id de usuario (0 por defecto)
      • checking_out_time, o datetime
    • ordering : garda a orde na que se amosan
    • parameters : garda parmetros en formato INI (variable=valor).Clase de utilidadeJParameter

88. API Base de datos (core)

  • Cdigo bsico para acceso a base de datos:

//Recuperarinstanciadabasededatos $db =& JFactory :: getDBO (); //Consulta $query = 'SELECT*FROM#__fortune_frases' ; //Recolleroresultadodaconsulta $result = $db -> setQuery ( $query);

  • Estase traballando para emular as funcins do API de ADOdb.OLLO!non hai intencin de integrar a librera ADOdb

89. API Base de datos (core)

  • Mtodos API:$db =& JFactory::getDBO();
  • $db->loadResult()
  • $db->loadResultArray([$key])
  • $db->loadAssoc()
  • $db->loadAssocList([$key])
  • $db->loadObject()
  • $db->loadObjectList([$key])
  • $db->loadRow()
  • $db->loadRowList([$key])
  • ...

90. API Base de datos (JTable)

  • JTable proporciona un conxunto de funcionalides (CRUD) abstraendo cuestins internas coma SQL, ...

91.

  • Clase TableFortuneFrases herda de JTablefuncionalidades ORM. As clases JTable grdanse no cartafol /tables/ do compoente: JPATH_COMPONENT_ADMINISTRATOR.DS.'tables'.DS.'fortunefrases.php'

class TableFortuneFrases extends JTable { var $id = null ; var $content = null ; var $published = null ; var $hits = 0 ; var $checking_out = 0 ; var $checking_out_time = null ; var $ordering = null ; var $params = null ; function __construct (& $db ){ parent :: __construct ( '#__fortune_frases' , 'id' , $db ); } } API Base de datos (JTable) 92.

  • CRUD ( C reate,R ead,U pdate eD elete)

// ObterunhainstanciadeJTable JTable :: addIncludePath ( JPATH_COMPONENT_ADMINISTRATOR . DS . 'tables' ); $table = JTable :: getInstance ( 'FortuneFrases' , 'Table' ); //Create $table -> reset (); //Vaciarbufferevitaproblemas $table -> set ( 'content' , "Loremipsumdolorsitamet" ); $table -> set ( 'ordering' , $table -> getNextOrder ()); if( $table -> check ()){ //Mtodocheckparacomprobarobuffer if(! $table -> store ()){ die( $table -> getError ()); } }else{ die( $table -> getError ()); } API Base de datos (JTable) 93. //Read if(! $table -> load ( $id )){ die( $table -> getError ()); } //Update $table -> reset (); //Vaciarbufferevitaproblemas $table -> set ( 'id' , $id ); $table -> set ( 'content' , JRequest :: getString ( 'content' )); if( $table -> check ()){ //... } //Delete if(! $table -> delete ( $id )){ die( $table -> getError ()); } API Base de datos (JTable) 94.

  • Mtodos de JTable para aproveitar as funcionalidades dos campos comns:

//Published,publicar(=1)oudespublicar(=0)contidos $table -> publish ( $array_ids , 1 , $user -> get ( 'id' )); //Aumentarunmisasvisitasdocontido $table -> hit (); //Comprobarsiestacheckedout $table -> isCheckedOut ( $user -> get ( 'id' )); //Bloqueaorexistroparaousuario $table -> checkout ( $user -> get ( 'id' )); //Desbloqueaorexistro $table -> checkin (); //Reordearoscontidos $table -> reorder (); API Base de datos (JTable) 95.

  • Manexo do campo params, til para personalizar propiedades dun contido. Os parmetros defnense no ficheiro XML que contn os detalles da extensin:

//Manexodosparmetros(claseJParameter) $params =new JParameter ( $table -> params ); $parametro = $params -> get ( 'nome_parametro' ); $params -> set ( 'nome_parametro' , $valor ); $table -> params = $params -> toString (); API Base de datos (JTable) 96. Integracin de Joomla! con outros frameworks 97.

  • Joomla! pdese integrar con outros proxectos coma phpBB por medio de compoentes, plugins, mdulos, ...
  • Por medio dunha interface XML-RPC garntese ainteroperabilidade .
  • Tamn se pode integrar dentro de Joomla! proxectos desenvolvidos con frameworks web: p.e.- CakePHP e Symfony
    • Joomla! + CakePHP = Jake http://cakeforge.org/frs/?group_id=76&release_id=314
    • Joomla! + Symfony = sfJoomla15Bridge, inspirado en Jake http://trac.symfony-project.com/wiki/sfJoomla15BridgePlugin

Joomla! e outros frameworks 98. Joomla! e outros frameworks

  • Instalamos unha aplicacin CakePHP existente (Cheesecake Photoblog) en Joomla!. Pasos:
  • 1) Instalar o componente Jake:
    • http://cakeforge.org/frs/download.php/354/jake_1.0.3.38b-joomla_1.5.zip
  • 2) Instalar Cheesecake:
    • http://cakeforge.org/frs/download.php/510/cheesecake_cake.tar.gz
  • 3) Configuramos a aplicacin en Joomla!com_jake/jake.ini
  • [settings]
  • default = "cheesecake"
  • [cheesecake]
  • path = "/var/www/cheesecake/app/webroot"
  • url = "/cheesecake"
  • 4) Obter URL de Jake a aplicacin

99. Joomla! e outros frameworks

  • Instalacin de Jake / Jake no men de compoentes

100. Joomla! e outros frameworks

  • Resultado da integracin de Cheesecake en Joomla!

101. Joomla! e outros frameworks

  • SITEman,aplicacin de escritorioimplementada en Java que permiteaos usuarios administrar un sitioJoomla! 1.5 dende un ambiente de escritorio.

102. Referencias e conclusins 103. Referencia e conclusins

  • Gracias a David Noguera Cifuentes Parte desta presentacin inspirada no seu materialhttp://www.nosolocodigo.com/tag/joomla
  • Pxina oficial de Joomla! http://joomla.org
  • Directorio de extensins de Joomla! http://extensions.joomla.org
  • Traducin Joomla! ao galego https://forxa.mancomun.org/projects/joomlagalego/

104. Dbidas?