SlideShare une entreprise Scribd logo
1  sur  14
‫دروپا‬ ‫ماژول‬ ‫نویسی‬ ‫برنامه‬‫ل‬
‫در‬5‫ساده‬ ‫گام‬
‫توسط‬ ‫شده‬ ‫نوشته‬:‫دروپال‬‫یکـا‬
drupalika.org
‫دروپالیکا‬
info@drupalika.org
drupalika.org
‫اول‬ ‫گام‬:‫تعیین‬
‫ایجاد‬ ‫و‬ ‫ماژول‬ ‫نام‬
‫آن‬ ‫فولدر‬
‫شود‬ ‫می‬ ‫شناخته‬ ‫نام‬ ‫آن‬ ‫به‬ ‫دروپال‬ ‫سیستم‬ ‫توسط‬ ‫که‬ ‫دارد‬ ‫نام‬ ‫یک‬ ‫ماژول‬ ‫هر‬.
‫کوچک‬ ‫حروف‬ ‫با‬ ‫باید‬ ‫نام‬ ‫این‬‫التین‬‫شود‬ ‫نوشته‬.
‫زیرخط‬ ‫از‬ ‫استفاده‬ ‫آن‬ ‫ادامه‬ ‫در‬ ‫و‬ ‫باشد‬ ‫التین‬ ‫حرف‬ ‫یک‬ ‫با‬ ‫باید‬ ‫آن‬ ‫شروع‬‫و‬‫های‬ ‫کاراکتر‬‫عددی‬
‫است‬ ‫بالمانع‬.
‫وج‬ ‫آن‬ ‫مشابه‬ ‫دروپال‬ ‫دیگر‬ ‫های‬ ‫قالب‬ ‫و‬ ‫ها‬ ‫ماژول‬ ‫میان‬ ‫در‬ ‫و‬ ‫باشد‬ ‫یکتا‬ ‫نامی‬ ‫باید‬ ‫نام‬ ‫این‬‫ود‬
‫باشد‬ ‫نداشته‬.
‫مانند‬:drupalika_module
‫خود‬ ‫دروپالی‬ ‫سایت‬ ‫های‬ ‫فایل‬ ‫از‬ ‫زیر‬ ‫مسیر‬ ‫در‬ ‫جدید‬ ‫فولدر‬ ‫یک‬‫بسازید‬:
sites/all/modules
‫دهید‬ ‫تغییر‬ ،‫اید‬ ‫کرده‬ ‫انتخاب‬ ‫که‬ ‫نامی‬ ‫به‬ ‫را‬ ‫فولدر‬ ‫این‬ ‫نام‬.‫بای‬ ‫تاکنون‬ ‫بنابراین‬‫با‬ ‫فولدری‬ ‫د‬
‫باشیم‬ ‫داشته‬ ‫زیر‬ ‫مسیر‬:
sites/all/modules/drupalika_module
drupalika.org
‫دوم‬ ‫گام‬:
‫ماژو‬ ‫شناساندن‬‫ل‬
‫دروپال‬ ‫به‬
‫ک‬ ‫ایجاد‬ ‫ماژول‬ ‫اطالعات‬ ‫حاوی‬ ‫فایل‬ ‫یک‬ ‫باید‬ ،‫دروپال‬ ‫به‬ ‫ماژول‬ ‫شناساندن‬ ‫و‬ ‫معرفی‬ ‫برای‬‫و‬ ‫نیم‬
‫بدهیم‬ ‫قرار‬ ‫ماژول‬ ‫فولدر‬ ‫در‬.
‫پس‬ ‫و‬ ‫باشد‬ ‫یکسان‬ ‫کردیم‬ ‫تعیین‬ ‫قبل‬ ‫مرحله‬ ‫در‬ ‫که‬ ‫ماژول‬ ‫نام‬ ‫با‬ ‫باید‬ ‫فایل‬ ‫این‬ ‫نام‬‫آن‬ ‫وند‬‫نیز‬
info‫باشد‬.
‫فایل‬ ‫باید‬ ‫کردیم‬ ‫کار‬ ‫که‬ ‫ای‬ ‫نمونه‬ ‫در‬ ‫بنابراین‬drupalika_module.info‫را‬‫فولدر‬ ‫در‬
drupalika_module‫درست‬‫کنیم‬.
‫دهیم‬ ‫می‬ ‫قرار‬ ‫را‬ ‫زیر‬ ‫متن‬ ‫فایل‬ ‫این‬ ‫در‬ ،‫شروع‬ ‫برای‬:
drupalika.org
name = Drupalika First Module
description = This is a short description about module
core = 7.x
package = Drupalika
‫فایل‬ ‫اطالعات‬
info
drupalika.org
‫مقابل‬ ‫که‬ ‫مقداری‬name‫قرار‬‫سایت‬ ‫مدیر‬ ‫که‬ ‫است‬ ‫نامی‬ ،‫گیرد‬ ‫می‬
‫می‬ ‫مشاهده‬ ‫سایت‬ ‫های‬ ‫ماژول‬ ‫مدیریت‬ ‫صفحه‬ ‫در‬ ‫ها‬ ‫ماژول‬ ‫لیست‬ ‫در‬
‫کند‬.‫باشد‬ ‫نیز‬ ‫فاصله‬ ‫حاوی‬ ‫تواند‬ ‫می‬ ‫نام‬ ‫این‬.
name
‫مقابل‬ ‫در‬ ‫که‬ ‫مقداری‬description‫قرار‬‫ای‬ ‫خالصه‬ ‫توضیح‬ ،‫گیرد‬ ‫می‬
‫در‬ ‫سایت‬ ‫مدیر‬ ‫به‬ ‫نمایش‬ ‫جهت‬ ‫فقط‬ ‫که‬ ‫است‬ ‫آن‬ ‫کارکرد‬ ‫و‬ ‫ماژول‬ ‫از‬
‫است‬ ‫سایت‬ ‫های‬ ‫ماژول‬ ‫مدیریت‬ ‫صفحه‬ ‫در‬ ‫ها‬ ‫ماژول‬ ‫لیست‬.
description
‫مقابل‬ ‫که‬ ‫مقداری‬core‫قرار‬‫را‬ ‫دروپال‬ ‫از‬ ‫ای‬ ‫نسخه‬ ‫شماره‬ ،‫گیرد‬ ‫می‬
‫است‬ ‫شده‬ ‫نوشته‬ ‫آن‬ ‫برای‬ ‫ماژول‬ ‫این‬ ‫که‬ ‫کند‬ ‫می‬ ‫معین‬.‫اینجا‬ ‫در‬
‫مقدار‬7.x‫نشان‬‫دروپال‬ ‫های‬ ‫نسخه‬ ‫تمام‬ ‫برای‬ ‫ماژول‬ ‫این‬ ‫که‬ ‫دهد‬ ‫می‬
7‫کند‬ ‫می‬ ‫کار‬.
core
‫مقابل‬ ‫که‬ ‫مقداری‬package‫قرار‬‫است‬ ‫ماژول‬ ‫گروه‬ ‫نام‬ ،‫گیرد‬ ‫می‬.‫در‬
‫نمایش‬ ‫هایی‬ ‫گروه‬ ‫در‬ ‫ها‬ ‫ماژول‬ ،‫سایت‬ ‫در‬ ‫ها‬ ‫ماژول‬ ‫مدیریت‬ ‫صفحه‬
‫شوند‬ ‫می‬ ‫داده‬.‫کنیم‬ ‫می‬ ‫تعیین‬ ‫را‬ ‫گروه‬ ‫این‬ ‫اینجا‬ ‫در‬.
package
‫سوم‬ ‫گام‬:‫ایجاد‬
‫کد‬ ‫حاوی‬ ‫فایل‬
‫های‬PHP
‫های‬ ‫کد‬ ‫گرفتن‬ ‫قرار‬ ‫محل‬ ‫ماژول‬ ‫ساخت‬ ‫در‬ ‫بخش‬ ‫مهمترین‬PHP‫است‬.
‫های‬ ‫کد‬ ‫نوشتن‬ ‫جهت‬ ‫فایل‬ ‫یک‬ ‫باید‬ ‫شروع‬ ‫برای‬ ‫بنابراین‬PHP‫در‬‫کنیم‬ ‫ایجاد‬ ،‫آن‬.
‫کد‬ ‫حاوی‬ ‫فایل‬ ‫ترین‬ ‫اصلی‬ ‫که‬ ‫فایل‬ ‫این‬‫های‬‫پسوند‬ ‫دارای‬ ‫باید‬ ،‫است‬ ‫ماژول‬.module‫باشد‬.
‫بنابراین‬‫اضاف‬ ‫خود‬ ‫ماژول‬ ‫فولدر‬ ‫به‬ ‫را‬ ‫فایلی‬ ‫چنین‬ ‫باید‬ ‫کردیم‬ ‫کار‬ ‫که‬ ‫ای‬ ‫نمونه‬ ‫در‬‫کنیم‬ ‫ه‬:
drupalika_module.module
‫های‬ ‫کد‬ ‫کننده‬ ‫شروع‬ ‫تگ‬ ،‫فایل‬ ‫این‬ ‫در‬PHP‫را‬‫می‬‫نویسیم‬.
drupalika.org
‫چهارم‬ ‫گام‬:‫ایجاد‬
‫در‬ ‫صفحه‬ ‫یک‬
‫برنام‬ ‫با‬ ‫سایت‬‫ه‬
‫نویسی‬PHP
‫اساس‬ ‫بر‬ ‫را‬ ‫داریم‬ ‫توقع‬ ‫ماژول‬ ‫از‬ ‫که‬ ‫امکاناتی‬ ‫باید‬ ،‫مرحله‬ ‫این‬ ‫در‬Drupal API‫و‬‫زبان‬ ‫با‬
‫نویسی‬ ‫برنامه‬PHP‫مشخص‬‫کنیم‬.
‫در‬‫آن‬ ‫آدرس‬ ‫که‬ ‫کنیم‬ ‫اضافه‬ ‫سایت‬ ‫به‬ ‫جدید‬ ‫صفحه‬ ‫یک‬ ‫داریم‬ ‫تصمیم‬ ‫ماژول‬ ‫این‬
drupalika/develop‫است‬.‫باشیم‬ ‫داشته‬ ‫آدرسی‬ ‫چنین‬ ‫سایت‬ ‫این‬ ‫در‬ ‫مثال‬:
http://drupalika.org/drupalika/develop
‫باید‬ ‫کنیم‬ ‫معرفی‬ ‫دروپال‬ ‫به‬ ‫را‬ ‫جدید‬ ‫آدرس‬ ‫یک‬ ‫اینکه‬ ‫برای‬hook_menu‫سازی‬ ‫پیاده‬ ‫را‬
‫کنیم‬.
‫آن‬ ‫نام‬ ‫که‬ ‫باشیم‬ ‫داشته‬ ‫خود‬ ‫ماژول‬ ‫های‬ ‫کد‬ ‫در‬ ‫تابعی‬ ‫باید‬ ‫ما‬ ‫که‬ ‫باشد‬ ‫می‬ ‫معنی‬ ‫این‬ ‫به‬ ‫این‬
drupalika_module_menu‫است‬.
‫رشته‬ ‫جای‬ ‫به‬ ‫کنید‬ ‫دقت‬ ‫اگر‬hook‫نام‬‫ایم‬ ‫داده‬ ‫قرار‬ ‫را‬ ‫خود‬ ‫ماژول‬.‫اساس‬ ‫بر‬Drupal API
‫سای‬ ‫به‬ ‫خواهیم‬ ‫می‬ ‫که‬ ‫جدیدی‬ ‫های‬ ‫آدرس‬ ‫به‬ ‫مربوط‬ ‫اطالعات‬ ‫از‬ ‫آرایه‬ ‫یک‬ ‫باید‬ ‫تابع‬ ‫این‬‫ت‬
‫برگرداند‬ ،‫شود‬ ‫اضافه‬ ‫دروپالی‬.
drupalika.org
‫سازی‬ ‫پیاده‬
hook_menu
‫برای‬‫ماژول‬ ‫در‬ ‫تابع‬ ‫این‬ ‫سازی‬ ‫پیاده‬ ‫به‬ ‫نمونه‬drupalika_module‫توجه‬‫نمائید‬:
drupalika.org
function drupalika_module_menu() {
$items = array();
$items['drupalika/develop'] = array(
'title' => 'Developing a new module',
'page callback' => 'drupalika_develop_page',
'access callback' => TRUE,
);
return $items;
}
‫هر‬ ‫اطالعات‬
‫آدرس‬
‫یک‬ ‫تابع‬ ‫این‬ ‫در‬‫آرایه‬($items)‫آن‬ ‫در‬ ‫را‬ ‫ماژول‬ ‫های‬ ‫آدرس‬ ‫اطالعات‬ ‫که‬ ‫ایم‬ ‫کرده‬ ‫تعریف‬
‫گردانیم‬ ‫برمی‬ ‫تابع‬ ‫از‬ ‫را‬ ‫آن‬ ‫نهایت‬ ‫در‬ ‫و‬ ‫کنیم‬ ‫می‬ ‫نگهداری‬.‫نصب‬ ‫ماژول‬ ‫این‬ ‫که‬ ‫زمانی‬،‫شود‬ ‫می‬
‫سیستم‬ ‫در‬ ‫را‬ ‫اید‬ ‫کرده‬ ‫معرفی‬ ‫که‬ ‫هایی‬ ‫آدرس‬ ‫و‬ ‫کند‬ ‫می‬ ‫فراخوانی‬ ‫را‬ ‫تابع‬ ‫این‬ ‫دروپال‬‫می‬ ‫ثبت‬
‫کند‬(‫کند‬ ‫می‬ ‫ذخیره‬ ‫دیتابیس‬ ‫در‬.)
‫هستند‬ ‫کند‬ ‫می‬ ‫ثبت‬ ‫ماژول‬ ‫که‬ ‫هایی‬ ‫آدرس‬ ،‫آرایه‬ ‫این‬ ‫های‬ ‫ایندکس‬.‫این‬ ‫از‬ ‫خانه‬ ‫هر‬ ‫مقدار‬
‫کند‬ ‫می‬ ‫مشخص‬ ‫را‬ ‫آدرس‬ ‫آن‬ ‫اطالعات‬ ‫که‬ ‫است‬ ‫آرایه‬ ‫یک‬ ‫خود‬ ،‫کلید‬ ‫هر‬ ‫مقدار‬ ‫یا‬ ‫آرایه‬.‫بر‬‫ای‬
‫نمونه‬:
drupalika.org
$items['drupalika/develop'] = array(
'title' => 'Developing a new module',
'page callback' => 'drupalika_develop_page',
'access callback' => TRUE,
);
‫هر‬ ‫اطالعات‬
‫آدرس‬
drupalika.org
‫کند‬ ‫می‬ ‫مشخص‬ ‫را‬ ‫صفحه‬ ‫عنوان‬. title
‫دارد‬ ‫عهده‬ ‫بر‬ ‫را‬ ‫صفحه‬ ‫محتوای‬ ‫تولید‬ ‫که‬ ‫تابعی‬ ‫نام‬. page callback
‫کند‬ ‫می‬ ‫مشخص‬ ‫را‬ ‫صفحه‬ ‫به‬ ‫دسترسی‬ ‫نحوه‬.‫این‬ ‫برای‬ ‫فعال‬‫که‬
‫مقدار‬ ،‫دارد‬ ‫قرار‬ ‫همه‬ ‫دسترس‬ ‫در‬ ‫عمومی‬ ‫صورت‬ ‫به‬ ‫صفحه‬
TRUE‫را‬‫ایم‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫آن‬ ‫برای‬.
access callback
‫کند‬ ‫می‬ ‫مشخص‬ ‫را‬ ‫صفحه‬ ‫عنوان‬. title
‫تولید‬ ‫تابع‬
‫صفحه‬ ‫محتوای‬
‫توضیحات‬ ‫به‬ ‫توجه‬ ‫با‬ ‫ولی‬ ‫کردیم‬ ‫مشخص‬ ‫را‬ ‫خواستیم‬ ‫می‬ ‫که‬ ‫جدیدی‬ ‫آدرس‬ ‫اینجا‬ ‫تا‬‫جدول‬
‫است‬ ‫مانده‬ ‫باقی‬ ‫ما‬ ‫کار‬ ‫از‬ ‫قدری‬ ‫هنوز‬ ،‫باال‬.‫محت‬ ‫که‬ ‫کنیم‬ ‫سازی‬ ‫پیاده‬ ‫را‬ ‫تابعی‬ ‫باید‬‫را‬ ‫صفحه‬ ‫وای‬
‫کند‬ ‫می‬ ‫تولید‬.‫ایندکس‬ ‫در‬ ‫را‬ ‫تابع‬ ‫این‬ ‫نام‬page callback‫تعیین‬‫ایم‬ ‫کرده‬.‫اکنون‬ ‫بنابراین‬
‫کنیم‬ ‫سازی‬ ‫پیاده‬ ‫را‬ ‫تابع‬ ‫این‬ ‫باید‬:
‫ایم‬ ‫برگردانده‬ ‫را‬ ‫رشته‬ ‫یک‬ ‫فقط‬ ‫ما‬ ،‫ساده‬ ‫نمونه‬ ‫این‬ ‫در‬.‫کد‬ ‫هر‬ ‫توانید‬ ‫می‬ ‫شما‬HTML‫دیگر‬‫را‬
‫برگردانید‬ ‫تابع‬ ‫این‬ ‫از‬ ‫و‬ ‫کنید‬ ‫تولید‬.
‫آ‬ ‫چه‬ ‫اینکه‬ ‫تشخیص‬ ‫با‬ ‫دروپال‬ ،‫زنیم‬ ‫می‬ ‫مرورگر‬ ‫در‬ ‫را‬ ‫نظر‬ ‫مورد‬ ‫صفحه‬ ‫آدرس‬ ‫که‬ ‫زمانی‬‫درسی‬
‫تابع‬ ،‫است‬ ‫شده‬ ‫وارد‬drupalika_develop_page‫که‬‫صفح‬ ‫محتوای‬ ‫کننده‬ ‫تولید‬ ‫عنوان‬ ‫به‬‫ه‬
‫م‬ ‫نمایش‬ ‫صفحه‬ ‫در‬ ‫گرداند‬ ‫می‬ ‫بر‬ ‫که‬ ‫را‬ ‫مقداری‬ ‫و‬ ‫کند‬ ‫می‬ ‫فراخوانی‬ ‫را‬ ‫است‬ ‫شده‬ ‫معرفی‬‫ی‬
‫دهد‬.
drupalika.org
function drupalika_develop_page() {
return "This is the content of drupalika/develop page.";
}
‫پنجم‬ ‫گام‬:‫نصب‬
‫دروپال‬ ‫در‬ ‫ماژول‬
‫می‬ ‫ها‬ ‫ماژول‬ ‫لیست‬ ‫در‬ ‫را‬ ‫خود‬ ‫ماژول‬ ‫و‬ ‫رویم‬ ‫می‬ ‫دروپال‬ ‫در‬ ‫ها‬ ‫ماژول‬ ‫مدیریت‬ ‫صفحه‬ ‫به‬ ‫اکنون‬
‫کنیم‬ ‫می‬ ‫نصب‬ ‫و‬ ‫زده‬ ‫عالمت‬ ‫را‬ ‫آن‬ ‫و‬ ‫یابیم‬.
drupalika.org
‫صفحه‬ ‫مشاهده‬
drupalika.org
‫صف‬ ‫تا‬ ‫کنیم‬ ‫می‬ ‫اینتر‬ ‫و‬ ‫کرده‬ ‫وارد‬ ‫مرورگر‬ ‫در‬ ‫را‬ ‫آن‬ ‫آدرس‬ ،‫ماژول‬ ‫نصب‬ ‫از‬ ‫پس‬‫را‬ ‫حه‬
‫کنیم‬ ‫مالحظه‬.
‫به‬ ‫دروپال‬ ‫درباره‬ ‫بیشتر‬ ‫مقاالت‬ ‫مطالعه‬ ‫برای‬‫دروپالیکا‬ ‫سایت‬‫کنید‬ ‫مراجعه‬.
‫ایمیل‬ ‫آدرس‬ ‫با‬ ‫توانید‬ ‫می‬info@drupalika.org‫بگیرید‬ ‫تماس‬ ‫نیز‬.
drupalika.org

