سلام کاربران گرامی حال شما خوبه ؟ با اموزشی دیگر در زمینه جوملا در خدمت شما هستیم
در این مقاله آموزش کامپوننت نویسی جوملا  را خواهید آموخت که چگونه یک model را به کامپوننت مورد استفاده در سایت تان اضافه کنید. در فریم ورک جوملا ۲٫۵ model مسئولیت مدیریت داده‌ها را به عهده دارد. اولین تابعی که برای مدل باید نوشته شود تابع ()get است کار تابع ()get بازگرداندن داده‌ها به فراخوانی کننده آن تابع است. اگر آموزش‌های افزونه نویسی برای جوملا را دنبال کرده باشید حتما می‌دانید که ما برای view از نام HelloViewHello استفاده کردیم، به صورت پیش فرض نام Model همانند View از این قانون پیروی می‌کند و ما نام model مان را HelloModelHello می‌گذاریم.

در پوشه site\models\hello.php فایل hello.php باید شامل کدهای زیر باشد:

<?php
// No direct access to this file
defined(‘_JEXEC’) or die(‘Restricted access’);
// import Joomla modelitem library
jimport(‘joomla.application.component.modelitem’);
class HelloModelHello extends JModelItem
{
protected $msg;
public function getMsg()
{
if(!isset($this->msg))
{
$this->msg = ‘Hello World Model’;
}
return $this->msg;
}
}
?>

سپس HelloViewHello برای استفاده از داده‌های متد get کلاس JView مدل را صدا میزند.

در این مرحله باید کلاس HelloViewHello را در فایل site\views\hello\view.html.php به صورت زیر ویرایش کنیم.

<?php
//No direct access to this file should be called by Joomla
defined(‘_JEXEC’) or die(‘Restricted Access’);
//import joomla controller library
jimport(‘joomla.application.component.view’);
class HelloViewHello extends JView
{
//Overrite JView display method
function display($tpl = null)
{
//Assign data to the view
$this->msg = $this->get(‘Msg’);
// Check for errors
if(count($errors = $this->get(‘Errors’)))
{
JError::raiseError(500,implode(‘<br />’,$errors));
return false;
}
//Display the View
parent::display($tpl);
}
}
?>

حال باید فایل helloworld.xml را به گونه ویرایش کنید که شامل قسمت‌های اضافه شده برای بخش مدل نیز باشد.

<?xml version=”1.0″ encoding=”utf-8″ ?>
<install type=”component” version=”2.5″>
<name>hello</name>
<!–  The following elements are optional and free of formatting conttraints   –>
<creationDate>2013-03-12</creationDate>
<author>Shahab Matapour</author>
<authorEmail>info@joomlafarsi.com</authorEmail>
<authorUrl>http://www.joomlafarsi.com</authorUrl>
<copyright>Copyright Info</copyright>
<license>License Info</license>
<version>1.02</version>
<!– The description is optional and defaults to the name –>
<description>اضافه کردن مدل به کامپوننت</description>
<files folder=”site”>
<filename>index.html</filename>
<filename>hello.php</filename>
<filename>controller.php</filename>
<folder>views</folder>
<folder>models</folder>
</files>
<administration>
<files folder=”admin”>
<filename>index.html</filename>
<filename>hello.php</filename>
</files>
</administration>
</install>

برای ایجاد بسته نصبی از افزونه‌های جوملا از فرمت ZIP استفاده می‌کنیم. جهت ایجاد بسته نصبی از کامپوننت مان باید فایل‌ها زیر را در یک فولدر خارج از جوملا آماده کنیم.

helloworld.xml (فایل نصب کننده کامپوننت) site\hello.php site\index.html site\controller.php site\views\hello\view.html.php site\views\hello\tmpl\default.php site\views\hello\tmpl\default.xml site\models\hello.php admin\hello.php admin\index.html

فایل helloworld.xml همانطور که قبلا به آن اشاره کردیم باید شامل کدهای زیر باشد:

