نحوه کار سیستم ماژول ها
دروپال از سیستم قلاب (Hook) استفاده میکند.
هنگامی که درخواستی به دروپال توسط کاربر فرستاده میشود (مثل مشاهده یک محتوا)، سیستم پس از Boostrap شدن که شامل مراحلی مثل بارگذاری تنظیمات، اتصال به پایگاه داده و … میشود،
در فرایند آمادهسازی درخواست کاربر، دادههای خود رو در اختیار هوکهای ماژولها میگذارد.
مثلا پس از خواندن فیلدهای یک مقاله از پایگاه داده؛ آنها رو در یک آرایه قرار میدهد و هر ماژولی که هوک مربوط به نمایش محتوا رو تعریف کرده باشد، با آرایه تولید شده صدا میزند.
ماژولی که با هوک (قلاب) نمایش محتوا، خود رو به فرایند نمایش محتوا متصل کرده،
این اطلاعات رو دریافت میکند و میتواند فرایندهای خود رو از قبیل «اضافه کردن یک کلمهی خاص به متن عنوان محتوا» رو اجرا کند.
هر ماژول میتواند در فرایندهای خود باز هوکهایی رو تعریف کند که دیگر ماژولها فرایند پیشفرض ماژول رو تغییر دهند.
مثلا میتواند هوکی تعریف کند که بتوان کلمهی اضافه شده رو تغییر داد و یا حذف کرد.
نام و مکان فایل ماژول
در این آموزش، ما یک ماژول ایجاد می کنیم که پیوندهایی به محتوا را نشان می دهد،
مانند نوشته های وبلاگ یا بحث های انجمن، این صفحه نحوه ایجاد فایل و دایرکتوری ماژول اولیه را توضیح می دهد.
قبل از شروع ما نیاز داریم که اشتباهات خود را درسایت شناسایی کنیم برای اینکار ما نیاز داریم که تمامی خطا های خود را در سایت مشاهده کنیم برای اینکار کافی است این چند خط کد را به فایل setting.php خود اضافه کنیم
error_reporting(E_ALL);
ini_set(‘display_errors’, TRUE);
ini_set(‘display_startup_errors’, TRUE);
وبعد به قسمت مدیریت/ پیکربندی /توسعه /سوابق و خطاها برویم و مطمئن شویم که نمایش خطاها روی کلیه پیغام ها باشد.
انتخاب نام ماژول
اولین گام در ایجاد یک ماژول، انتخاب “نام کوتاه” برای آن است.
این نام کوتاه در تمام نام فایل ها و تابع در ماژول شما مورد استفاده قرار می گیرد.
باید با یک حرف شروع شود و تنها حروف کوچک و underscores را شامل شود. برای این مثال، ما “bishweb ” را به عنوان نام کوتاه انتخاب می کنیم.
نکته مهم: اطمینان حاصل کنید که این دستورالعمل ها را دنبال کنید و از حروف بزرگ برای نام اختصاری ماژول استفاده نشود.
هنگامی که دروپال قلاب(Hook) را پیاده سازی می کنید (در بخش های بعد آموزش توضیح داده می شود)،
دروپال تنها توابع پیاده سازی قلاب را تشخیص می دهد
اگر آنها همان پیشوند نام تابع را به عنوان نام فایل ماژول داشته باشند.
به وجود آوردن پوشه وفایل ماژول
- ساخت ماژول با ایجاد یک پوشه در مسیر نصب دروپال :
ساخت پوشه در مسیر site/all/module نام پوشه خود را bishweb می گزاریم.
- به وجود آوردن فایل .info در پوشه مربوط به ماژول
ذخیره میکنیم فایل bishweb.info در پوشه ماژول در مسیر
Site/all/module/bishweb
حداقل این فایل باید شامل موارد زیر باشد .
name = bishweb sitedescription = Description of what this module doescore = 7.x
name نام ماژول ، description توضیحاتی درباره ماژول و core ورژن دروپالی که برای آن این ماژول نوشته شده است.این سه مورد برای تعریف یک ماژول الزامی می باشد.
- به وجود آوردن فایل php برای ماژول
ذخیره میکنیم فایل bishweb.module در پوشه ماژول در مسیر
Site/all/module/bishweb این فایل محتوی کدهای php ما خواهد بود.
- یک تگ php باز را به ماژول اضافه می کنیم.
<?php
باید توجه کنیم که فایل .module همیشه با تگ PHP به صورت کامل شروع میشود اما به علت وجود باگی در PHP، هیچگاه با تگ پایانی تمام نمیشود،
- استانداردهای کد نویسی
نکته: استانداردهای کدنویسی دروپال برای کدهای هسته دروپال و ماژولهای آن اعمال می شود.
این استانداردها بر پایه استانداردهای کدگذاری PEAR مبتنی است. که آدرس آن در زیر آمده است.
http://pear.php.net/manual/en/standards.naming.php
یک نکته کل: نظرات و اسامی باید از املای انگلیسی (به عنوان مثال “color” و “colour”) استفاده نکنند.
استانداردهای کد نویسی دروپال مستقل از نسخه دروپال هستند و همیشه در جریان هستند. همه کدهای جدید باید بدون توجه به نسخه (core) استاندارد های فعلی را دنبال کنند.
کد موجود در نسخه های قدیمی تر ممکن است به روز شود، اما لزوما نباید باشد.
به خصوص برای کد های بزرگتر (مانند هسته دروپال)، به روز کردن کد نسخه قبلی برای استانداردهای کنونی ممکن است بیش از نوشتن ماژول زمان ببرد. با این حال، کد در نسخه های فعلی باید استانداردهای فعلی را دنبال کند.
دروپال در نوشتن کدها هم سختگیریهای خاصی دارد و یک ماژول قبل از راهیابی به سایت دروپال باید از استانداردهای کدنویسی تبعیت کند
در غیر این صورت مدیریت این حجم کد برای خطایابی،
تصحیح و نوشتن کد جدید بر مبنای کدهای قبلی و همچنین آموزش کدنویسان جدید تقریبا غیر ممکن میشد.
برای مثال طول هرخط از کد نباید بیش از ۸۰ حرف باشد (تا حد امکان) و یا آیتمهای آرایههایی که در چند خط تعریف میشوند، همیشه با علامت , پایان میابند. شما می توانید از محیطهای توسعه مثل
Eclipse(link is external) یا NetBeans(link is external) یا
vim (link is external)
استفاده کنید راهنمای تنظیم اونها بر اساس این استانداردها در دروپال موجود است همچنین میتوانید از aptana و phpstorm نیز استفاده کنید.
توضیحات فایل .info ماژول دروپال
دروپال از فایل های .info برای ذخیرهmeta date در مورد تم ها و ماژول ها استفاده می کند.
برای ماژول ها، فایل .info برای موارد زیر استفاده می شود:
- ارائه اطلاعات در صفحات مدیریت دروپال وب GUI؛
- ارائه معیارهای کنترل فعال شدن و غیرفعال کردن ماژول؛
- اعلان دروپال در مورد وجود یک ماژول؛
- مشخص کردن وابستگی ماژول به سایر ماژول های دروپال
- اهداف کلی عمومی در زمینه های دیگر.
محتویات این فایل به این شکل است:
name = bishwebdescription = this is a test module and does nothingcore = 7.xpackage = My Modulesphp = 5.2version = 7.x-1.xdependencies[] = viewsfiles[] = bishweb.class.inc;configure = admin/bishweb
Name، description ، core را قبلا توضیح داده ایم تعیینکننده این سه مورد برای تعریف یک ماژول الزامیست.
با package میتوان مشخص کرد در صفحهی admin/modules ماژول نوشته شده در کدام بخش قرار گیرد که در صورت ذکر نشدن آن، به صورت پیشفرض Other خواهد بود.
php تعیین کنندهی حداقل ورژن قابل قبول PHP برای اجرای ماژول است و version، ورژن ماژول رو تعیین میکند.
البته توجه کنید که تعیین ورژن توسط سیستم packaging در drupal.org صورت میگیرد
و به هنگام ارسال ماژول به drupal.org، باید آن را حذف کنید.
dependencies که به فرم یک آرایه نوشته میشود تعیین کنندهی ماژولهایست که برای فعال شدن ماژول نوشته شده باید موجود و قابل فعال شدن باشند. درصورتی که از Drush برای فعالسازی استفاده شود،
همهی dependency ها به صورت خودکار دانلود و فعال خواهند شد.
برای نام بردن هر ماژول dependency نام اون رو در یک خط جداگانه قرار میدهیم به این صورت:
dependencies[] = viewsdependencie[] = date
بخش files که اعلان آن مشابه dependencies است برای تعیین فایلهای مربوط به ماژول است.
برای مثال فایلهای CSS، جاوااسکریپت، پلاگینهای ماژول views و غیره می باشد.
در بخش بعد درباره هوک ها صحبت خواهیم کرد.
با ما همراه باشید