1. Desarrollando un componente MVC : Introducción
  2. Desarrollando un componente MVC: Desarrollando un componente básico
  3. Desarrollando un componente MVC: Añadiendo una vista en el frontend
  4. Desarrollando un componente MVC: Añadiendo un tipo de menu al frontend
  5. Desarrollando un componente MVC: Añadiendo un modelo al frontend
  6. Desarrollando un componente MVC : Añadiendo una variable request en el tipo de menu
  7. Desarrollando un componente MVC : Usando la base de datos
  8. Desarrollando un componente MVC : Basic backend
  9. Desarrollando un componente MVC : Añadiendo gestión de idioma
  10. Desarrollando un componente MVC : Añadiendo acciones backend
  11. Desarrollando un componente MVC : Añadiendo adornos al backend
  12. Desarrollando un componente MVC : Añadiendo verificaciones
  13. Desarrollando un componente MVC : Añadiendo categorías
  14. Desarrollando un componente MVC : Añadiendo configuración
  15. Desarrollando un componente MVC : Añadiendo ACL (Access Control Levels)
  16. Desarrollando un componente MVC : Añadiendo un script de instalación-desinstalación-actualización
  17. Desarrollando un componente MVC : Usando la capacidad de filtro
  18. Desarrollando un componente MVC : Añadiendo un servidor de actualización

Abstracción

Generalmente hablando, este artículo describe cómo conseguir un enlace en tu página Joomla que abra una página específica de tu componente. Esto se realiza de manera sencilla añadiendo un fichero xml a la página específica en el directorio view.

Ej: site/views/helloworld/tmpl/

Este directorio contiene la página de vista default.php que queremos abrir.

El archivo default.xml se coloca junto al archivo php con algo de xml. Esto capacita a Joomla a reconocer la vista default.php como un elemento de menú.

Añadiendo un tipo de menú

En el framework de Joomla, los componentes se ejecutan mediante elementos de menú. Si vas al administrador de menú de tu instalación Joomla comprobarás que todavía no existe un tipo de menú HelloWorld. Añadir esta funcionalidad es sencillo en Joomla, simplemente crea el archivo site/views/helloworld/tmpl/default.xml file con el siguiente contenido:

site/views/helloworld/tmpl/default.xml

<?xml version="1.0" encoding="utf-8"?>
<metadata>
        <layout title="COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE">
                <message>
                        <![CDATA[COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_DESC]]>
                </message>
        </layout>
</metadata>

De momento las cadenas de texto no se traducirán en el interfaz de administración. En un articulo posterior veremos cómo se realizan las traducciones.

También modifica tu fichero helloworld.xml para indicar una nueva versión:

helloworld.xml

<extension type="component" version="2.5.0" method="upgrade">
 
	<name>Hello World!</name>
	<!-- The following elements are optional and free of formatting constraints -->
	<creationDate>November 2009</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>0.0.3&lt;/version>
	<-- The description is optional and defaults to the name -->
	<description>Description of the Hello World component ...</description>
 
	<update> <!-- Runs on update; New in 2.5 -->
		<schemas>
			<schemapath type="mysql">sql/updates/mysql</schemapath>
		</schemas>
	</update>
 
	<!-- 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>index.html</filename>
		<filename>helloworld.php</filename>
		<filename>controller.php</filename>
		<folder>views</folder>
	<files>
 
	<administration>
	<!-- Administration Menu Section -->
		<menu>Hello World!</menu>
		<!-- Administration 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 /admin/ in the package -->
		<files folder="admin">
		<!-- Admin Main File Copy Section -->
			<filename>index.html</filename>
			<filename>helloworld.php</filename>
			<!-- SQL files section -->
			<folder>sql</folder>
		</files>
	</administration>
</extension>

Empaquetando el componente

Contenido del directorio:

  • helloworld.xml
  • site/index.html
  • site/helloworld.php
  • site/controller.php
  • site/views/index.html
  • site/views/helloworld/index.html
  • site/views/helloworld/view.html.php
  • site/views/helloworld/tmpl/index.html
  • site/views/helloworld/tmpl/default.xml
  • site/views/helloworld/tmpl/default.php
  • admin/index.html
  • admin/helloworld.php
  • admin/sql/index.html
  • admin/sql/updates/index.html
  • admin/sql/updates/mysql/index.html
  • admin/sql/updates/mysql/0.0.1.sql

Ahora comprime este directorio o directamente descargalo el archivo e instalalo utilizando la “Administración de extensiones” (Extension Manager) de Joomla. Puedes añadir un elemento de menú mediante el gestor de menús. Para hacerlo, selecciona «Añadir nuevo elemento de menú» del menú Menu (valga la redundancia), después selecciona COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE para el tipo de menú (posteriormente veremos cómo traducir esta cadena). Una vez seleccionado se puede ver que la información de enlace se rellena automáticamente con la url para la vista (View).