Your SlideShare is downloading. ×
0
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Enlazando Conceptos Con Joomla
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Enlazando Conceptos Con Joomla

3,521

Published on

Published in: Business
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,521
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. ENLAZANDO CONCEPTOS CON JOOMLA!<br />Un visión rápido para poder entender como funciona Joomla! de una manera sencilla<br />
  • 2. 01<br />Índice<br />Ahora sabremos que es lo que vamos a saber, o no, al finalizar el G6<br />
  • 3. Índice: <br /><ul><li>Objetivos
  • 4. Introducción
  • 5. Instalación, configuración y puesta en marcha
  • 6. Arquitectura de Joomla! 1.5
  • 7. Languages
  • 8. Templates
  • 9. Modules
  • 10. Plugins
  • 11. Componentes
  • 12. API Base de Datos
  • 13. Como interpretar lo que nos quiere decir Joomla!
  • 14. Referencia y conclusiones</li></ul>01<br />ÍNDICE<br />
  • 15. 02<br />OBJETIVOS<br />Ahora sabremos (de verdad) que es lo que vamos a saber, o no, al finalizar el G6<br />
  • 16. OBJETIVOS: <br /><ul><li>Saber distinguir entre:
  • 17. Languages
  • 18. Templates
  • 19. Modules
  • 20. Plugins
  • 21. Componentes
  • 22. Saber deducir que es en cada cosa en cada momento
  • 23. Tener unas pautas de modificación de Joomla!s</li></ul>02<br />OBJETIVOS<br />
  • 24. 03<br />INTRODUCCIÓN<br />Y ahora… contarme, ¿que sabéis de Joomla! 1.5?<br />
  • 25. 03<br />INTRODUCCIÓN<br />¿QUE ES UN MÓDULO?<br />LO SÉ<br />NO LO SÉ<br />
  • 26. 03<br />INTRODUCCIÓN<br />¿QUE ES UN COMPONENTE?<br />LO SÉ<br />NO LO SÉ<br />
  • 27. 03<br />INTRODUCCIÓN<br />¿QUE ES UN PLUGIN?<br />LO SÉ<br />NO LO SÉ<br />
  • 28. 03<br />INTRODUCCIÓN<br />¿QUE ES UN FRAMEWORK?<br />LO SÉ<br />NO LO SÉ<br />
  • 29. 03<br />INTRODUCCIÓN<br />¿PARA QUE SIRVE UNA EXTENSION?<br />LO SÉ<br />NO LO SÉ<br />
  • 30. 03<br />INTRODUCCIÓN<br />¿QUE ES UN TEMPLATE?<br />LO SÉ<br />NO LO SÉ<br />
  • 31. CONCEPTOS BASICOS: <br /><ul><li>JOOMLA! es un CMS desarrollado de manera colaborativa con licencia GNU.
  • 32. El nombre en suajili significa todos juntos.
  • 33. La versión actual es la 1.5.15</li></ul>03<br />INTRODUCCIÓN<br />
  • 34. CONCEPTOS BASICOS: <br /><ul><li>J! es un CMS muy flexible en parte gracias a lo facil que resulta desarrollar extensiones (componentes, módulos, plugins)
  • 35. Las extensiones son un mecanismo para dotar de más funcionalidad a J! (multiidioma, multisitio…)
  • 36. Esto propicia una gran creación de comunidades libres de desarrollo.</li></ul>03<br />INTRODUCCIÓN<br />
  • 37. USO ACTUAL DE JOOMLA: <br />03<br />INTRODUCCIÓN<br />
  • 38. 04<br />INSTALACIÓN<br />Un repaso muy, pero que muy rápido a como se instala Joomla!<br />
  • 39. INSTALACIÓN: <br /><ul><li>http://comunidadjoomla.org/component/content/article/147-manual-de-instalacion-para-joomla-15x.html</li></ul>04<br />INSTALACIÓN<br />
  • 40. 05<br />ARQUITECTURA<br />Vamos los cimientos del Joomla!<br />
  • 41. FRONT-END: <br />05<br />ARQUITECTURA<br />
  • 42. BACK-END: <br />05<br />ARQUITECTURA<br />
  • 43. ESTRUCTURA DE DIRECTORIOS: <br />05<br />ARQUITECTURA<br /><ul><li>Parte pública y administración separadas.
  • 44. Comparten directorio libraries.
  • 45. El funcionamiento interno de las dos partes es similar.</li></li></ul><li>ESTRUCTURA DE DIRECTORIOS: <br />05<br />ARQUITECTURA<br />
  • 46. COMPOSICIÓN<br />05<br />ARQUITECTURA<br />J! esta compuesto por:<br /><ul><li>Modulos: son pequeñas porciones de contenido.
  • 47. Componentes:es donde se muestra el contenido principal de J! (miniaplicaciones).
  • 48. Plugins:responde a eventos del sistema (login, mostrar contenidos,…).</li></li></ul><li>ESTRUCTURA: <br />05<br />ARQUITECTURA<br />
  • 49. DISEÑO: <br />05<br />ARQUITECTURA<br />
  • 50. 05.a<br />ARQUITECTURA: LANGUAGES<br />Como crear ficheros de idiomas para multilenguaje<br />
  • 51. OPCIONES<br />05.a<br />ARQUITECTURA: LANGUAGES<br />J! permite:<br /><ul><li>Importar ficheros de idiomas para back-end y el front-end</li></li></ul><li>COMO FUNCIONA<br />05.a<br />ARQUITECTURA: LANGUAGES<br /><ul><li>Formato de un archivo ini(ej: &lt;path_joomla/languages/es_ES/es_ES.com_content.ini&gt;)</li></ul> ACCES LEVEL=Nivel Acceso<br /> ADD=añadir<br /> UP=arriba<br /> UHA=VIVA CHIMO BAYO!<br /><ul><li>API de LANGUAGE</li></ul>&lt;?php echo Jtext::_(‘ACCES LEVEL’);?&gt;<br />
  • 52. 05.b<br />ARQUITECTURA: TEMPLATES<br />Como crear plantillas 100% usables!!!<br />
  • 53. ESTRUCTURA BASICA<br />05.b<br />ARQUITECTURA: TEMPLATES<br /><ul><li>css: Es la carpeta que contiene los estilos en cascada del template.
  • 54. html: Esta carpeta posee los archivos que funcionaran como plantilla especifica para módulos y componentes. Su uso no es prioritario pero es una funcionalidad a explotar si deseamos un código personalizado para componentes/módulos.
  • 55. images: Contendrá las imágenes usadas para el diseño.</li></li></ul><li>ESTRUCTURA BASICA<br />05.b<br />ARQUITECTURA: TEMPLATES<br /><ul><li>index.php: El archivo principal, contendrá todo el HTML y directivas PHP de Joomla! para cargar el contenido (artículos, componentes, módulos, etc.)
  • 56. templateDetails.xml: Determinante para que la plantilla sea reconocida en el back-end del CMS. Posee diversos datos como licencia, autor, e-mail, etc. En Joomla! 1.5 la plantilla podrá tener parámetros manejables desde el back-end para cambiar la visualización del template. En este archivo se agregaran los parámetros y las posiciones de disponibles para mostrar los módulos.
  • 57. template_thumbnail.png: Es la imagen que actuará como previsualización del template en la administración.
  • 58. params.ini: Contendrá los valores para configurar los parámetros del template. Si la plantilla no posee parámetros para configurar, este archivo no será necesario.
  • 59. template.css: Es el estilo en cascada principal que se encuentra dentro de la carpeta &apos;css&apos;. En la rama de Joomla! 1.0.x este archivo tenía el nombre de template_css.css
  • 60. favicon.ico: Es el favicon que usaremos en nuestro sitio.
  • 61. imagenes varias: Conformaran el diseño de la plantilla.</li></li></ul><li>PARA PROFUNDIZAR MÁS EN LA CREACIÓN<br />05.b<br />ARQUITECTURA: TEMPLATES<br />http://www.leandrodonofrio.com/recursos/joomla/tutorial-crear-un-template-para-joomla-15-desde-cero<br />
  • 62. CLASES PERTENECIENTES A CONTENIDOS<br />05.b<br />ARQUITECTURA: TEMPLATES<br /><ul><li>componentheading: Nuestra el título del componente en cuestion. La página de inicio, al ser un componente (com_frontpage) tiene posibilidad de mostrar un título.
  • 63. contentheading: Es la clase perteneciente a la celda que muestra el título de los artículos
  • 64. buttonheading: Pertece a las celdas que muestran los iconos de PDF, Imprimir y Enviar a un amigo
  • 65. small: Es usado por varios elementos, entre ellos el que muestra el autor de un artículo
  • 66. createdate: Es usado por la celda que muestra la fecha de creación de un artículo
  • 67. readon: Utilizada por el link &quot;Leer más...“
  • 68. article_separator: Utilizada por la etiqueta &lt;span&gt; que separa a los artículos entre sí</li></li></ul><li>CLASES PERTENECIENTES A CONTENIDOS<br />05.b<br />ARQUITECTURA: TEMPLATES<br />
  • 69. CLASES PERTENECIENTES A MODULOS<br />05.b<br />ARQUITECTURA: TEMPLATES<br /><ul><li>moduletable: Arriba contábamos que los módulos pueden cargarse de diferentes formas, dentro de tablas ó en DIVs. Para nuestro template nosotros hemos especificado que los módulos se carguen en un solo DIV a través del parámetro style=&quot;xhtml&quot;.  Para este caso, el DIV contenedor posee la clase CSS asociada moduletable
  • 70. h3: Los títulos de los módulos se cargan con la etiqueta H3 active: Para el caso del menú, cuando nos encontramos dentro de una página existente como item, se agrega la clase active
  • 71. item: A su vez cada elemento del menú posee una clase unica, la cual es item más el ID que posea dicho elemento
  • 72. parent: Si hemos creado un elemento que a su vez posee sub-items, al elemento padre se le añade la clase parent</li></li></ul><li>CLASES PERTENECIENTES A MODULOS<br />05.b<br />ARQUITECTURA: TEMPLATES<br />
  • 73. CLASES DIVERSAS IMPORTANTES<br />05.b<br />ARQUITECTURA: TEMPLATES<br /><ul><li>button: Es una clase asociada a elementos del tipo botón
  • 74. inputbox: Suele estar asociada a elementos text-input
  • 75. pagenav: Clase asociada a la paginación de artículos
  • 76. modifydate: Clase asociada ala fecha demodificación de un artículo
  • 77. sectiontableentry1/sectiontableentry2: Suele estar asociada cuando se muestran datos en tablas</li></li></ul><li>05.c<br />ARQUITECTURA: MODULOS<br />Donde colocar que!<br />
  • 78. ESTRUCTURA BASICA<br />05.c<br />ARQUITECTURA: MODULOS<br /><ul><li>La estructura de todos los modulos es la misma, compuesta por la carpeta tmpl donde se encuentra como se pinta el módulo, así como lso archivos de la raíz donde se decide que hace cada parte deñ módulo, aquí tenemos un ejemplo de mod_anyo.php</li></ul>&lt;?php   <br />// no acceso directo<br />defined(&apos;_JEXEC&apos;)ordie(&apos;Restrictedaccess&apos;);   <br />/ incluir al helper que devolverá los datos, solo una vez<br />require_once(dirname(__FILE__).DS.&apos;helper.php&apos;);   <br />$articulos=modAnyoHelper::getArticulos($params);<br />require(JModuleHelper::getLayoutPath(&apos;mod_Anyo&apos;,&apos;default&apos;));?&gt;<br />
  • 79. ESTRUCTURA BASICA<br />05.c<br />ARQUITECTURA: MODULOS<br /><ul><li>Helper.php</li></ul>&lt;?php<br />classmodAnyoHelper { functiongetArticulos( $params ) { <br />jimport(&apos;joomla.utilities.date&apos;); <br />$jnow = newJDate(); <br />$now = $jnow-&gt;toMySQL();   <br />$db = &amp;JFactory::getDBO(); <br />$consulta = &quot;selecttitle,idfrom #__contentwheredatediff( #__content.created, &apos;&quot;.$now.&quot;&apos; ) = 365 limit 0,30&quot;; <br />$db-&gt;setQuery($consulta); <br />$categorias = $db-&gt;loadObjectList(); <br />return $db-&gt;loadObjectList(); } <br />} ?&gt;<br />
  • 80. ESTRUCTURA BASICA<br />05.c<br />ARQUITECTURA: MODULOS<br /><ul><li>Tmpl/default.php</li></ul>&lt;?php<br />if($params-&gt;get(&apos;asignarCss&apos;)){ <br />$css = $params-&gt;get(&apos;clase&apos;); }   ?&gt;<br /> &lt;ul&lt;?phpif(isset($css )){ echo &apos;class=&quot;&apos;.$css.&apos;&quot;&apos;;} ?&gt; &gt;<br />&lt;?phpforeach ($articulos as $articulo) { <br />echo &apos; &lt;li&gt;&lt;a href=&quot;index.php?option=com_content&amp;amp;id=&apos;.$articulo-&quot;&gt;id.&apos;&gt;&apos;. $articulo-&gt;title .&apos;&lt;/a&gt;&lt;/li&gt;   &apos;; <br />} ?&gt;<br /> &lt;/ul&gt;<br />http://www.nosolocodigo.com/tutorial-modulos-para-joomla-15<br />
  • 81. 05.d<br />ARQUITECTURA: PLUGINS<br />Que hacer cuando…<br />
  • 82. ESTRUCTURA BASICA<br />05.d<br />ARQUITECTURA: PLUGINS<br />Un plugin es un objeto que deriva de la clase JPlugin. Esta clase tiene unos métodos definidos que son ganchos (hooks) , también se les podría llamar listeners , y que se ejecutaran cuando el evento asociado a cada clase se dispare, por lo tanto tendremos que sobrescribir las funciones gancho que necesitemos y escribir nuestro código allí.<br />&lt;?xmlversion=”1.0″ encoding=”utf-8″ ?&gt;<br />&lt;installversion=”1.5″ type=”plugin” group=”content”&gt;<br />&lt;name&gt;Content – Hola Mundo&lt;/name&gt;<br />&lt;author&gt;David Noguera&lt;/author&gt;<br />&lt;creationDate&gt;15-02-2008&lt;/creationDate&gt;<br />&lt;authorEmail&gt;david@nosolocodigo.com&lt;/authorEmail&gt;<br />&lt;authorUrl&gt;www.nosolocodigo.com&lt;/authorUrl&gt;<br />&lt;version&gt;1.0&lt;/version&gt;<br />&lt;description&gt;Muestra un mensaje antes de mostrar el contenido<br />&lt;/description&gt;<br />&lt;files&gt;<br />&lt;filenameplugin=”HolaMundo”&gt;HolaMundo.php&lt;/filename&gt;<br />&lt;filename&gt;HolaMundo.xml&lt;/filename&gt;<br />&lt;/files&gt;<br />&lt;params&gt;<br />&lt;paramname=”mensaje” type=”text” size=”50″ default=”Hola, me llamo David”<br />label=”Introduce el mensaje a ser mostrado aquí :” description=”Mensaje que se mostrará antes del contenido”/&gt;<br />&lt;/params&gt;<br />&lt;/install&gt;<br />
  • 83. ESTRUCTURA BASICA<br />05.d<br />ARQUITECTURA: PLUGINS<br /><ul><li>HolaMundo.php</li></ul>defined( &apos;_JEXEC&apos; ) or die( &apos;Acceso Restringido&apos; ); <br />jimport( &apos;joomla.plugin.plugin&apos; );   <br />classplgContentHolaMundoextendsJPlugin {   <br />functionplgContentHolaMundo( &amp;$subject ) { parent::__construct( $subject ); }   <br />functiononBeforeDisplayContent(&amp;$article, &amp;$params, $limitstart=0) {   $plugin =&amp; JPluginHelper::getPlugin(&apos;content&apos;, &apos;HolaMundo&apos;); $pluginParams = newJParameter( $plugin-&gt;params ); $mensaje = &quot;&quot;;   $mensaje = $pluginParams-&gt;get(&apos;mensaje&apos;, &apos;Hola Mundo&apos;);   $salidaPantalla = &apos; &lt;h2&gt;&apos; . $mensaje . &apos;&lt;/h2&gt;   &apos;;   return $salidaPantalla; }   } ?&gt;<br />
  • 84. 05.e<br />ARQUITECTURA: COMPONENTES<br />Quien hace que…<br />
  • 85. EL PATRÓN DE DISEÑO MVC<br />05.e<br />ARQUITECTURA: COMPONENTES<br /><ul><li>El controlador: el controlador es el punto de entrada de la aplicación, se mantiene a la escucha de todas las peticiones, ejecuta la lógica de la aplicación, y muestra la vista apropiada para cada caso.
  • 86. El modelo : el modelo contiene todo el código relacionado con el acceso a datos. Es importante que sea un código lo más genérico posible y se pueda reutilizar en otras situaciones y proyectos. Nunca incluiremos lógica en el modelo, solamente consultas a la base de datos y validaciones de entrada de datos.
  • 87. La vista : la vista contiene el código que representará lo que nosotros veremos por pantalla, en este caso se trata de código html.</li></li></ul><li>UN COMPONENTE SIMPLE<br />05.e<br />ARQUITECTURA: COMPONENTES<br /><ul><li>Como podrás imaginar el modelo del componente irá dentro de la carpeta models, las vistas se ubicaran dentro del directorio views, y el controlador en el archivo controller.php .
  • 88. Joomla! 1.5 sabe qué componente tiene que cargar porque busca en la querystring de la petición el parámetro “option”, del cual obtiene el nombre del componente a cargar. Es decir, nosotros para llamar a nuestro componente prueba, introduciremos en joomla la URL acabada con index.php?option=com_prueba. Esto muestra la pagina principal de nuestro componente, que por defecto carga la vista con el mismo nombre del componente, es decir, la vista con nombre “prueba”.</li></ul>http://www.nosolocodigo.com/tutorial-componente-para-joomla-15-iii<br />
  • 89. UN COMPONENTE SIMPLE PARTE ADMINISTRACIÓN<br />05.e<br />ARQUITECTURA: COMPONENTES<br />http://www.nosolocodigo.com/tutorial-componente-para-joomla-15-iii<br />
  • 90. UN COMPONENTE SIMPLE PARTE ADMINISTRACIÓN<br />05.e<br />ARQUITECTURA: COMPONENTES<br />http://www.nosolocodigo.com/tutorial-componente-para-joomla-15-iii<br />
  • 91. 06<br />API de BASE DE DATOS<br />Como conectar y que es eso de los ID?<br />
  • 92. JDATABASE<br />06<br />API BASE DE DATOS<br />$db =&amp; JFactory::getDBO();<br /><ul><li>Lo primero que debemos hacer a la hora de usar JDatabase, la clase que representa una conexión a la base de datos en Joomla, es obtener una instancia de la clase. Para ello haremos uso de JFactory, una clase que ofrece varios métodos estáticos para obtener instancias de distintos singleton del framework, como pueden ser el objeto sesión (getSession), el objeto usuario (getUser) o el propio objeto JDatabase (getDBO).</li></ul>$query = &apos;CREATE TABLE #__empleado(id INT NOT NULL AUTO_INCREMENT, nombre VARCHAR(20), departamento VARCHAR(20), PRIMARY KEY(id))&apos;;<br />$db-&gt;setQuery($query);<br />$db =&amp; JFactory::getDBO();<br />$query = &apos;SELECT nombre FROM #__empleado LIMIT 1&apos;;<br />$db-&gt;setQuery($query);<br />$nombre = $db-&gt;loadResult();<br />echo $nombre;<br />
  • 93. JTABLE<br />06<br />API BASE DE DATOS<br />&lt;?php<br />defined(&apos;_JEXEC&apos;) or die(&apos;Restrictedaccess&apos;);<br />classTableEmpleadoextendsJTable {<br />var $id = null;<br />var $nombre = null;<br />var $departamento = null;<br />function __construct(&amp;$db) {<br />parent::__construct(&apos;#__empleado&apos;, &apos;id&apos;, $db);<br /> }<br />}<br />?&gt;<br /><ul><li>Para cada tabla para la que queramos utilizar JTable para llevar a cabo las operaciones de creación, lectura, actualización o borrado tendremos que crear un archivo que contenga una clase que extienda JTable, con un atributo por cada columna de la tabla y un constructor que llamará al de la clase padre pasando como argumentos el nombre de la tabla, la clave primaria y el objeto que representa la conexión con la BBDD. El nombre de la nueva clase será, por convención, Table seguido del nombre de la entidad (TableUsuario, TableEdificio, etc) y el nombre del archivo, el mismo nombre sin el prefijo Table (usuario.php, edificio.php, etc).</li></li></ul><li>IDENTIFICADOR J! Y BBDD<br />06<br />API BASE DE DATOS<br /><ul><li>Para J! el identificador de la base de datos es el ID, que suele ser automático.</li></li></ul><li>07<br />INTERPRETEMOS JOOMLA!<br />Enlacemos todos los conceptos anteriores en 1 url<br />
  • 94. QUE ES CADA COSA!<br />07<br />INTERPRETEMOS JOOMLA!<br />ID BASE DE DATOS<br />NOMBRE COMPONENTE<br />http://encamina.com/index.php?option=com_content&amp;task=view&amp;id=161&amp;Itemid=39<br />ACCIÓN DEL COMPONENTE<br />ID DEL MENU<br />
  • 95. 08<br />REFERENCIAS Y CONCLUSIONES<br />Obtengamos conclusiones entre todos.<br />
  • 96. JOOMLA! = todos juntos<br />08<br />REFERENCIAS Y CONCLUSIONES<br />SAQUEMOS<br />CONCLUSIONES!<br />
  • 97. gràcies!<br />

×