Archived

Difference between revisions of "Developing a MVC Component/Adding a menu type to the site part"

From Joomla! Documentation

< Archived:Developing a MVC Component
(53 intermediate revisions by 13 users not shown)
Line 1: Line 1:
{{underconstruction}}
+
{{version/tutor|2.5}}
== Articles in this serie ==
+
{{Chunk:Developing a Model-View-Controller (MVC) Component for Joomla!2.5 - Contents}}
* [[Developing a Model-View-Controller (MVC) Component for Joomla!1.6 - Part 01|Developing a Basic Component]]
 
* [[Developing a Model-View-Controller (MVC) Component for Joomla!1.6 - Part 02|Adding a view to the site part]]
 
* [[Developing a Model-View-Controller (MVC) Component for Joomla!1.6 - Part 03|Adding a menu type to the backend part]]
 
* [[Developing a Model-View-Controller (MVC) Component for Joomla!1.6 - Part 04|Adding a model to the site part]]
 
* [[Developing a Model-View-Controller (MVC) Component for Joomla!1.6 - Part 05|Adding a variable request in the menu type]]
 
* [[Developing a Model-View-Controller (MVC) Component for Joomla!1.6 - Part 06|Using the database]]
 
  
== Indroduction ==
+
== Introduction ==
This tutorial is part of the [[Developing a Model-View-Controller (MVC) Component for Joomla!1.6]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.
+
This tutorial is part of the [[Developing a Model-View-Controller (MVC) Component for Joomla!2.5]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.
  
== Adding a menu type ==
+
== Abstract ==
In the Joomla!1.6 framework, components are executed using menu items. If you go in the menu manager of your Joomla!1.6 installation, there does not yet exist a ''HelloWorld'' menu type. Adding this functionnality is easy in Joomla. Simply put a ''site/views/helloworld/tmpl/default.xml'' file containing:
+
 
 +
Generally speaking, this article describes how to get a link on your joomla page to open a specific page of your component. This gets simply done by adding an xml file to your specific page into your view folder.
 +
 
 +
E.g.
 +
 
 +
''site/views/helloworld/tmpl/''
 +
 
 +
Contains your view page ''default.php'' that we want to open.
 +
 
 +
A file ''default.xml'' is placed next to this file with some xml. This makes joomla able to recognize the view file ''default.php'' as a menu item.
 +
 
 +
 
 +
== Adding a menu item type ==
 +
In the Joomla framework, components are executed using menu items. If you go in the menu manager of your Joomla installation a ''HelloWorld'' menu item type does not yet exist. Adding this functionality is easy in Joomla. Simply put a ''site/views/helloworld/tmpl/default.xml'' file containing:
  
 
<span id="site/views/helloworld/tmpl/default.xml">
 
<span id="site/views/helloworld/tmpl/default.xml">
 
''site/views/helloworld/tmpl/default.xml''
 
''site/views/helloworld/tmpl/default.xml''
 
<source lang="xml">
 
<source lang="xml">
<?xml version="1.0" encoding="utf-8" ?>  
+
<?xml version="1.0" encoding="utf-8"?>
 
<metadata>
 
<metadata>
<layout title="com_helloworld_helloworld_view_default_title">
+
<layout title="COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE">
<message>com_helloworld_helloworld_view_default_desc</message>  
+
<message>
 +
<![CDATA[COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_DESC]]>
 +
</message>
 
</layout>
 
</layout>
 
</metadata>
 
</metadata>
 
</source>
 
</source>
 
</span>
 
</span>
For the moment the strings won't be translated in the administrator interface. We will see in a next article how translation is provided.
+
For the moment the strings won't be translated in the administrator interface. We will see in a later article how translation is performed.
  
 
Also modify your ''helloworld.xml'' file to indicate a new version:
 
Also modify your ''helloworld.xml'' file to indicate a new version:
Line 32: Line 41:
 
''helloworld.xml''
 
''helloworld.xml''
 
<source lang="xml">
 
<source lang="xml">
<?xml version="1.0" encoding="utf-8" ?>
+
<extension type="component" version="2.5.0" method="upgrade">
<extension type="component" version="1.6.0" method="upgrade">
+
 
 
<name>Hello World!</name>
 
<name>Hello World!</name>
 +
<!-- The following elements are optional and free of formatting constraints -->
 
<creationDate>November 2009</creationDate>
 
<creationDate>November 2009</creationDate>
 
<author>John Doe</author>
 
<author>John Doe</author>
Line 41: Line 51:
 
<copyright>Copyright Info</copyright>
 
<copyright>Copyright Info</copyright>
 
<license>License Info</license>
 
<license>License Info</license>
 +
<!--  The version string is recorded in the components table -->
 
<version>0.0.3</version>
 
<version>0.0.3</version>
 +
<!-- The description is optional and defaults to the name -->
 
<description>Description of the Hello World component ...</description>
 
<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">
 
<files folder="site">
 
<filename>index.html</filename>
 
<filename>index.html</filename>
Line 49: Line 72:
 
<folder>views</folder>
 
<folder>views</folder>
 
</files>
 
</files>
 +
 
<administration>
 
<administration>
 +
<!-- Administration Menu Section -->
 
<menu>Hello World!</menu>
 
<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">
 
<files folder="admin">
 +
<!-- Admin Main File Copy Section -->
 
<filename>index.html</filename>
 
<filename>index.html</filename>
 
<filename>helloworld.php</filename>
 
<filename>helloworld.php</filename>
 +
<!-- SQL files section -->
 +
<folder>sql</folder>
 
</files>
 
</files>
 
</administration>
 
</administration>
 +
 
</extension>
 
</extension>
 
</source>
 
</source>
Line 64: Line 97:
 
Content of your code directory
 
Content of your code directory
 
* ''[[#helloworld.xml|helloworld.xml]]''
 
* ''[[#helloworld.xml|helloworld.xml]]''
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.6_-_Part_01#index.html|site/index.html]]''
+
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|site/index.html]]''
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.6_-_Part_02#site/helloworld.php|site/helloworld.php]]''
+
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_02#site/helloworld.php|site/helloworld.php]]''
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.6_-_Part_01#index.html|site/views/index.html]]''
+
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_02#site/controller.php|site/controller.php]]''
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.6_-_Part_01#index.html|site/views/helloworld/index.html]]''
+
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|site/views/index.html]]''
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.6_-_Part_02#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]''
+
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|site/views/helloworld/index.html]]''
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.6_-_Part_01#index.html|site/views/helloworld/tmpl/index.html]]''
+
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_02#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]''
 +
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|site/views/helloworld/tmpl/index.html]]''
 