Contenu connexe

Similaire à برنامه نویسی ماژول دروپال در 5 مرحله

آشنایی با زبان جاوا - مقدماتی اندروید
آشنایی با زبان جاوا - مقدماتی اندرویدآشنایی با زبان جاوا - مقدماتی اندروید
آشنایی با زبان جاوا - مقدماتی اندرویدSadegh Ghanbari Shohani
 
Oracle Data Integrator (persian)
Oracle Data Integrator (persian)Oracle Data Integrator (persian)
Oracle Data Integrator (persian)Ehsan Hamzei
 
android_test_approach
android_test_approachandroid_test_approach
android_test_approachSadegh Saberi
 
Node js-&-express-hassan-tafreshi-persian-lan
Node js-&-express-hassan-tafreshi-persian-lanNode js-&-express-hassan-tafreshi-persian-lan
Node js-&-express-hassan-tafreshi-persian-lanHassan Tafreshi
 
Repository pattern
Repository patternRepository pattern
Repository patternMahdi Fa
 
ارائه ابزار.pptx
ارائه ابزار.pptxارائه ابزار.pptx
ارائه ابزار.pptxaminnezarat
 
Design Patterns چیست و به چه دردی می خورد؟ (persian)
Design Patterns  چیست و به چه دردی می خورد؟ (persian)Design Patterns  چیست و به چه دردی می خورد؟ (persian)
Design Patterns چیست و به چه دردی می خورد؟ (persian)Mahmoud Masih Tehrani
 
