استفاده از پایگاه داده ها در کامپوننت نویسی
محتویات
مقدمه
در این مقاله آموزشی جوملا چگونگی اتصال و استفاده از پایگاه دادهها را در کامپوننت نویسی در جوملا 2.5 بررسی خواهیم کرد. کامپوننتها معمولا محتوای خودشان را با استفاده از پایگاه دادهها مدیریت میکنند و این امکان را به شما میدهند که در فرآیند نصب یا حذف کامپوننت فایلهای کوئری SQL را اجرا کنید.
توجه: اگر سری آموزشهای ایجاد کامپوننت قبلی را دنبال کردهاید میتوانید از کدهای آن استفاده نمایید و در غیر اینصورت کد مربوط به این مقاله آموزشی را میتوانید از لینک انتهای مقاله دانلود نمایید.
استفاده از sql در هنگام نصب و حذف کامپوننت
ایجاد پایگاه دادهها در هنگام نصب کامپوننت دو فایل admin\sql\install.mysql.utf8.sql و admin\sql\updates\mysql\0.0.6.sql در مسیر و با نامهای مشخص شده ایجاد کنید.
<source lang="sql">
DROP TABLE IF EXISTS `#__hello`;
CREATE TABLE `#__hello` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`greeting` varchar(25) NOT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `#__hello` (`greeting`) VALUES ('DB Hello World!'), ('DB Good bye World!'); </source>
این فایل installation است و هنگام نصب کامپوننت اگر در فایل xml (در این مثال helloworld.xml) مشخص کرده باشید اجرا خواهد شد.
ویرایش فایل helloworld.xml
<source lang="xml"> <?xml version="1.0" encoding="utf-8"?> <install type="component" version="2.5"> <name>hello</name> <creationDate>2013-05-26</creationDate> <author>Shahab Matapour</author> <authorEmail>[email protected]</authorEmail> <authorUrl>http://www.joomlafarsi.com</authorUrl> <copyright>Copyright Info</copyright> <license>License Info</license> <version>1.01</version> <description>Hello World Test Component ...</description> <install> <sql> <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file> </sql> </install> <uninstall> <sql> <file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file> </sql> </uninstall>
<files folder="site"> <filename>index.html</filename> <filename>hello.php</filename> <filename>controller.php</filename> <folder>views</folder> <folder>models</folder> </files> <administration> <menu img="components/com_proforms/images/love.png" >کامپوننت آموزشی</menu>
<files folder="admin"> <filename>index.html</filename> <filename>hello.php</filename> <folder>sql</folder> <folder>tables</folder> <folder>models</folder> </files> </administration> </install> </source>
ایجاد فایل همانند فرآیند نصب (همانند مرحله یک)
ایجاد فایل در admin\sql\uninstall.mysql.utf8.sql که شامل کدهای زیر باشد.
<source lang="sql">
DROP TABLE IF EXISTS `#__hello`;
</source>
اضافه کردن یک نوع فیلد جدید
به آدرس site\views\hello\tmpl\default.xml رفته و کدهای ذیل را در فایل default.xml کپی نمایید.
<source lang="xml">
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<layout title="New Hello Menu Item">
<message>توضیحات موبوط به آیتم منوی کامپوننت</message>
</layout>
<fields name="request"
addfieldpath="\administrator\components\com_hello\models\fields"
>
<fieldset name="request">
<field
name="id"
type="hello"
label="Hello Field Label"
description="Desc of Hello Field Label"
default="1"
>
<option value="1">1.Hello World</option>
<option value="2">2.Good Bye</option>
</field>
</fieldset>
</fields>
</metadata>
</source>
این کد ضمن معرفی یک نوع فیلد جدید برای جوملا مشخص میکند که باید در آدرس /administrator/components/com_helloworld/models/fields به دنبال فیلد تعریف شده بگردد.
ایجاد فایل admin\models\fields\hello.php و قرار دادن کد زیر در فایل hello.php
<source lang="php">
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted Access');
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
class JFormFieldHello extends JFormFieldList
{
protected $type='HELLOWORLD';
protected function getOptions()
{
$db=JFactory::getDBO();
$query=$db->getQuery(true);
$query->select('id,greeting');
$query->from('#__hello');
$db->setQuery((string)$query);
$message=$db->loadObjectList();
$options=array();
if ($messages)
{
foreach($messages as $message)
{
$options[] = JHtml::_('select.option', $message->id, $message->greeting);
}
}
$options = array_merge(parent::getOptions(), $options);
return $options;
}
}
?>
</source>
نمایش یک پیغام
کلاس hellomodelhello یک مناسب را نمایش میدهد این پیغام برحسب شناسهها محاسبه و نمایش داده میشوند.
باید به آدرس site\models\hello.php رفته و فایل hello.php را به صورت زیر ویرایش کنیم.
<source lang="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 getTable($type = 'Hello', $prefix = 'HelloTable', $config = array())
{
return JTable::getInstance($type, $prefix, $config);}
public function getMsg()
{
if(!isset($this->msg))
{
$id=JRequest::getInt('id',1);
// Get a HelloTableHello instance
$table = $this->getTable();
// Load the message
$table->load($id);
// Assign the message
$this->msg = $table->greeting;
}
return $this->msg;
}
}
?>
</source>
به این ترتیب Model از کلاس hellotablehello میپرسد که چه پیغامی را تولید کند.
یک فایل در admin\tables\hello.php ایجاد کنید که شامل کدهای زیر باشد.
<source lang="php">
<?php
// No direct access
defined('_JEXEC') or die('Restricted access');
// import Joomla table library
jimport('joomla.database.table');
/**
- Hello Table class
- /
class HelloTableHello extends JTable { /**
- Constructor
- @param object Database connector object
- /
function __construct(&$db) { parent::__construct('#__hello', 'id', $db); } } ?> </source>
ایجاد یک بسته نصبی از کامپوننت
برای ایجاد بسته نصبی از افزونههای جوملا از فرمت 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
admin\sql\install.mysql.utf8.sql
admin\sql\updates\mysql\0.0.6.sql
admin\sql\uninstall.mysql.utf8.sql
admin\models\fields\hello.php
admin\tables\hello.php
در صورتی که سری آموزشهای ایجاد کامپوننت قبلی را دنبال کردهاید میتوانید از کدهای آن استفاده نمایید و در غیر اینصورت کد مربوط به این مقاله آموزشی را میتوانید از لینک انتهای مقاله دانلود نمایید.
تا این مرحله باید یک فولدر به نام helloworld.zip داشته باشیم که شامل فایلهای و فولدرهای بالا باشد.
سپس میتوانیم فایل zip بسته نصبی کامپوننت را از طریق مدیریت افزونهها در جوملا نصب کنیم.
بعد از نصب باید زیر منوی آموزش کامپوننت نویسی در منوی کامپوننتها ایجاد شده باشد.
سپس شما میتوانید در مرورگر آدرس http://localhost/siteRoot/index.php?option=com_hello را وارد کنید تا نتیجه کارتان را مشاهده کنید. نتیجه باید همانند شکل زیر باشد.
جهت دانلود فایلهای مربوط به این آموزش میتوانید به آدرس upload.mambolearn.com/create_component/com_hello.zip مراجعه نمایید.
جمع آوری شده توسط :شهاب مطاع پور
استفاده از مطالب دانشنامه جوملا فارسی - مامبو فارسی با ذکر منبع ( دانشنامه جوملا فارسی ) و لینک مستقیم به http://docs.joomlafarsi.com بلامانع است.
|