سلام به شما دوستان عزیز ، امیدوارم که خوب باشید , در این قسمت از آموزش ایجاد کامپوننت‌های جوملا خواهیم آموخت که چگونه یک نوع آیتم منو در مدیریت منوها از نوع کامپوننت ایجاد کنیم. بدین معنی که کاربران بتوانند آیتم‌های منو از نوع کامپوننتی که ما ایجاد کرده‌ایم داشته باشند. در فریم ورک جوملا ۲٫۵ نحوه دسترسی به کامپوننت‌ها توسط آیتم‌های منو انجام می‌شود. اگر این سری آموزش‌ها را دنبال کرده باشید حتما توجه کرده‌اید که تاکنون از مدیریت منوها قادر به ایجاد منو از نوع کامپوننت helloworld نبودیم. اینک تصمیم داریم که این امکان را به کاربران دهیم تا یک آیتم منو از نوع کامپوننت helloworld بسازند.

در آدرس site\views\hello\tmpl باید یک فایل به نام default.xml در پوشه tmpl ایجاد کنیم که شامل کدهای زیر باشد.

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

فایل 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-01-19</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.03</version>
<description>اضافه کردن آیتم منو در مدیریت منوها</description>

<files folder=”site”>
<filename>index.html</filename>
<filename>hello.php</filename>
<filename>controller.php</filename>
<folder>views</folder>
</files>
<administration>
<files folder=”admin”>
<!– Admin Main File Copy Section –>
<filename>index.html</filename>
<filename>hello.php</filename>
<!– SQL files section –>
</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 = ‘Hello World in View’;
//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>

در این مرحله باید فایل helloworld.zip که شامل تمام فایل‌ها و پوشه‌ها اشاره شده در این مقاله است را آماده کنید.

توجه داشته باشید که مشروح کدهایی که در این بخش از آنها استفاده کردیم در آموزش‌های قبلی توضیح داده شده‌اند و در این سری تنها این فایل xml اضافه شده است، که به بررسی آن می‌پردازیم عبارتی که داخل تگ message مشاهده می‌کنید عبارتی است که در مدیریت منوها هنگامی که تصمیم دارید آیتم منویی از نوع کامپوننت آموزشی مان بسازید نمایش داده می‌شود.

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

Lastresult zip admin.jpg

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

View component user view.png

در مقالات قبل تا این مراحل پیش رفته بودیم اگر تاکنون موفق نشدید ۲ نتیجه بالا را مشاهده کنید باید مجددا مقالات قبل را مطالعه کنید اما اگر تاکنون همه چیز بدرستی کار کرده می‌توانید به از مدیریت منوها ← منوی اصلی (یا هر منوی دیگری) ← ایجاد آیتم منوی جدید کلیک کنید. سپس از صفحه انتخاب انواع منوها از قسمت hello میتوانید نتیجه کارتان را مشاهده کنید.

Menuitem-for-component.jpg