- 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
- Instalacin, configuracin e posta en funcionamento
- Arquitectura de Joomla! 1.5
- Integracin con outros frameworks
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.
Introducin 8. Instalacin 9. Instalacin
- Requisitos (recomendados):
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
11. Instalacin
-
-
- O asistente de instalacin deJoomla componse de sete pasos:
- Escoller o idioma do instalador
- Chequeo de pre-instalacin
- Configuracin da base de datos
12. Instalacin
-
-
- Paso 1: seleccin do idioma
13. Instalacin
14. Instalacin
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.
- 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/
-
- 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
-
- ALL PAGES=Todas as pxinas
-
- ALT TEXT=Texto alternativo
- API para empregar a traducin
Languages 35.
- $ mv en-GB.ini en-GB.properties
- $prop2po-P en-GB.properties en-GB.pot
-
- [###########################################] 100%
- $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').
-
- Deteccin automtica do uso do editor WYSIWYG.
-
- 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" >
- < jdoc :includetype = "head"/>
- < jdoc :includetype = "message"/>
- < div id = "left" >< h2 > Esquerda h2 >
- < jdoc :includetype = "modules" name = "left"/>
- < jdoc :includetype = "component"/>
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.
Templates 47.
-
- 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.
- Son extensins que permiten modificar o comportamento do
programa
- 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.
- 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)
-
-
- 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->loadResultArray([$key])
- $db->loadAssocList([$key])
- $db->loadObjectList([$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
-
-
http://cakeforge.org/frs/download.php/510/cheesecake_cake.tar.gz
- 3) Configuramos a aplicacin en Joomla!com_jake/jake.ini
- path = "/var/www/cheesecake/app/webroot"
- 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?