* ''[[#site/views/helloworld/tmpl/default.xml|site/views/helloworld/tmpl/default.xml]]''
 
* ''[[#site/views/helloworld/tmpl/default.xml|site/views/helloworld/tmpl/default.xml]]''
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.6_-_Part_02#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]''
+
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_02#site/views/helloworld/tmpl/default.php|site/views/helloworld/tmpl/default.php]]''
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.6_-_Part_01#index.html|admin/index.html]]''
+
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/index.html]]''
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.6_-_Part_01#admin/helloworld.php|admin/helloworld.php]]''
+
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#admin/helloworld.php|admin/helloworld.php]]''
 +
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/sql/index.html]]''
 +
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/sql/updates/index.html]]''
 +
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#index.html|admin/sql/updates/mysql/index.html]]''
 +
* ''[[Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!2.5_-_Part_01#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]''
 +
 
 +
[[File:Com_helloworld-0.0.3.png|thumb|right|Selecting the Menu Item Type]] Create a compressed file of this directory or directly download the [http://joomlacode.org/gf/download/frsrelease/11394/58227/com_helloworld-1.6-part03.zip archive] and install it using the extension manager of Joomla. You can add a menu item of this component using the menu manager in the backend. To do so select "Add New Menu Item" from the one of the menus in the "Menus" menu; then you can select COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE for Menu Item Type. Once selected you can see the Link information is populated with the URL for the view.
 +
<br style="clear: both" />
 +
 
 +
== Navigate ==
  
Create a compressed file of this directory or directly download the [http://joomlacode.org/gf/download/frsrelease/11394/45605/com_helloworld-1.6-part03.zip archive] and install it using the extension manager of Joomla!1.6. You can add a menu item of this component using the menu manager in the backend.
+
[[Developing a Model-View-Controller (MVC) Component for Joomla!2.5 - Part 02|Prev: Adding a view to the site part]]
 +
[[Developing a Model-View-Controller (MVC) Component for Joomla!2.5 - Part 04|Next: Adding a model to the site part]]
  
 
== Contributors ==
 
== Contributors ==
 
*[[User:cdemko|Christophe Demko]]
 
*[[User:cdemko|Christophe Demko]]
 +
*[[User:oaksu|Ozgur Aksu]]
 +
*[[User:Jossnaz|Lukas Meier]]
  
 
[[Category:Development]]
 
[[Category:Development]]
[[category:Joomla! 1.6]]
+
[[Category:Joomla! 1.6]]
[[category:Manual]]
+
[[Category:Joomla! 1.7]]
 +
[[Category:Joomla! 2.5]]

Revision as of 17:34, 31 December 2013

This page has been archived. This page contains information for an unsupported Joomla! version or is no longer relevant. It exists only as a historical reference, it will not be improved and its content may be incomplete and/or contain broken links.


Introduction[edit]

This tutorial is part of the Developing a Model-View-Controller (MVC) Component for Joomla!2.5 tutorial. You are encouraged to read the previous parts of the tutorial before reading this.

Abstract[edit]

Generally speaking, this article describes how to get a link on your joomla page to open a specific page of your component. This gets simply done by adding an xml file to your specific page into your view folder.

E.g.

site/views/helloworld/tmpl/

Contains your view page default.php that we want to open.

A file default.xml is placed next to this file with some xml. This makes joomla able to recognize the view file default.php as a menu item.


Adding a menu item type[edit]

In the Joomla framework, components are executed using menu items. If you go in the menu manager of your Joomla installation a HelloWorld menu item type does not yet exist. Adding this functionality is easy in Joomla. Simply put a site/views/helloworld/tmpl/default.xml file containing:

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>

For the moment the strings won't be translated in the administrator interface. We will see in a later article how translation is performed.

Also modify your helloworld.xml file to indicate a new version:

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>

Packaging the component[edit]

Content of your code directory

Selecting the Menu Item Type

Create a compressed file of this directory or directly download the archive and install it using the extension manager of Joomla. You can add a menu item of this component using the menu manager in the backend. To do so select "Add New Menu Item" from the one of the menus in the "Menus" menu; then you can select COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE for Menu Item Type. Once selected you can see the Link information is populated with the URL for the view.


Navigate[edit]

Prev: Adding a view to the site part Next: Adding a model to the site part

Contributors[edit]