مقاله نحوه فعال کردن rc-local در systemd برای اجرا فرامین در اجرای سیستم
مقاله نحوه فعال کردن rc-local  در systemd  برای اجرا فرامین در اجرای سیستم مقاله نحوه فعال کردن rc-local  در systemd  برای اجرا فرامین در اجرای سیستم
مقاله نحوه فعال کردن rc-local در systemd برای اجرا فرامین در اجرای سیستم Yashar Esmaildokht
 
حقوق ودستمزد در اكسل
حقوق ودستمزد در اكسلحقوق ودستمزد در اكسل
حقوق ودستمزد در اكسلmostafa zarei
 
(Linux Ubuntu Guide in Persian- Basic)رهنمود سیستم عامل اوبنتو فارسی- محب ال...
 (Linux Ubuntu Guide in Persian- Basic)رهنمود سیستم عامل اوبنتو فارسی- محب ال... (Linux Ubuntu Guide in Persian- Basic)رهنمود سیستم عامل اوبنتو فارسی- محب ال...
(Linux Ubuntu Guide in Persian- Basic)رهنمود سیستم عامل اوبنتو فارسی- محب ال...Muhibullah Aman
 

Similaire à برنامه نویسی ماژول دروپال در 5 مرحله (20)

آشنایی با زبان جاوا - مقدماتی اندروید
آشنایی با زبان جاوا - مقدماتی اندرویدآشنایی با زبان جاوا - مقدماتی اندروید
آشنایی با زبان جاوا - مقدماتی اندروید
 
