به نام خدا
ماژول نویسی دورپال 7قسمت چهارم
تا اینجا با مفاهیم اولیه ماژول آشنا شدیم واز این مقاله به بعد قصد داریم کار را عملی کنیم و به طور عملی شما را با مفاهیم زیر آشنا کنیم.
ماژول نویسی
- چگونگی ایجاد اولین ماژول ها
- کار با Hook ها
- تعریف نقش ها و مجوز های دسترسی متفاوت
- کنترل دسترسی
- اضافه کردن یک آیتم منو را به یک Adim interface
- استفاده از Form API(FAPI) به منظور ایجاد سریع یک فرم
- ایجاد فرم های اعتبار سنجی سفارشی
- ایجاد نوع محتوا سفارشی به صورت دستی
- اعتبار سنجی ورود کاربر
- وارد کردن محتوا با استفاده از Feed ها
- ایجاد Block
- شناخت بهترین شیوه برنامه نویسی استاندارد
بسیار خب دوستان شروع میکنیم
اقدامات لازم برای شروع ماژول نویسی
- سازمان دهی پوشه ماژول
- نصب دروپال
- محل مدیریت ماژول به عنوان مثال site/all/modules/custom/wind farms
نکته : windfarms نام ماژول ماست.
- ویرایشگر کد می توانیم از نرم افزار Net Beans 7.2 php استفاده کنیم که لینک دانلود آن http://netbeans.org است و همچنین برای پیکربندی آن میتوانید به این آدرس مراجعه کنید http://drupal.org/node/1019816
من از phpstorm استفاده میکنم.
بعد از انجام این اقدامات شروع به ماژول نویسی میکنیم نام ماژول ما windfarms هست. و اقدامات لازم را مرحله به مرحله توضیح می دهیم.
- ایجاد مسیر ، مسیر خود را site/all/modules قرارمی دهیم و در این قسمت پوشه windfarms را می سازیم.
- ایجاد فایل .info در مسیر site/all/modules/windfarms فایل info را قرار می دهیم و درون آن کدهای زیر را قرار می دهیم.
name= Wind Farms
description= A database of wind farms
core= 7.x
version=7.x-0.1-dev
با مطالب توضیح داده شده شما باید بتوانید همه محتوای این فایل وفایل ماژول را متوجه شوید.
نکته : برچسب های نسخه ی مشترک ماژول
- dev نسخه پیشرفته
- alpha مرحله اول نسخه آزمایشی
- beta نسخه کامل شده بسیاری از مشکلات و ویژگی های لازم که در نسخه آلفا نیاز بود در این نسخه انجام شده است.
- rc نسخه پیشنهاد داده شده برای انتشار
- ایجاد فایل . module در مسیر گفته شده فایل module را ایجاد می کنیم. ودرون آن کدهای زیر را قرار می دهیم.
<?php
/**
*@file
* custom functionality for a wind farm database
*/
/**
* Impelements hook_help
*/
Function windfarms_help($path, $avg){
Switch ($path){
Case ‘admin/help#windfarms’:{
$ret_val= ‘<h3>’.t(‘about’).'</h3>’;
$ret_val= ‘<p>’.t(‘the wind farms module makes it easy to manage a database of a wind farms’).'</p>’;
return $ret_val;
break;
}
}
}
در این مقاله ما در ابتدا قسمت مدیریت ماژول را کد نویسی میکنیم وبعد به قسمت کاربر می پردازیم.
در مقاله قبل ما درباره با ساختار hook صحبت کردیم و در نوشتن ماژول ما با هوک های زیادی بر خورد میکنیم hook_help ما از دروپال می خواهیم که هنگامی که داره فرایند help انجام بشه ما به دروپال میگیم که میخواهیم بهت قلاب بشیم و این کار من رو هم انجام بده.
پارامتر $path مربوط به مسیر ما است .
کد admin/help#windfarms برای پیوند از صفحه اصلی راهنمای دروپال استفاده میشود (admin/help or ?q=admin/help). میتوانید به کد فوق متن بیشتری برای بهبود راهنمایی کاربر اضافه کنید.
همچنین می توانید به لینک زیر برای به دست آوردن اطلاعات بیشتر درباره hook_help مراجعه کنید.
https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_help/7.x
شکل تغییرات بعد از اضافه کردن کد را نشان می دهد که همانطور مشاهده می کنید لینک کمک اضافه شده
نکته : وقتی از هوک ها استفاده میکنیم مثلا در phpstorm متغیر های پیش فرض اون هوک را برای ما به صورت پیش فرض نمایش می دهد حال اگر بخواهیم متوجه بشیم که این متغیرها چه نوعی هستند. مثلا شامل چه attribute هایی است و در کل اطلاعاتی درباره این متغیرها به دست آوریم ما باید اول ماژول devel رو نصب کنیم و بعد از آن در قسمتی که هوک ما اجرا می شود از دستور kpr($Variable) و یا dpm($Variable) استفاده می کنیم. به کدزیر و اجرا آن در سایت دقت کنید.
function windfarms_help($path, $avg){
kpr($path);
kpr($avg);
}
باتوجه به شکل متوجه میشوید که $pach مسیر رو به ما نشان می دهد و $avg مسیر رو به صورت جدا گانه نمایش نشان می دهد. با رفتن به مسیر های دیگر و چک کردن متغیرها متوجه این موضوع خواهید شد.
در این قسمت می خواهیم کنترل دسترسی به ماژول با استفاده از hook_permission آموزش دهیم کد زیر را به فایل .module خود اضافه کنید.
/**
* Impelements hook_permission()
*/
function windfarms_permission(){
return array(
‘administer windfarms’=>array(
‘title’=> t(‘administer’),
‘description’=> t(‘description’),
),
);
}
بعد از اضافه کردن این کد به فایل خود خواهیم دید که لینک مجوزها به صفحه ماژول اضافه شده است و میتوانیم مجوزهای هر نقش را برای دسترسی به ماژول خود تعیین کنیم. همچنین از قسمت افراد/مجوزها هم می توانیم این کار را انجام دهیم. در کد بالا ما آرایه ای را برگرداندیم که کلید آن administer windfarms ومقدار آن خود یک آرایه است که شامل کلید title و مقدار آن عبارت روبروی آن است.
برای نوشتن آرایه شما باید نوشتن آرایه های انجمنی را بلد باشیدکه با یک جستجو در این باره میتوانید متوجه شوید.
کد بالا رو به این صورت با توجه به تعریف آرایه های انجمنی هم می توانیم بنویسیم پس پیشنهاد من این است حتماآرایه های انجمنی را یاد بگیرید.
function windfarms_permission(){
$per=array();
$per[‘administerwindfarms’]=array(
‘title’=> t(‘administer’),
‘description’=> t(‘description’),
);
return $per;
}
توجه :چون hook ها کش می شوند بعد از تغییرات در ماژول خود، پاک کردن حافظه نهان (کش دروپال ) فراموش نشود.
در مقاله بعدی می خواهیم نحوه کار با hook_menu را توضیح دهیم.
با ما همراه باشید.