نصب ماژول

نصب ماژول


به نام خدا

ماژول نویسی دروپال قسمت پنجم

در این مقاله قصد داریم منو ایجاد کنیم برای ایجاد منو از hook_menu استفاده میکنیم.

سیستم منودروپال .در ابتدا قصد دارم سیستم منودروپال را توضیح دهم.سیستم منو

دروپال خیلی پیچیده است اما خیلی قدرتمند است وقتی مرورگر یک درخواست رو به سمت دروپال میفرستد

دروپال درخواست ما رو سمت یک مسیر میفرستد.دروپال وقتی یک مسیر رو دریافت میکند باید اون رو بفرسته سمت یک تابع و تابع درخواست ما رو نشان میدهد پس وقتی ما یک ادرس میزنیم سیستم منو درخواست ما رو به یک تابع میفرستد.

وقتی میخواهیم یک منو تعریف کنیم نیاز داریم یک آدرس تعریف کنیم وقتی که دروپال آدرس را دریافت میکنه اون رو سمت تابعی که تعریف کرده ایم میفرسته که تابع محتویات آدرس را به ما نشان می دهد پس یک callback mapping  داریک که باید عملیات ما رو یک نگاشت انجام بشود.

اسم های مستعار همیشه به سمت یک آدرس می رود که وجود دارد ما همیشه یک  آدرس واقعی داریم و هنگامی که ماژول pathauto  رو نصب میکنیم که برامون مسیر میسازه اون یک مسیر واقعی نیست و یک آدرس مستعار است.

وقتی یک آدرس به سمت دروپال فرستاده می شود چه اتفاقی می افتد.

  1. آدرس واقعی تشخیص داده می شود.
  2. در جدول menu_router در دیتابیس دروپال مسیر رو دریافت می کند و گفته می شود از این مسیری که دریافت کردی سمت چه تابعی فرستاده می شود
  3. دروپال وقتی می خواهد مسیر تعریف کند تمام ماژول ها رو چک میکنه مسیر و تابع رو میگیرد و نام تابع در page call back ذخیره است و تابع رو دریافت میکنه و محتویات اون صفحه را به ما می دهد.
  4. اگر نیاز باشه یک سری object سمت callback  ما بفرستد این کار رو انجام می دهد و آرگومان ها رو میفرسته سمت تابع callback
  5. دسترسی ها را بررسی میکند آیا مسیری که کاربر زده اجازه دسترسی به آن را دارد یا نه
  6. محتویات صفحه را ترجمه میکند
  7. بارگزاری فایل ها
  8. در نهایت callback را فراخوانی میکند و محتویات رو برمی گرداند.

برخی از ویژگی های کاربردی برای تعریف منوعبارتند از:

title  : فیلدی ضروری است که نشان دهنده عنوان آیتم منو است.

  :Title callback عنوان ما میتواند به صورت داینامیک با تعریف یک تابع باشد.

Title argument : میتواند آرگومان دریافت کند ویا دریافت نکند ولی اگر تعریف آرگومان مدنظرمون باشه باید تعریف کنیم.
:Description توضیحات مختصر در مورد آیتم منو در این قسمت ذکر میشود.
:page callback  مقدار این کلید ، نام تابعی است که بمنظور تنظیم و ساختار نمایش صفحه ای که به آدرس آیتم منو اشاره دارد.(تابعی است مسیر دریافت میکند و محتویات آن باید چاپ شود.)
:page argumentsمقدار این کلید ، آرایه ای از آرگومان هایی است که به تابع فراخوانی شده در   page callback ارسال میگردد.
:access callback  مقدار این کلید ، نام تابعی است که یک مقدار بولی را بمنظور تعیین دسترسی کاربران به آیتم منو را مشخص می کند.