Oracle Data Integrator (persian)
Oracle Data Integrator (persian)Oracle Data Integrator (persian)
Oracle Data Integrator (persian)
 
android_test_approach
android_test_approachandroid_test_approach
android_test_approach
 
Docker
DockerDocker
Docker
 
Node js-&-express-hassan-tafreshi-persian-lan
Node js-&-express-hassan-tafreshi-persian-lanNode js-&-express-hassan-tafreshi-persian-lan
Node js-&-express-hassan-tafreshi-persian-lan
 
AngularJS
AngularJSAngularJS
AngularJS
 
MongoDB
MongoDBMongoDB
MongoDB
 
Repository pattern
Repository patternRepository pattern
Repository pattern
 
lunch box plugin
 lunch box plugin  lunch box plugin
lunch box plugin
 
ارائه ابزار.pptx
ارائه ابزار.pptxارائه ابزار.pptx
ارائه ابزار.pptx
 
Design Patterns چیست و به چه دردی می خورد؟ (persian)
Design Patterns  چیست و به چه دردی می خورد؟ (persian)Design Patterns  چیست و به چه دردی می خورد؟ (persian)
Design Patterns چیست و به چه دردی می خورد؟ (persian)
 
How Create Waf With Naxsi
How Create Waf With NaxsiHow Create Waf With Naxsi
How Create Waf With Naxsi
 
