نصب ماژول

نصب ماژول


سیستم Hook

سیستم Hook دروپال اجازه می دهد تا ماژول ها با داده های دیگر ماژول ها یا حتی هسته دروپال خود  تعامل ایجاد کنند.

برای استفاده از یک سیستم Hook باید Hook را ایجاد کنید و پیاده سازی آن را فرا بگیرید.

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

ایجاد یک Hook در دروپال ۷ (و پیاده سازی آن را فراخوانی می کنیم)

ایجاد یک Hook و فراخوانی پیاده سازی آنها می تواند با استفاده از یکی از توابع زیر (و نه همه شامل) انجام شود

drupal_alter ()،  module_invoke_all () و module_invoke ()

به زبان عامیانه مثلا من می خواهم هنگامی که یک محتوا ایجاد می شود

یک پیغام چاپ بشه یا کاری پیچیده تر به مدیر سایت پیغام فرستاده بشه که فلان شخص یک محتوا با این عنوان ایجاد کرده ما برای اینکار باید

به دروپال بگیم .

دروپال هنگامی که داری hook_insert_node()  را اجرا میکنی بیا منم یک درخواست دارم و برای نوشتن هوک ها این قانون برقرار است

  1. به جای هوک باید نام ماژول خود را بنویسیم
  2. پیاده سازی Hook در دروپال ۷ باید با تابع function و فراخوانی آرایه ها انجام می شود.

برای اینکه بتوانید آن را فراخوانی کنید، باید یک Hook دروپال ۷ را اجرا کنید.

برای دسترسی با Hook، “Hook” همیشه با نام ماژول شما جایگزین می شود. برای مثال، در test.module،

() hook_help  به عنوان test_help ()  تعریف می شود.

معرفی چند Hook در دروپال :

hook_init ()

قبل از هر درخواستی در صفحه ، این Hook فراخوانی می شود.

hook_views_api ()

این یک Hook هسته دروپال نیست ، ولی مطمئنا یکی از Hook پر استفاده دروپال می باشد

که توسط ماژول views ارائه می شود و برای اتصال ماژول های شما به ویو مورد استفاده قرار میگیرد.

hook_form_alter ()

این Hook یکی از مشهور ترین Hook های دروپال است که برای تغییر دادن هر فرم نمایش داده شده در دروپال مورد استفاده قرار میگیرد.

hook_help ()

این Hook برای ارائه مستندات پیرامون ماژول ها در دروپال استفاده می شود. ما ایرانیان زیاد به این Hook اهمیت نمیدهیم ، اما باید یاد بگیریم که ارائه مستندات در پروژه ها بسیار مهم است.

hook_schema ()

این Hook برای ایجاد جداول ماژول ها در پایگاه داده استفاده می شود. عموما در فایل install.

ماژول قرار گرفته و در زمان نصب و عزل ماژول دیتابیس را ایجاد و حذف می نماید.

hook_theme ()

یک Hook دوست داشتنی برای اختصاص قالب ها به بخش های مختلف ماژول ها.

اگر از این Hook تا کنون استفاده نکرده اید مطمئنا پروژه شما از لحاظ ظاهری دارای ایرادات بسیاری می باشد.

hook_install()

این Hook نیز عموما در فایل install. قرار گرفته و در زمانی که ماژول نصب می شود فراخوانی میگردد.

پر قدرت  ترین و پر استفاده ترین Hook در ساخت ماژول دروپال.

hook_permission ()

یکی از مهمترین Hook های دروپالی که مجوز های دسترسی به اجزای مختلف ماژول را تعیین می کند

و کنترل تعیین دسترسی را برای مدیر سایت فراهم می نماید.

 

hook_uninstall ()

زمانی که یک ماژول نصب می گردد، هر چیزی که در زمان عزل آن نیاز است توسط این Hook انجام می شود.

hook_menu ()

به جرات میتوان گفت هیچ ماژولی نیست که ما آن را ببینیم و از این Hook استفاده نکرده باشد،

درخواست های مختلف از مسیر توسط این Hook بررسی شده و به دروپال ارسال می شوند.

Hook در عمل

شما با استفاده از Hook ها در پروژه های خود قادر به شخصی سازی منوها، بلوک ها، محتوا، فرم ها و دیگر بخش های مختلف سایت خود می باشید.

در واقع یکی از دلایلی که دروپال بعنوان سیستمی انعطاف پذیر و قدرتمند شناخته شده است ، عملکرد Hook ها در این سیستم است.
همچنین فریم ورک Hook قابلیت اجرا کدهای اختصاصی در زمان های قابل پیش بینی بمنظور انجام عملی خاص را دارند .

این اعمال خاص شامل جستجوی و یا حذف یک صفحه ، ویرایش دیدگاه ، اضافه کردن فیلدی به محتوا و غیره است.
بمنظور شناخت هر چه بیشتر عملکرد Hook ها در دروپال به مثال زیر توجه کنید.
فایل node.module که در مسیر modules\node قرار دارد، مراجعه کنید .

این فایل توابع کاربردی Hook که مرتبط با گره می باشد با مختصر توضیحاتی به صورت کامنت ذکر کرده است.

دو نمونه از توابع این فایل عبارتند از:

module_invoke_all(‘node_presave’, $node);
این تابع module_invoke_all تمام توابع Hook را فراخوانی میکند و دراینجا تابع تغییر گره را قبل از آن که در پایگاه داده ذخیره شود ، فراخوانی میکند.
module_invoke_all(‘node_view’, $node, $view_mode, $langcode);
افزودن یک ویو به گره

در یک افزونه سفارشی ، بمنظور پیاده سازی و اجرا توابع Hook باید از یک قرارداد نام گذاری بسیار خاص پیروی کرد. چرا که فقط دراین صورت است که دروپال آن را به رسمیت می شناسد.
برای مثال برای اعمال خاصی بر روی گره قبل از نمایش از تابع hook_node_view طبق مثال زیر استفاده می کنیم.

YOURMODULENAME_node_view($node, $view_mode, $langcode) {
return $node;
}

برای اطلاعات بیشتر در مورد Hook و پیاده سازی API گسترده دروپال باید به مستندات سایت     drupal.org  به آدرس زیر مراجعه کنید.

https://api.drupal.org/api/drupal/includes%21module.inc/group/hooks/7.x

 

آیتم منوها در افزونه ها:

انواع مختلفی از Hook ، جهت اعمالی چون ایجاد ، ویرایش ساختار و یا حذف آیتم منوها مورد استفاده قرار میگیرد .

از جمله پرکاربردترین این Hook ها عبارتند از:

  • Hook_menu()  تعریف آیتم های منو و آدرس مرتبط با آنها
  • Hook_menu_delete() حذف من سفارشی با تمام لینک های موجود در آن
  • Hook_menu_alter()  بمنظور تغییر ویژگی آیتم های موجود که توسط  Hook_menu()  فراخوانی شده است ، مورد استفاده قرار  میگیرد.

دراین مقاله با ساختار Hook و مثال هایی برای درک بهتر آشنا شدید و در مقاله بعدی قصد داریم درباره مفهوم  Action&Triggers بحث کنیم.

 

با ما همراه باشید

 

آموزش دروپال

هوک های دروپال

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