Access argument : آرگومان دریافت میکند و به تابع call back  میفرستد.
:File ضروری نیست امکان دارد ما چندین callback  داشته باشیم و callback  ما خیلی سنگین باشد بهتر است که آن را در فایل ذخیره کنیم .
:file path مقدار این کلید ، مسیر فایلی است که نام آن در قسمت fileدرج شده است و بمنظور پیاده سازی دایرکتوری فایل ، درج این قسمت الزامیست.
:Weight موقعیت نسبی آیتم های یک منو را مشخص میکند. و بصورت پیش فرض صفر است.
:Type مقدار این کلید ،

نوع ساختاری یک آیتم منو را مشخص میکند. که شامل :

  •  :MENU_NORMAL_ITEMبه منظور ایجاد آیتم های منو ساده
  •  :MENU_CALLBACK یک آیتم منو دروپالی را ایجاد نمیکند و فقط لینک قابل دسترسی را بر میگرداند (فقط یک مسیر داریم وهیچ منو ظاهری نمایش داده نمی شود.)
  •  :MENU_LOCAL_TASK جهت ایجاد تب منو ها مورد استفاده قرار میگیرد(باید تب های ما یک منو والد یا پدر داشته باشند).
  •  :MENU_DEFAULT_LOCAL_TASK به منظور تعیین ، تب منو با لینک پیش فرض مورد استفاده قرار می گیرد.

امیدوارم تا اینجا مفاهیم را به صورت کامل فهمیده باشید

در این قسمت میخواهیم منو برای ماژولمون ایجادکنیم.

/**
* Implelement hook_menu()
*/

function windfarms_menu(){
$items=array();

//admin configuration group
$items [‘admin/config/windfarms’]=array(
‘title’=> ‘wind farms’,
‘description’=> ‘administer windfarms’,
‘access arguments’=> array (‘administer wind farms’),
);

//admin configuration-settings.
$items [‘admin/config/windfarms/manage’]=array(
‘title’=> ‘wind farms settings’,
‘description’=> ‘manage windfarms settings’,
‘access arguments’=> array (‘administer wind farms’),
‘page callback’=> ‘menu_first’,
‘page arguments’=> array(‘welcome’,‘Your first menu worked successfully.’),
);

return $items;
}

/**
*
*/
function menu_first($title,$description){
return ‘Hello’.‘<br/>’.$title .‘<br/>’.$description ;
}

اگر مطالب بالا با دقت خوانده باشید کد بالا متوجه خواهید شد برای اطمینان کد بالا را توضیح میدهم.

هوک منو را صدا میزنیم ما میخواهیم در قسمت پیکربندی لینکی برای تنظیمات منو خود داشته باشیم. اول باید یک آرایه برگردانیم یک متغیر در نظر میگیریم $item[link menu] ،به مسیر گفته شده بروید و خواهید دید منو برای ما ایجاد شده است مانند شکل

سیستم منودروپال

سیستم منودروپال

ودر مرحله بعد میخواهیم با کلیک روی wind farms setting  تنظیمات را انجام دهیم که ما در اینجا نیاز داریم که از form  ها استفاده کنیم اما به دلیل اینکه می خواستم مفهوم منو ها بهتر درک کنید فقط یک کلمه چاپ کردیم .

بخش بعدی کد:

نویسی همانطور گفتیم نام تابعی که می خواهیم پیاده سازی کنیم

menu_first گذاشته ایم و در قسمت page argument دوآرگومان رو به تابع منو خود فرستاده ایم و بعد برای تابع دوتا متغیر می گزاریم و در قسمت تابع هم متغیر ها رو فراخوانی کرده ایم.

 نکته اگر type رو قرار ندهیم به طور پیش فرض MENU_NORMAL_ITEM در نظر میگیرد.در مورد منوها بحث اینجا به پایان نمیرسه و مطالب زیادی درباره سیستم منو دروپال است و ما سعی میکنیم در کل مقالات سیستم منو را به طور کامل توضیح دهیم در مقاله بعد درباره FormAPI  صحبت میکنیم.

آموزش دروپال

امکان ارسال نظر وجود ندارد!