Rbdmap ceph realease 0.2
Rbdmap ceph realease 0.2Rbdmap ceph realease 0.2
Rbdmap ceph realease 0.2
 
rbdmap in ceph
rbdmap in ceph rbdmap in ceph
rbdmap in ceph
 
Kotlin
KotlinKotlin
Kotlin
 
مقاله نحوه فعال کردن rc-local در systemd برای اجرا فرامین در اجرای سیستم
مقاله نحوه فعال کردن rc-local  در systemd  برای اجرا فرامین در اجرای سیستم مقاله نحوه فعال کردن rc-local  در systemd  برای اجرا فرامین در اجرای سیستم
مقاله نحوه فعال کردن rc-local در systemd برای اجرا فرامین در اجرای سیستم
 
Pg autoscaling in ceph
Pg autoscaling in  cephPg autoscaling in  ceph
Pg autoscaling in ceph
 
حقوق ودستمزد در اكسل
حقوق ودستمزد در اكسلحقوق ودستمزد در اكسل
حقوق ودستمزد در اكسل
 
how enable ceph dashboard
how enable  ceph dashboardhow enable  ceph dashboard
how enable ceph dashboard
 
(Linux Ubuntu Guide in Persian- Basic)رهنمود سیستم عامل اوبنتو فارسی- محب ال...
 (Linux Ubuntu Guide in Persian- Basic)رهنمود سیستم عامل اوبنتو فارسی- محب ال... (Linux Ubuntu Guide in Persian- Basic)رهنمود سیستم عامل اوبنتو فارسی- محب ال...
(Linux Ubuntu Guide in Persian- Basic)رهنمود سیستم عامل اوبنتو فارسی- محب ال...
 