<?xml version=”1.0″ encoding=”utf-8″?>
<install type=”component” version=”2.5″>
<name>hello</name>
<!–  The following elements are optional and free of formatting conttraints   –>
<creationDate>2013-03-12</creationDate>
<author>Shahab Matapour</author>
<authorEmail>info@joomlafarsi.com</authorEmail>
<authorUrl>http://www.joomlafarsi.com</authorUrl>
<copyright>Copyright Info</copyright>
<license>License Info</license>
<version>1.02</version
<description>اضافه کردن مدل به کامپوننت</description>
<files folder=”site”>
<filename>index.html</filename>
<filename>hello.php</filename>
<filename>controller.php</filename>
<folder>views</folder>
<folder>models</folder>
</files>
<administration>
<files folder=”admin”>
<!– Admin Main File Copy Section –>
<filename>index.html</filename>
<filename>hello.php</filename>
</files>
</administration>
</install>

فایل site\hello.php باید شامل کدهای زیر باشد:

<?php
//No direct access to the file
defined(‘_JEXEC’) or die(‘Restricted Access not allowed’);
//import joomla controller library
jimport(‘joomla.application.component.controller’);
//get an instance of the controller prefixed by HelloWorld
$controller = JController::getInstance(‘Hello’);
//perform the request task
$controller->execute(JRequest::getCmd(‘task’));
//Redirect if set by controller
$controller->redirect();
?>

فایل admin\hello.php باید شامل کدهای زیر باشد:

Hello World Administrator

سپس به یک فایل index.html نیاز داریم که در تمامی فولدرهای کامپوننت قرار گیرد.

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

فایل site\controller.php باید شامل کدهای زیر باشد

<?php
//No direct access to this file should be called by Joomla
defined(‘_JEXEC’) or die(‘Restricted Access’);
//import joomla controller library
jimport(‘joomla.application.component.controller’);
class HelloController extends JController
{
}
?>

فایل site\views\hello\view.html.php باید شامل کدهای زیر باشد:

<?php
//No direct access to this file should be called by Joomla
defined(‘_JEXEC’) or die(‘Restricted Access’);
//import joomla controller library
jimport(‘joomla.application.component.view’);
class HelloViewHello extends JView
{
//Overrite JView display method
function display($tpl = null)
{
//Assign data to the view
$this->msg = $this->get(‘Msg’);
// Check for errors
if(count($errors = $this->get(‘Errors’)))
{
JError::raiseError(500,implode(‘<br />’,$errors));
return false;
}
//Display the View
parent::display($tpl);
}
}
?>

فایل site\views\hello\tmpl\default.php باید شامل کدهای زیر باشد:

<?php
//No direct access to this file should be called by Joomla
defined(‘_JEXEC’) or die(‘Restricted Access’);
?>
<h1>
<?php
echo $this->msg;
?>
</h1>

و همچنین اگر تمایل دارید یک نوع منو در مدیریت منو از نوع کامپوننت شما ایجاد شود باید فایل site\views\hello\tmpl\default.xml شامل کدهای زیر باشد:

<?xml version=”1.0″ encoding=”utf-8″?>
<metadata>
<layout title=”New Hello Menu Item”>
<message>New Hello Menu Item Desc</message>
</layout>
</metadata>

و در نهایت فایل site\models\hello.php باید شامل کدهای زیر باشد:

<?php
// No direct access to this file
defined(‘_JEXEC’) or die(‘Restricted access’);
// import Joomla modelitem library
jimport(‘joomla.application.component.modelitem’);
class HelloModelHello extends JModelItem
{
protected $msg;
public function getMsg()
{
if(!isset($this->msg))
{
$this->msg = ‘Hello World Model’;
}
return $this->msg;
}
}
?>

ایجاد فایل helloworld.zip با فایل‌ها و فولدرهایی که در قسمت‌های قبل ایجاد کردیم.

نصب فایل zip شده توسط قسمت مدیریت افزونه‌های جوملا ۲٫۵

نکته : توجه داشته باشید اگر در مراحل قبل کامپوننت را در میان سورس جوملا ساخته و اجرا کرده‌اید قبل نصب فایل zip کامپوننت باید فایل‌های مربوط به افزونه این آموزش را از جوملا پاک کنید و بعد اقدام به نصب فایل zip پکیج شده بکنید.

شما می‌توانید کارکرد این افزونه را با وارد کردن http://localhost/sitename/index.php?option=com_hello در مرورگر چک کنید. اگر عبارت بالا را در آدرس بار مرورگر وارد کنیم باید نتیجه‌ای همانند شکل زیر دریافت کنیم.