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</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).