Download - Dev con Joomla componentes modulos plugins
- 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?