Develop advance joomla! MVC Component for version 3

31
Develop Advance Joomla! MVC Component for version 3.x Gunjan Patel Sr. PHP Developer Joomla! Bug Squad Member Joomla! SQL Optimisation team coordinator Google Summer Of Code 2014 Mentor Joomla! User Network Ahmedabad

Transcript of Develop advance joomla! MVC Component for version 3

Page 1: Develop advance joomla! MVC Component for version 3

Develop Advance Joomla! MVC Component for version 3.x

Gunjan Patel

Sr. PHP Developer

Joomla! Bug Squad Member

Joomla! SQL Optimisation team coordinator

Google Summer Of Code 2014 Mentor

Joomla! User Network Ahmedabad

Page 2: Develop advance joomla! MVC Component for version 3

Meet my Joomla! Family

[email protected]

Page 3: Develop advance joomla! MVC Component for version 3

Time to play with the Database

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Page 4: Develop advance joomla! MVC Component for version 3

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Create two files:

1. admin/sql/install.mysql.utf8.sql

2. admin/sql/updates/mysql/0.0.6.sql

Important:#__schemas table will be used for upgrades

Page 5: Develop advance joomla! MVC Component for version 3

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Adding a new field type: type="helloworld"

Field file path

Field Custom Type:helloworld

Notice that it was Before list

Page 6: Develop advance joomla! MVC Component for version 3

Let’s create field at admin/models/fields/helloworld.php

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Parent field type

Same as filenameFile Name should be same asField type name

Class name prefix

Should be same as filename

Page 7: Develop advance joomla! MVC Component for version 3

Continue with… admin/models/fields/helloworld.php

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Overriding parent class forHTML select list options.

Get Database Object

Joomla Query Language functions

Looping to create options arrayJHTML options type value text

Page 8: Develop advance joomla! MVC Component for version 3

Display the chosen message from field type in menu using Database Table

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Page 9: Develop advance joomla! MVC Component for version 3

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Create the admin/tables/helloworld.php file

Table Name

Primary Key

Page 10: Develop advance joomla! MVC Component for version 3

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Modify the site/models/helloworld.php file

Return the table instance

Add new getTable function

Page 11: Develop advance joomla! MVC Component for version 3

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Modify the site/models/helloworld.php file

Update getMsg function to get Message from Database

Get message id from request.Notice that here we are not using $_POST or $_GET

Load table data from auto increment id

Page 12: Develop advance joomla! MVC Component for version 3

Update in helloworld.xml

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

ZIP it

Page 13: Develop advance joomla! MVC Component for version 3

Develop Basic Backend

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Page 14: Develop advance joomla! MVC Component for version 3

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Create the admin/helloworld.php file

Page 15: Develop advance joomla! MVC Component for version 3

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Create the general controller admin/controller.php file

Set Default view of component

Component prefix. Typically name of component

Page 16: Develop advance joomla! MVC Component for version 3

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Create the view admin/views/helloworlds/view.html.php file

Parent ClassView NameComponentName as class prefix

Call Model get Item function and pagination function to support pagination

Page 17: Develop advance joomla! MVC Component for version 3

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Create the layout admin/views/helloworlds/tmpl/default.php file

Page 18: Develop advance joomla! MVC Component for version 3

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Create the sub-layout admin/views/helloworlds/tmpl/default_head.php file

Page 19: Develop advance joomla! MVC Component for version 3

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Create the sub-layout admin/views/helloworlds/tmpl/default_body.php file

Page 20: Develop advance joomla! MVC Component for version 3

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Create the sub-layout admin/views/helloworlds/tmpl/default_foot.php file

Page 21: Develop advance joomla! MVC Component for version 3

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Create the Model admin/models/helloworlds.php file

Parent class for listing Function of joomla.

getListQuery function return query object

Page 22: Develop advance joomla! MVC Component for version 3

Review helloworld.xml

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

ZIP it

Page 23: Develop advance joomla! MVC Component for version 3

• Language files naming conventions:

–For components

• en-GB/en-GB.com_helloworld.ini

–For Menus

• en-GB/en-GB.com_helloworld.sys.ini

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Adding Language Translation Files

Page 24: Develop advance joomla! MVC Component for version 3

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Language File Naming Pattern

For Example:

en-GB : Language code for English (UK)gu-IN : Language code for Gujarati (India) hn-IN : Language code for Hindi (India)

<language code>-<country code>

Page 25: Develop advance joomla! MVC Component for version 3

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Language File Naming PatternFor Example:en-GB : Language code for English (UK)gu-IN : Language code for Gujarati (India) hn-IN : Language code for Hindi (India)

<language code>-<country code>

<language code>-<country code>.com_<component_name>.[type].ini

For Example:en-GB.com_helloworld.inigu-IN.com_helloworld.ini----------------------------------------en-GB.com_helloworld.sys.iniGu-IN.com_helloworld.sys.ini

Page 26: Develop advance joomla! MVC Component for version 3

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Language String Pattern

For Example:

COM_HELLOWORLD="Hello World!"COM_HELLOWORLD_DESCRIPTION="This is the Hello World description"COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE="Hello World"COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_DESC="This view displays a selected message"COM_HELLOWORLD_MENU="Hello World!"

<language_key>=“<language_string_value>”

Page 27: Develop advance joomla! MVC Component for version 3

Language File Location Options in helloworld.xml file

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Page 28: Develop advance joomla! MVC Component for version 3

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Language File Naming Pattern

Page 29: Develop advance joomla! MVC Component for version 3

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

or simply in ROOT

Page 30: Develop advance joomla! MVC Component for version 3

Update helloworld.xml

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

ZIP it

Page 31: Develop advance joomla! MVC Component for version 3

Joomla! User Network Ahmedabad Gunjan Patel @ergunjanpatel

Any Questions?