برنامه نویسی ماژول دروپال در 5 مرحله

  • 1. ‫دروپا‬ ‫ماژول‬ ‫نویسی‬ ‫برنامه‬‫ل‬ ‫در‬5‫ساده‬ ‫گام‬ ‫توسط‬ ‫شده‬ ‫نوشته‬:‫دروپال‬‫یکـا‬ drupalika.org
  • 3. ‫اول‬ ‫گام‬:‫تعیین‬ ‫ایجاد‬ ‫و‬ ‫ماژول‬ ‫نام‬ ‫آن‬ ‫فولدر‬ ‫شود‬ ‫می‬ ‫شناخته‬ ‫نام‬ ‫آن‬ ‫به‬ ‫دروپال‬ ‫سیستم‬ ‫توسط‬ ‫که‬ ‫دارد‬ ‫نام‬ ‫یک‬ ‫ماژول‬ ‫هر‬. ‫کوچک‬ ‫حروف‬ ‫با‬ ‫باید‬ ‫نام‬ ‫این‬‫التین‬‫شود‬ ‫نوشته‬. ‫زیرخط‬ ‫از‬ ‫استفاده‬ ‫آن‬ ‫ادامه‬ ‫در‬ ‫و‬ ‫باشد‬ ‫التین‬ ‫حرف‬ ‫یک‬ ‫با‬ ‫باید‬ ‫آن‬ ‫شروع‬‫و‬‫های‬ ‫کاراکتر‬‫عددی‬ ‫است‬ ‫بالمانع‬. ‫وج‬ ‫آن‬ ‫مشابه‬ ‫دروپال‬ ‫دیگر‬ ‫های‬ ‫قالب‬ ‫و‬ ‫ها‬ ‫ماژول‬ ‫میان‬ ‫در‬ ‫و‬ ‫باشد‬ ‫یکتا‬ ‫نامی‬ ‫باید‬ ‫نام‬ ‫این‬‫ود‬ ‫باشد‬ ‫نداشته‬. ‫مانند‬:drupalika_module ‫خود‬ ‫دروپالی‬ ‫سایت‬ ‫های‬ ‫فایل‬ ‫از‬ ‫زیر‬ ‫مسیر‬ ‫در‬ ‫جدید‬ ‫فولدر‬ ‫یک‬‫بسازید‬: sites/all/modules ‫دهید‬ ‫تغییر‬ ،‫اید‬ ‫کرده‬ ‫انتخاب‬ ‫که‬ ‫نامی‬ ‫به‬ ‫را‬ ‫فولدر‬ ‫این‬ ‫نام‬.‫بای‬ ‫تاکنون‬ ‫بنابراین‬‫با‬ ‫فولدری‬ ‫د‬ ‫باشیم‬ ‫داشته‬ ‫زیر‬ ‫مسیر‬: sites/all/modules/drupalika_module drupalika.org
  • 4. ‫دوم‬ ‫گام‬: ‫ماژو‬ ‫شناساندن‬‫ل‬ ‫دروپال‬ ‫به‬ ‫ک‬ ‫ایجاد‬ ‫ماژول‬ ‫اطالعات‬ ‫حاوی‬ ‫فایل‬ ‫یک‬ ‫باید‬ ،‫دروپال‬ ‫به‬ ‫ماژول‬ ‫شناساندن‬ ‫و‬ ‫معرفی‬ ‫برای‬‫و‬ ‫نیم‬ ‫بدهیم‬ ‫قرار‬ ‫ماژول‬ ‫فولدر‬ ‫در‬. ‫پس‬ ‫و‬ ‫باشد‬ ‫یکسان‬ ‫کردیم‬ ‫تعیین‬ ‫قبل‬ ‫مرحله‬ ‫در‬ ‫که‬ ‫ماژول‬ ‫نام‬ ‫با‬ ‫باید‬ ‫فایل‬ ‫این‬ ‫نام‬‫آن‬ ‫وند‬‫نیز‬ info‫باشد‬. ‫فایل‬ ‫باید‬ ‫کردیم‬ ‫کار‬ ‫که‬ ‫ای‬ ‫نمونه‬ ‫در‬ ‫بنابراین‬drupalika_module.info‫را‬‫فولدر‬ ‫در‬ drupalika_module‫درست‬‫کنیم‬. ‫دهیم‬ ‫می‬ ‫قرار‬ ‫را‬ ‫زیر‬ ‫متن‬ ‫فایل‬ ‫این‬ ‫در‬ ،‫شروع‬ ‫برای‬: drupalika.org name = Drupalika First Module description = This is a short description about module core = 7.x package = Drupalika
  • 5. ‫فایل‬ ‫اطالعات‬ info drupalika.org ‫مقابل‬ ‫که‬ ‫مقداری‬name‫قرار‬‫سایت‬ ‫مدیر‬ ‫که‬ ‫است‬ ‫نامی‬ ،‫گیرد‬ ‫می‬ ‫می‬ ‫مشاهده‬ ‫سایت‬ ‫های‬ ‫ماژول‬ ‫مدیریت‬ ‫صفحه‬ ‫در‬ ‫ها‬ ‫ماژول‬ ‫لیست‬ ‫در‬ ‫کند‬.‫باشد‬ ‫نیز‬ ‫فاصله‬ ‫حاوی‬ ‫تواند‬ ‫می‬ ‫نام‬ ‫این‬. name ‫مقابل‬ ‫در‬ ‫که‬ ‫مقداری‬description‫قرار‬‫ای‬ ‫خالصه‬ ‫توضیح‬ ،‫گیرد‬ ‫می‬ ‫در‬ ‫سایت‬ ‫مدیر‬ ‫به‬ ‫نمایش‬ ‫جهت‬ ‫فقط‬ ‫که‬ ‫است‬ ‫آن‬ ‫کارکرد‬ ‫و‬ ‫ماژول‬ ‫از‬ ‫است‬ ‫سایت‬ ‫های‬ ‫ماژول‬ ‫مدیریت‬ ‫صفحه‬ ‫در‬ ‫ها‬ ‫ماژول‬ ‫لیست‬. description ‫مقابل‬ ‫که‬ ‫مقداری‬core‫قرار‬‫را‬ ‫دروپال‬ ‫از‬ ‫ای‬ ‫نسخه‬ ‫شماره‬ ،‫گیرد‬ ‫می‬ ‫است‬ ‫شده‬ ‫نوشته‬ ‫آن‬ ‫برای‬ ‫ماژول‬ ‫این‬ ‫که‬ ‫کند‬ ‫می‬ ‫معین‬.‫اینجا‬ ‫در‬ ‫مقدار‬7.x‫نشان‬‫دروپال‬ ‫های‬ ‫نسخه‬ ‫تمام‬ ‫برای‬ ‫ماژول‬ ‫این‬ ‫که‬ ‫دهد‬ ‫می‬ 7‫کند‬ ‫می‬ ‫کار‬. core ‫مقابل‬ ‫که‬ ‫مقداری‬package‫قرار‬‫است‬ ‫ماژول‬ ‫گروه‬ ‫نام‬ ،‫گیرد‬ ‫می‬.‫در‬ ‫نمایش‬ ‫هایی‬ ‫گروه‬ ‫در‬ ‫ها‬ ‫ماژول‬ ،‫سایت‬ ‫در‬ ‫ها‬ ‫ماژول‬ ‫مدیریت‬ ‫صفحه‬ ‫شوند‬ ‫می‬ ‫داده‬.‫کنیم‬ ‫می‬ ‫تعیین‬ ‫را‬ ‫گروه‬ ‫این‬ ‫اینجا‬ ‫در‬. package
  • 6. ‫سوم‬ ‫گام‬:‫ایجاد‬ ‫کد‬ ‫حاوی‬ ‫فایل‬ ‫های‬PHP ‫های‬ ‫کد‬ ‫گرفتن‬ ‫قرار‬ ‫محل‬ ‫ماژول‬ ‫ساخت‬ ‫در‬ ‫بخش‬ ‫مهمترین‬PHP‫است‬. ‫های‬ ‫کد‬ ‫نوشتن‬ ‫جهت‬ ‫فایل‬ ‫یک‬ ‫باید‬ ‫شروع‬ ‫برای‬ ‫بنابراین‬PHP‫در‬‫کنیم‬ ‫ایجاد‬ ،‫آن‬. ‫کد‬ ‫حاوی‬ ‫فایل‬ ‫ترین‬ ‫اصلی‬ ‫که‬ ‫فایل‬ ‫این‬‫های‬‫پسوند‬ ‫دارای‬ ‫باید‬ ،‫است‬ ‫ماژول‬.module‫باشد‬. ‫بنابراین‬‫اضاف‬ ‫خود‬ ‫ماژول‬ ‫فولدر‬ ‫به‬ ‫را‬ ‫فایلی‬ ‫چنین‬ ‫باید‬ ‫کردیم‬ ‫کار‬ ‫که‬ ‫ای‬ ‫نمونه‬ ‫در‬‫کنیم‬ ‫ه‬: drupalika_module.module ‫های‬ ‫کد‬ ‫کننده‬ ‫شروع‬ ‫تگ‬ ،‫فایل‬ ‫این‬ ‫در‬PHP‫را‬‫می‬‫نویسیم‬. drupalika.org
  • 7. ‫چهارم‬ ‫گام‬:‫ایجاد‬ ‫در‬ ‫صفحه‬ ‫یک‬ ‫برنام‬ ‫با‬ ‫سایت‬‫ه‬ ‫نویسی‬PHP ‫اساس‬ ‫بر‬ ‫را‬ ‫داریم‬ ‫توقع‬ ‫ماژول‬ ‫از‬ ‫که‬ ‫امکاناتی‬ ‫باید‬ ،‫مرحله‬ ‫این‬ ‫در‬Drupal API‫و‬‫زبان‬ ‫با‬ ‫نویسی‬ ‫برنامه‬PHP‫مشخص‬‫کنیم‬. ‫در‬‫آن‬ ‫آدرس‬ ‫که‬ ‫کنیم‬ ‫اضافه‬ ‫سایت‬ ‫به‬ ‫جدید‬ ‫صفحه‬ ‫یک‬ ‫داریم‬ ‫تصمیم‬ ‫ماژول‬ ‫این‬ drupalika/develop‫است‬.‫باشیم‬ ‫داشته‬ ‫آدرسی‬ ‫چنین‬ ‫سایت‬ ‫این‬ ‫در‬ ‫مثال‬: http://drupalika.org/drupalika/develop ‫باید‬ ‫کنیم‬ ‫معرفی‬ ‫دروپال‬ ‫به‬ ‫را‬ ‫جدید‬ ‫آدرس‬ ‫یک‬ ‫اینکه‬ ‫برای‬hook_menu‫سازی‬ ‫پیاده‬ ‫را‬ ‫کنیم‬. ‫آن‬ ‫نام‬ ‫که‬ ‫باشیم‬ ‫داشته‬ ‫خود‬ ‫ماژول‬ ‫های‬ ‫کد‬ ‫در‬ ‫تابعی‬ ‫باید‬ ‫ما‬ ‫که‬ ‫باشد‬ ‫می‬ ‫معنی‬ ‫این‬ ‫به‬ ‫این‬ drupalika_module_menu‫است‬. ‫رشته‬ ‫جای‬ ‫به‬ ‫کنید‬ ‫دقت‬ ‫اگر‬hook‫نام‬‫ایم‬ ‫داده‬ ‫قرار‬ ‫را‬ ‫خود‬ ‫ماژول‬.‫اساس‬ ‫بر‬Drupal API ‫سای‬ ‫به‬ ‫خواهیم‬ ‫می‬ ‫که‬ ‫جدیدی‬ ‫های‬ ‫آدرس‬ ‫به‬ ‫مربوط‬ ‫اطالعات‬ ‫از‬ ‫آرایه‬ ‫یک‬ ‫باید‬ ‫تابع‬ ‫این‬‫ت‬ ‫برگرداند‬ ،‫شود‬ ‫اضافه‬ ‫دروپالی‬. drupalika.org
  • 8. ‫سازی‬ ‫پیاده‬ hook_menu ‫برای‬‫ماژول‬ ‫در‬ ‫تابع‬ ‫این‬ ‫سازی‬ ‫پیاده‬ ‫به‬ ‫نمونه‬drupalika_module‫توجه‬‫نمائید‬: drupalika.org function drupalika_module_menu() { $items = array(); $items['drupalika/develop'] = array( 'title' => 'Developing a new module', 'page callback' => 'drupalika_develop_page', 'access callback' => TRUE, ); return $items; }
  • 9. ‫هر‬ ‫اطالعات‬ ‫آدرس‬ ‫یک‬ ‫تابع‬ ‫این‬ ‫در‬‫آرایه‬($items)‫آن‬ ‫در‬ ‫را‬ ‫ماژول‬ ‫های‬ ‫آدرس‬ ‫اطالعات‬ ‫که‬ ‫ایم‬ ‫کرده‬ ‫تعریف‬ ‫گردانیم‬ ‫برمی‬ ‫تابع‬ ‫از‬ ‫را‬ ‫آن‬ ‫نهایت‬ ‫در‬ ‫و‬ ‫کنیم‬ ‫می‬ ‫نگهداری‬.‫نصب‬ ‫ماژول‬ ‫این‬ ‫که‬ ‫زمانی‬،‫شود‬ ‫می‬ ‫سیستم‬ ‫در‬ ‫را‬ ‫اید‬ ‫کرده‬ ‫معرفی‬ ‫که‬ ‫هایی‬ ‫آدرس‬ ‫و‬ ‫کند‬ ‫می‬ ‫فراخوانی‬ ‫را‬ ‫تابع‬ ‫این‬ ‫دروپال‬‫می‬ ‫ثبت‬ ‫کند‬(‫کند‬ ‫می‬ ‫ذخیره‬ ‫دیتابیس‬ ‫در‬.) ‫هستند‬ ‫کند‬ ‫می‬ ‫ثبت‬ ‫ماژول‬ ‫که‬ ‫هایی‬ ‫آدرس‬ ،‫آرایه‬ ‫این‬ ‫های‬ ‫ایندکس‬.‫این‬ ‫از‬ ‫خانه‬ ‫هر‬ ‫مقدار‬ ‫کند‬ ‫می‬ ‫مشخص‬ ‫را‬ ‫آدرس‬ ‫آن‬ ‫اطالعات‬ ‫که‬ ‫است‬ ‫آرایه‬ ‫یک‬ ‫خود‬ ،‫کلید‬ ‫هر‬ ‫مقدار‬ ‫یا‬ ‫آرایه‬.‫بر‬‫ای‬ ‫نمونه‬: drupalika.org $items['drupalika/develop'] = array( 'title' => 'Developing a new module', 'page callback' => 'drupalika_develop_page', 'access callback' => TRUE, );
  • 10. ‫هر‬ ‫اطالعات‬ ‫آدرس‬ drupalika.org ‫کند‬ ‫می‬ ‫مشخص‬ ‫را‬ ‫صفحه‬ ‫عنوان‬. title ‫دارد‬ ‫عهده‬ ‫بر‬ ‫را‬ ‫صفحه‬ ‫محتوای‬ ‫تولید‬ ‫که‬ ‫تابعی‬ ‫نام‬. page callback ‫کند‬ ‫می‬ ‫مشخص‬ ‫را‬ ‫صفحه‬ ‫به‬ ‫دسترسی‬ ‫نحوه‬.‫این‬ ‫برای‬ ‫فعال‬‫که‬ ‫مقدار‬ ،‫دارد‬ ‫قرار‬ ‫همه‬ ‫دسترس‬ ‫در‬ ‫عمومی‬ ‫صورت‬ ‫به‬ ‫صفحه‬ TRUE‫را‬‫ایم‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫آن‬ ‫برای‬. access callback ‫کند‬ ‫می‬ ‫مشخص‬ ‫را‬ ‫صفحه‬ ‫عنوان‬. title
  • 11. ‫تولید‬ ‫تابع‬ ‫صفحه‬ ‫محتوای‬ ‫توضیحات‬ ‫به‬ ‫توجه‬ ‫با‬ ‫ولی‬ ‫کردیم‬ ‫مشخص‬ ‫را‬ ‫خواستیم‬ ‫می‬ ‫که‬ ‫جدیدی‬ ‫آدرس‬ ‫اینجا‬ ‫تا‬‫جدول‬ ‫است‬ ‫مانده‬ ‫باقی‬ ‫ما‬ ‫کار‬ ‫از‬ ‫قدری‬ ‫هنوز‬ ،‫باال‬.‫محت‬ ‫که‬ ‫کنیم‬ ‫سازی‬ ‫پیاده‬ ‫را‬ ‫تابعی‬ ‫باید‬‫را‬ ‫صفحه‬ ‫وای‬ ‫کند‬ ‫می‬ ‫تولید‬.‫ایندکس‬ ‫در‬ ‫را‬ ‫تابع‬ ‫این‬ ‫نام‬page callback‫تعیین‬‫ایم‬ ‫کرده‬.‫اکنون‬ ‫بنابراین‬ ‫کنیم‬ ‫سازی‬ ‫پیاده‬ ‫را‬ ‫تابع‬ ‫این‬ ‫باید‬: ‫ایم‬ ‫برگردانده‬ ‫را‬ ‫رشته‬ ‫یک‬ ‫فقط‬ ‫ما‬ ،‫ساده‬ ‫نمونه‬ ‫این‬ ‫در‬.‫کد‬ ‫هر‬ ‫توانید‬ ‫می‬ ‫شما‬HTML‫دیگر‬‫را‬ ‫برگردانید‬ ‫تابع‬ ‫این‬ ‫از‬ ‫و‬ ‫کنید‬ ‫تولید‬. ‫آ‬ ‫چه‬ ‫اینکه‬ ‫تشخیص‬ ‫با‬ ‫دروپال‬ ،‫زنیم‬ ‫می‬ ‫مرورگر‬ ‫در‬ ‫را‬ ‫نظر‬ ‫مورد‬ ‫صفحه‬ ‫آدرس‬ ‫که‬ ‫زمانی‬‫درسی‬ ‫تابع‬ ،‫است‬ ‫شده‬ ‫وارد‬drupalika_develop_page‫که‬‫صفح‬ ‫محتوای‬ ‫کننده‬ ‫تولید‬ ‫عنوان‬ ‫به‬‫ه‬ ‫م‬ ‫نمایش‬ ‫صفحه‬ ‫در‬ ‫گرداند‬ ‫می‬ ‫بر‬ ‫که‬ ‫را‬ ‫مقداری‬ ‫و‬ ‫کند‬ ‫می‬ ‫فراخوانی‬ ‫را‬ ‫است‬ ‫شده‬ ‫معرفی‬‫ی‬ ‫دهد‬. drupalika.org function drupalika_develop_page() { return "This is the content of drupalika/develop page."; }
  • 12. ‫پنجم‬ ‫گام‬:‫نصب‬ ‫دروپال‬ ‫در‬ ‫ماژول‬ ‫می‬ ‫ها‬ ‫ماژول‬ ‫لیست‬ ‫در‬ ‫را‬ ‫خود‬ ‫ماژول‬ ‫و‬ ‫رویم‬ ‫می‬ ‫دروپال‬ ‫در‬ ‫ها‬ ‫ماژول‬ ‫مدیریت‬ ‫صفحه‬ ‫به‬ ‫اکنون‬ ‫کنیم‬ ‫می‬ ‫نصب‬ ‫و‬ ‫زده‬ ‫عالمت‬ ‫را‬ ‫آن‬ ‫و‬ ‫یابیم‬. drupalika.org
  • 13. ‫صفحه‬ ‫مشاهده‬ drupalika.org ‫صف‬ ‫تا‬ ‫کنیم‬ ‫می‬ ‫اینتر‬ ‫و‬ ‫کرده‬ ‫وارد‬ ‫مرورگر‬ ‫در‬ ‫را‬ ‫آن‬ ‫آدرس‬ ،‫ماژول‬ ‫نصب‬ ‫از‬ ‫پس‬‫را‬ ‫حه‬ ‫کنیم‬ ‫مالحظه‬.
  • 14. ‫به‬ ‫دروپال‬ ‫درباره‬ ‫بیشتر‬ ‫مقاالت‬ ‫مطالعه‬ ‫برای‬‫دروپالیکا‬ ‫سایت‬‫کنید‬ ‫مراجعه‬. ‫ایمیل‬ ‫آدرس‬ ‫با‬ ‫توانید‬ ‫می‬info@drupalika.org‫بگیرید‬ ‫تماس‬ ‫نیز‬. drupalika.org