J3.x

Difference between revisions of "Developing an MVC Component/Developing a Basic Component"

From Joomla! Documentation

< J3.x:Developing an MVC Component
(Marked this version for translation)
(46 intermediate revisions by 14 users not shown)
Line 1: Line 1:
{{:Developing a Model-View-Controller Component/3.0}}
+
<noinclude><languages /></noinclude>
 +
{{:J3.1:Developing an MVC Component/<translate><!--T:1-->
 +
en</translate>}}
 +
<translate>
 +
== Notes == <!--T:21-->
 +
This tutorial is part of the [[S:MyLanguage/J3.x:Developing_an_MVC_Component/Introduction|Developing a MVC Component for Joomla! 3.x]] tutorial. You are encouraged to read the previous parts of the tutorial before reading this.
  
= Developing a Basic Component =
+
<!--T:22-->
 +
If you have used Joomla! before reading this tutorial, you have noticed that extensions are installed using a compressed file containing all the things which are needed for installing and uninstalling them.
  
This page goes through the basic steps required to make the simplest possible component that will output ''Hello, world!'' to the [[Site (Application)|front-end]] of a Joomla!{{JVer|3.1}} website.
+
<!--T:23-->
 +
You can follow the steps below to create the Hello World! component, or you can directly download the [https://github.com/scionescire/Joomla-3.2-Hello-World-Component/archive/step-1-basic-component.zip archive]
  
== Main Output ==
+
<!--T:24-->
 +
Here are some slides based on this documents to explain how to create basic to advance Joomla! components.<br />
 +
[http://bit.ly/joomlaWorkshopBasic Joomla! Basic Component Help]<br />
 +
[http://bit.ly/joomlaWorkshopAdvance Joomla! Advance Component Help]
  
First set up the basic public output for this component.  Create <code>yoursite/components/com_helloworld/helloworld.php</code> with the following contents:
+
== How to add a component to Joomla! == <!--T:25-->
 +
In this article we will cover how to create and install a basic Joomla! component. For this example we will be working with the Hello World! component.
  
<source lang="php">
+
<!--T:26-->
<?php
+
To begin, you must first use your preferred file manager to create a directory for the Hello World! component. This directory can be anywhere on your file system, as long as it outside of your Joomla! installation directory. For this example we will name the directory <tt>com_helloworld</tt>, but this directory can be named anything.
 +
 
 +
<!--T:27-->
 +
Next, inside this directory we need to create some files. Using your preferred file manager, create the following files; as you create the files, add the source code for each file which is found in ''[[#File Details| File Details]]''.</translate>
 +
 
 +
<!--T:28-->
 +
{| border=1
 +
| 1
 +
| ''[[#helloworld.xml|helloworld.xml]]''
 +
| <translate><!--T:35-->
 +
this is an XML (manifest) file that tells Joomla! how to install our component.</translate>
 +
|-
 +
| 2
 +
| ''[[#site/helloworld.php|site/helloworld.php]]''
 +
| <translate><!--T:36-->
 +
this is the site entry point to the Hello World! component</translate>
 +
|-
 +
| 3
 +
| ''[[#index.html|site/index.html]]''
 +
| <translate><!--T:37-->
 +
prevents web server from listing directory content</translate>
 +
|-
 +
| 4
 +
| ''[[#index.html|admin/index.html]]''
 +
| <translate><!--T:38-->
 +
prevents web server from listing directory content</translate>
 +
|-
 +
| 5
 +
| ''[[#admin/helloworld.php|admin/helloworld.php]]''
 +
| <translate><!--T:39-->
 +
this is the administrator entry point to the Hello World! component</translate>
 +
|-
 +
| 6
 +
| ''[[#index.html|admin/sql/index.html]]''
 +
| <translate><!--T:40-->
 +
prevents web server from listing directory content</translate>
 +
|-
 +
| 7
 +
| ''[[#index.html|admin/sql/updates/index.html]]''
 +
| <translate><!--T:54-->
 +
prevents web server from listing directory content</translate>
 +
|-
 +
| 8
 +
| ''[[#index.html|admin/sql/updates/mysql/index.html]]''
 +
| <translate><!--T:41-->
 +
prevents web server from listing directory content</translate>
 +
|-
 +
| 9
 +
| ''[[#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]''
 +
| <translate><!--T:42-->
 +
file allowing to initialise schema version of the com_helloworld component.</translate>
 +
|}
 +
 
 +
<translate>
 +
=== Installing the Hello World! Component === <!--T:29-->
 +
Using your preferred file manager, create a .zip file of this directory. For this example we will name the file <tt>com_helloworld.zip</tt>, again this file could have been named anything.
 +
 
 +
<!--T:30-->
 +
Now we need to install the Hello World! component. There are two ways to do this, both are covered in [[Installing an extension| Installing an Extension]]. Here we will cover the method using the Extension Manager of Joomla!.
 +
 
 +
<!--T:31-->
 +
*Using your preferred web browser, navigate to the Administrator panel of your Joomla! site. The address would be <tt><yoursite>/joomla/administrator/index.php</tt>. For this example we will navigate to <tt>localhost/joomla/administrator/index.php</tt>.
 +
*Click Extensions {{rarr}} Manage {{rarr}} Install {{rarr}} Upload Package File {{rarr}} Choose File
 +
*Navigate and Select File
 +
*Click Upload & Install
 +
 
 +
<!--T:32-->
 +
Note - You should see a message letting you know if the installation succeeded or failed.
  
echo 'Hello world';
+
<!--T:33-->
</source>
+
You can test this basic function of the component by entering the Hello World! page for the site and administrator portions of your Joomla! website.
 +
* Using your preferred web browser, navigate to the Hello World! component page located on the site portion of your website. The address would be <tt><yoursite>/joomla/index.php?option=com_helloworld</tt>. For this example we will navigate to <tt>localhost/joomla/index.php?option=com_helloworld</tt>.
 +
* Using your preferred web browser, navigate to the Hello World! component page located on the administrator portion of your website. The address would be <tt><yoursite>/joomla/administrator/index.php?option=com_helloworld</tt>. For this example we will navigate to <tt>localhost/joomla/administrator/index.php?option=com_helloworld</tt>.
  
== Manifest file ==
+
<!--T:34-->
 +
You can also notice that the ''Hello World!'' component is visible in the administrator site of your Joomla installation under the ''Components'' menu.
  
Every extension needs a [[manifest files|manifest file]] that specifies installation and configuration information for the extension. The manifest file is named <code>''componentname''.xml</code>.  For a simple component we need only include a minimal number of the possible elements in this XML file.
+
==File Details== <!--T:15-->
 +
</translate>
 +
{{vanchor|admin/sql/updates/mysql/0.0.1.sql}}
 +
<translate><!--T:16-->
 +
is an empty file allowing to initialise schema version of the com_helloworld component.</translate>
  
Create <code>helloworld.xml</code> in the same directory as your <code>helloworld.php</code> above, with the following contents:
+
<source lang="sql">
 +
</source>
 +
 
 +
{{vanchor|helloworld.xml}}
  
 
<source lang="xml">
 
<source lang="xml">
 
<?xml version="1.0" encoding="utf-8"?>
 
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.1" method="upgrade">
+
<extension type="component" version="3.2.0" method="upgrade">
 +
 
 
<name>Hello World!</name>
 
<name>Hello World!</name>
 +
<!-- The following elements are optional and free of formatting constraints -->
 +
<creationDate>December 2013</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.1</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>
 +
</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>
 
</extension>
 
</source>
 
</source>
  
Note that the <code>name</code> element is actually optional, but it makes for easier identification in the next step.
+
{{vanchor|site/helloworld.php}}
 +
 
 +
<source lang="php">
 +
Hello World
 +
</source>
  
== Installation ==
+
{{vanchor|admin/helloworld.php}}
  
Next, we need to tell Joomla! to 'discover' this new component, so that it can be installed and used.  This is done by going to the ''Extension Manager -> Discover'' and clicking 'Discover' in the toolbar.  This will scan the <code>components</code> directory (amongst others), looking for components that have not yet been installed.
+
<source lang="php">
 +
Hello World administration
 +
</source>
  
The new component should be listed in the resulting table, and to install it you just select it (with the checkbox) and click 'Install' in the toolbar.
+
{{vanchor|index.html}}
  
Note: Don't worry about the message ''"Component Install: The XML file did not contain an administration element"'', as our component does not yet have any [[Administrator (Application)|administration]] features.  We'll add these later in the tutorial.
+
<translate><!--T:17-->
 +
common to all folders</translate>
  
== Hello, world! ==
+
<source lang="html4strict">
 +
<html><body bgcolor="#FFFFFF"></body></html>
 +
</source>
  
You can now see the basic component in action, by navigating to <code><nowiki>http://localhost/joomla/index.php?option=com_helloworld</nowiki></code> (replacing <code>localhost/joomla</code> with your own installation location).
+
<translate>
 +
==Component Contents== <!--T:43-->
 +
</translate>
 +
<translate><!--T:44-->
 +
At this point in the tutorial, your component should contain the following files:</translate>
 +
{| border=1
 +
| 1
 +
| ''[[#helloworld.xml|helloworld.xml]]''
 +
| <translate><!--T:45-->
 +
this is an XML (manifest) file that tells Joomla! how to install our component.</translate>
 +
|-
 +
| 2
 +
| ''[[#site/helloworld.php|site/helloworld.php]]''
 +
| <translate><!--T:46-->
 +
this is the site entry point to the Hello World! component</translate>
 +
|-
 +
| 3
 +
| ''[[#index.html|site/index.html]]''
 +
| <translate><!--T:47-->
 +
prevents web server from listing directory content</translate>
 +
|-
 +
| 4
 +
| ''[[#index.html|admin/index.html]]''
 +
| <translate><!--T:48-->
 +
prevents web server from listing directory content</translate>
 +
|-
 +
| 5
 +
| ''[[#admin/helloworld.php|admin/helloworld.php]]''
 +
| <translate><!--T:49-->
 +
this is the administrator entry point to the Hello World! component</translate>
 +
|-
 +
| 6
 +
| ''[[#index.html|admin/sql/index.html]]''
 +
| <translate><!--T:50-->
 +
prevents web server from listing directory content</translate>
 +
|-
 +
| 7
 +
| ''[[#index.html|admin/sql/updates/index.html]]''
 +
| <translate><!--T:51-->
 +
prevents web server from listing directory content</translate>
 +
|-
 +
| 8
 +
| ''[[#index.html|admin/sql/updates/mysql/index.html]]''
 +
| <translate><!--T:52-->
 +
prevents web server from listing directory content</translate>
 +
|-
 +
| 9
 +
| ''[[#admin/sql/updates/mysql/0.0.1.sql|admin/sql/updates/mysql/0.0.1.sql]]''
 +
| <translate><!--T:53-->
 +
file allowing to initialise schema version of the com_helloworld component.</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>}}
  
<noinclude>[[Category:Component Development]] [[Category:Joomla! 3.0]] [[Category:Joomla! 3.1]]</noinclude>
+
<div class="row">
 +
<div class="large-6 columns">{{Basic button|<translate><!--T:19-->
 +
S:MyLanguage/J3.x:Developing_an_MVC_Component/Introduction|Prev: Introduction</translate>|class=expand success}}</div>
 +
<div class="large-6 columns">{{Basic button|<translate><!--T:20-->
 +
S:MyLanguage/J3.x:Developing_an_MVC_Component/Adding_a_view_to_the_site_part|Next: Adding a view to the site part</translate>|class=expand}}</div>
 +
</div>
 +
__NOTOC__
 +
<noinclude>
 +
<translate>
 +
<!--T:2-->
 +
[[Category:Joomla! 3.x]]
 +
[[Category:Joomla! 3.0]]
 +
[[Category:Joomla! 3.1]]
 +
[[Category:Joomla! 3.2]]
 +
[[Category:Joomla! 3.3]]
 +
[[Category:Joomla! 3.4]]
 +
[[Category:Beginner Development]]
 +
[[Category:Component Development]]
 +
[[Category:Tutorials]]
 +
[[Category:Tutorials in a Series]]
 +
</translate>
 +
</noinclude>

Revision as of 15:06, 6 October 2015

Other languages:
Deutsch • ‎English • ‎Nederlands • ‎español • ‎français • ‎italiano • ‎português do Brasil • ‎русский • ‎العربية • ‎中文(中国大陆)‎ • ‎中文(台灣)‎
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).



Notes[edit]

This tutorial is part of the Developing a MVC Component for Joomla! 3.x tutorial. You are encouraged to read the previous parts of the tutorial before reading this.

If you have used Joomla! before reading this tutorial, you have noticed that extensions are installed using a compressed file containing all the things which are needed for installing and uninstalling them.

You can follow the steps below to create the Hello World! component, or you can directly download the archive

Here are some slides based on this documents to explain how to create basic to advance Joomla! components.
Joomla! Basic Component Help
Joomla! Advance Component Help

How to add a component to Joomla![edit]

In this article we will cover how to create and install a basic Joomla! component. For this example we will be working with the Hello World! component.

To begin, you must first use your preferred file manager to create a directory for the Hello World! component. This directory can be anywhere on your file system, as long as it outside of your Joomla! installation directory. For this example we will name the directory com_helloworld, but this directory can be named anything.

Next, inside this directory we need to create some files. Using your preferred file manager, create the following files; as you create the files, add the source code for each file which is found in File Details.

1 helloworld.xml this is an XML (manifest) file that tells Joomla! how to install our component.
2 site/helloworld.php this is the site entry point to the Hello World! component
3 site/index.html prevents web server from listing directory content
4 admin/index.html prevents web server from listing directory content
5 admin/helloworld.php this is the administrator entry point to the Hello World! component
6 admin/sql/index.html prevents web server from listing directory content
7 admin/sql/updates/index.html prevents web server from listing directory content
8 admin/sql/updates/mysql/index.html prevents web server from listing directory content
9 admin/sql/updates/mysql/0.0.1.sql file allowing to initialise schema version of the com_helloworld component.

Installing the Hello World! Component[edit]

Using your preferred file manager, create a .zip file of this directory. For this example we will name the file com_helloworld.zip, again this file could have been named anything.

Now we need to install the Hello World! component. There are two ways to do this, both are covered in Installing an Extension. Here we will cover the method using the Extension Manager of Joomla!.

  • Using your preferred web browser, navigate to the Administrator panel of your Joomla! site. The address would be <yoursite>/joomla/administrator/index.php. For this example we will navigate to localhost/joomla/administrator/index.php.
  • Click Extensions    Manage    Install    Upload Package File    Choose File
  • Navigate and Select File
  • Click Upload & Install

Note - You should see a message letting you know if the installation succeeded or failed.

You can test this basic function of the component by entering the Hello World! page for the site and administrator portions of your Joomla! website.

  • Using your preferred web browser, navigate to the Hello World! component page located on the site portion of your website. The address would be <yoursite>/joomla/index.php?option=com_helloworld. For this example we will navigate to localhost/joomla/index.php?option=com_helloworld.
  • Using your preferred web browser, navigate to the Hello World! component page located on the administrator portion of your website. The address would be <yoursite>/joomla/administrator/index.php?option=com_helloworld. For this example we will navigate to localhost/joomla/administrator/index.php?option=com_helloworld.

You can also notice that the Hello World! component is visible in the administrator site of your Joomla installation under the Components menu.

File Details[edit]

admin/sql/updates/mysql/0.0.1.sql is an empty file allowing to initialise schema version of the com_helloworld component.

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>December 2013</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.1</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>
	</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>

site/helloworld.php

Hello World

admin/helloworld.php

Hello World administration

index.html

common to all folders

<html><body bgcolor="#FFFFFF"></body></html>

Component Contents[edit]

At this point in the tutorial, your component should contain the following files:

1 helloworld.xml this is an XML (manifest) file that tells Joomla! how to install our component.
2 site/helloworld.php this is the site entry point to the Hello World! component
3 site/index.html prevents web server from listing directory content
4 admin/index.html prevents web server from listing directory content
5 admin/helloworld.php this is the administrator entry point to the Hello World! component
6 admin/sql/index.html prevents web server from listing directory content
7 admin/sql/updates/index.html prevents web server from listing directory content
8 admin/sql/updates/mysql/index.html prevents web server from listing directory content
9 admin/sql/updates/mysql/0.0.1.sql file allowing to initialise schema version of the com_helloworld component.
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.