J3.x

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

From Joomla! Documentation

< J3.x:Developing an MVC Component
('a' to 'an' as 'M' pronounced 'em')
(28 intermediate revisions by 10 users not shown)
Line 1: Line 1:
{{:J3.1:Developing a MVC Component}}
+
<noinclude><languages /></noinclude>
 +
{{:J3.1:Developing an MVC Component/<translate><!--T:1-->
 +
en</translate>}}
 +
<translate>== Introduction == <!--T:6-->
 +
This tutorial is part of the [[J3.2:Developing an MVC Component|Developing an MVC Component for Joomla!3.2]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.</translate>
  
{{review}}
+
<translate>== Abstract == <!--T:7-->
 +
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.</translate>
  
This is a multiple-article series of tutorials on how to develop a Model-View-Contoller [[Component]] for Joomla! Version {{JVer|{{CurrentSTSVer|minor}}}}.
+
<translate><!--T:8-->
 +
E.g.</translate>
  
 +
<tt>site/views/helloworld/tmpl/</tt>
 +
 +
<translate><!--T:9-->
 +
Contains your view page <tt>default.php</tt> that we want to open.</translate>
 +
 +
<translate><!--T:10-->
 +
A file <tt>default.xml</tt> is placed next to this file with some xml. This makes joomla able to recognize the view file <tt>default.php</tt> as a menu item.
 +
</translate>
 +
 +
<translate>== Adding a menu item type == <!--T:11-->
 +
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 <tt>site/views/helloworld/tmpl/default.xml</tt> file containing:</translate>
 +
 +
<span id="site/views/helloworld/tmpl/default.xml">
 +
'''''site/views/helloworld/tmpl/default.xml'''''
 +
<source lang="xml">
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<metadata>
 +
<layout title="COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE">
 +
<message>COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_DESC</message>
 +
</layout>
 +
</metadata>
 +
</source>
 +
</span>
 +
 +
<translate><!--T:12-->
 +
For the moment the strings won't be translated in the administrator interface. We will see in a later article how translation is performed.</translate>
 +
 +
<translate><!--T:13-->
 +
Also modify your <tt>helloworld.xml</tt> file to indicate a new version:</translate>
 +
 +
<span id="helloworld.xml">
 +
'''''helloworld.xml'''''
 +
<source lang="xml" highlight="13">
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<extension type="component" version="3.2.0" method="upgrade">
 +
 +
<name>Hello World!</name>
 +
<!-- The following elements are optional and free of formatting constraints -->
 +
<creationDate>January 2014</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 since J2.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 link='index.php?option=com_helloworld'>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>
 +
</source>
 +
</span>
 +
 +
<translate>== Packaging the component == <!--T:14--></translate>
 +
<translate><!--T:15-->
 +
Content of your code directory</translate>
 +
 +
* ''[[#helloworld.xml|helloworld.xml]]''
 +
* ''[[#site/helloworld.php|site/helloworld.php]]''
 +
* ''[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/index.html]]''
 +
* ''[[#site/controller.php|site/controller.php]]''
 +
* ''[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/index.html]]''
 +
* ''[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|site/views/helloworld/index.html]]''
 +
* ''[[#site/views/helloworld/view.html.php|site/views/helloworld/view.html.php]]''
 +
* ''[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#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.php|site/views/helloworld/tmpl/default.php]]''
 +
* ''[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/index.html]]''
 +
* ''[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#admin/helloworld.php|admin/helloworld.php]]''
 +
* ''[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/index.html]]''
 +
* ''[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/index.html]]''
 +
* ''[[J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#index.html|admin/sql/updates/mysql/index.html]]''
 +
* ''[[S:MyLanguage/J3.2:Developing_an_MVC_Component/Developing_a_Basic_Component#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]''
 +
 +
<translate><!--T:16-->
 +
If you haven't already done so from the previous lessons, create a compressed file of this directory or directly download the [https://github.com/scionescire/Joomla-3.2-Hello-World-Component/archive/step-3-adding-a-site-menu.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.</translate>
 +
[[File:Com_helloworld_v3-0.0.3.png|thumb|center|400px|<translate><!--T:17-->
 +
Selecting the Menu Item Type</translate>]]
 +
{{-}}
 +
{{notice|<translate><!--T:18-->
 +
Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.</translate>}}
 +
 +
<translate>== Contributors == <!--T:2--></translate>
 +
*[[User:cdemko|Christophe Demko]]
 +
*[[User:oaksu|Ozgur Aksu]]
 +
*[[User:Jossnaz|Lukas Meier]]
 +
*[[User:betweenbrain|Matt Thomas]]
 +
*[[User:Scionescire|Scionescire]]
 +
 +
<div class="row">
 +
<div class="large-6 columns">{{Basic button|<translate><!--T:3-->
 +
S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding_a_view_to_the_site_part|Prev: Adding a view to the site part</translate>|class=expand success}}</div>
 +
<div class="large-6 columns">{{Basic button|<translate><!--T:4-->
 +
S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding_a_model_to_the_site_part|Next: Adding a model to the site part</translate>|class=expand}}</div>
 +
</div>
 +
 +
<noinclude>
 +
<translate>
 +
<!--T:5-->
 +
[[Category:Joomla! 3.x]]
 
[[Category:Joomla! 3.0]]
 
[[Category:Joomla! 3.0]]
 
[[Category:Joomla! 3.1]]
 
[[Category:Joomla! 3.1]]
 
[[Category:Joomla! 3.2]]
 
[[Category:Joomla! 3.2]]
 +
[[Category:Joomla! 3.3]]
 +
[[Category:Joomla! 3.4]]
 
[[Category:Beginner Development]]
 
[[Category:Beginner Development]]
 
[[Category:Component Development]]
 
[[Category:Component Development]]
 +
[[Category:Tutorials]]
 +
[[Category:Tutorials in a Series]]
 +
</translate>
 +
</noinclude>

Revision as of 09:21, 10 July 2015

Other languages:
Deutsch • ‎English • ‎Nederlands • ‎español • ‎français • ‎العربية • ‎中文(台灣)‎
Joomla! 
3.x
Tutorial
Developing an MVC Component



This is a multiple-article series of tutorials on how to develop a Model-View-Controller Component for Joomla! VersionJoomla 3.x.

Begin with the Introduction, and navigate the articles in this series by using the navigation button at the bottom or the box to the right (the Articles in this series).



Introduction[edit]

This tutorial is part of the Developing an MVC Component for Joomla!3.2 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>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

<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.2.0" method="upgrade">

	<name>Hello World!</name>
	<!-- The following elements are optional and free of formatting constraints -->
	<creationDate>January 2014</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 since J2.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 link='index.php?option=com_helloworld'>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

If you haven't already done so from the previous lessons, 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.

Selecting the Menu Item Type
Info non-talk.png
General Information

Please create a pull request or issue at https://github.com/joomla/Joomla-3.2-Hello-World-Component for any code descprepancies or if editing any of the source code on this page.

Contributors[edit]