ساخت افزونه ها
- محمد علایی
- منتشر شده در
- زمان خواندن 2 دقیقه
جوملا یک سیستم مدیریت محتوای غنی و قدرتمند است، اما اگر سایتی با جوملا میسازید و به قابلیتهای اضافیای نیاز دارید که بهطور پیشفرض در جوملا وجود ندارد، میتوانید بهراحتی آن را با افزونهها توسعه دهید. پنج نوع رایج افزونه در جوملا وجود دارد: کامپوننتها، ماژولها، پلاگینها، قالبها و زبانها. سه نوع افزونه دیگر هم وجود دارد: بستهها، فایلها و کتابخانهها. هر کدام از این افزونهها وظیفه انجام عملکرد خاصی را دارند (بسیاری از قابلیتهای داخلی جوملا نیز با استفاده از همین افزونهها پیادهسازی شدهاند).
تفاوت بین کامپوننتها، ماژولها، پلاگینها و قالبهای جوملا ممکن است در ابتدا کمی گیجکننده باشد. اگر تازه با جوملا آشنا شدهاید، ممکن است دیدن ویدیوی «جوملا چگونه کار میکند - راهنمای توسعهدهندگان افزونه» برای شما مفید باشد که شرح میدهد این چهار نوع افزونه چگونه در تولید یک صفحه وب جوملا نقش دارند. خروجی آنها در نمودار زیر با رنگهای مختلف مشخص شده است.

کامپوننتها
کامپوننتها بخش مرکزی یک صفحه وب در سایت جوملا را ارائه میکنند؛ هر صفحه وب یک سایت، خروجی یکی از کامپوننتها را نمایش میدهد. میتوان آنها را به عنوان برنامههای کوچک تصور کرد. بیشتر کامپوننتها دو بخش دارند: بخش سایت (نمایش برای بازدیدکننده) و بخش مدیریت (برای مدیر سایت). برای مثال، "com_content" کامپوننتی است که مسئول مدیریت مطالب (مقالات) است؛ در سمت سایت com_content مقالات را به بازدیدکنندگان نمایش میدهد و در سمت مدیریت امکان ویرایش مقالات برای مدیران فراهم میکند.
در کل، کامپوننتها مدیریت دادههای جوملا را بر عهده دارند و قابلیت ایجاد، ویرایش، حذف و نمایش دادهها را فراهم میکنند. اغلب بخش مدیریت دادهها در پنل مدیریت انجام میشود و بخش سایت فقط دادهها را نمایش میدهد، اما این تقسیم وظایف اجباری نیست و بعضی کامپوننتها قابلیت ایجاد، ویرایش یا حذف داده را در سمت کاربر نیز فراهم میکنند.
وقتی به صفحه خاصی در سایت میروید یا عملیاتی مثل ورود/خروج انجام میدهید، در واقع کامپوننتی که اجرا میشود را انتخاب کردهاید. آن کامپوننت کدی است که مسئول پردازش درخواست HTTP، اجرای عملیات درخواستی و نمایش داده کلیدی در صفحه وب است.
- مثالها: مدیریت مقالات (com_content)، دستهبندیها (com_categories)، مخاطبین (com_contact)، تصاویر و فایلهای چندرسانهای (com_media)
- مسیر مدیریت: منوی مدیریت → کامپوننتها → مخاطبین (برای com_contact)
کامپوننتهای توسعه داده شده توسط توسعهدهندگان جانبی شامل ابزارهای پشتیبانگیری و پشتیبانی از تجارت الکترونیک نیز هستند.
ماژولها
ماژولها افزونههایی سبکتر و انعطافپذیرتر هستند که روی صفحه وب نمایش داده میشوند. ماژولها بیشتر به عنوان «کادر ها» شناخته میشوند که اطراف یک کامپوننت چیده میشوند، مانند ماژول ورود یا ماژول مسیرنما (breadcrumb). ماژولها بر اساس آیتم منو اختصاص داده میشوند، بنابراین میتوانید تصمیم بگیرید که ماژول ورود بسته به اینکه کاربر در کدام آیتم منو قرار دارد، نمایش داده شود یا خیر.
ماژول میتواند همراهی برای یک کامپوننت باشد. برای مثال، اگر صفحه شما یک مقاله را نمایش میدهد (کامپوننت com_content) ممکن است ماژولی در ستون کناری (مثل mod_tags_similar) لینک به مقالات مرتبط نمایش دهد یا ماژولی که یک اسلایدر تصویری از عکسهای مرتبط را نشان میدهد.
اما ماژولها الزاماً نیازی به ارتباط با کامپوننت ندارند و حتی ممکن است فقط محتوای استاتیک HTML یا متن ساده باشند.
- مثالها: تازهترین مقالات (mod_articles_latest)، منوها (mod_menu)، کاربران حاضر (mod_whosonline)، HTML سفارشی (mod_custom)
- مسیر مدیریت: منوی مدیریت → محتوا → ماژولهای سایت
اگر تازه شروع به توسعه افزونه برای جوملا کردهاید، ساخت ماژول آسانترین نقطه شروع است.
پلاگینها
پلاگینها در پشت صحنه کار میکنند تا عملکرد پایه جوملا را تغییر یا بهبود دهند. در اجرای هر قسمتی از جوملا، چه هسته سیستم، ماژول یا کامپوننت، رویدادی رخ میدهد. وقتی یک رویداد تحریک میشود، پلاگینهایی که برای رسیدگی به آن رویداد ثبت شدهاند اجرا میشوند و دادههای مربوط به آن رویداد به آنها ارسال میشود. پلاگین میتواند دادهها را تغییر داده و مجدداً به کد اصلی جوملا بازگرداند. برای مثال، پلاگینی میتواند مقالات ارسالی توسط کاربران را بررسی و فیلتر کلمات نامناسب را انجام دهد.
- مثال: پلاگین صفحهبندی محتوا که لینکهای «قبلی» و «بعدی» را میسازد
- مسیر مدیریت: منوی مدیریت → سیستم → پلاگینها
قالبها (Templates)
قالب در واقع طراحی سایت شما با جوملا است. با استفاده از قالب، ظاهر و حس وبسایتتان را تعریف میکنید که عمدتاً بر پایه CSS استوار است. قالبها دارای بخشهایی هستند که در آنها کامپوننت (معمولاً فقط یکی) و ماژولها (به تعداد دلخواه) نمایش داده میشوند. ساخت یک قالب کامل جوملا از صفر کار دشواری است زیرا باید خروجی متنوع HTML که توسط کامپوننتهای جوملا تولید میشود و کلاسهای CSS به کار رفته در آنها را به خوبی بشناسید. اما سفارشیسازی قالبهای Atum (برای مدیریت) و Cassiopeia (برای سایت) که به صورت پیشفرض همراه جوملا عرضه میشوند نسبتاً آسان است، بهویژه که میتوانید از قابلیت قالبهای فرزند جوملا استفاده کنید و فقط تفاوتها و تغییرات نسبت به قالب اصلی را تعریف کنید.
- مسیر مدیریت: منوی مدیریت → سیستم → قالبها
زبانها (Languages)
احتمالاً سادهترین نوع افزونهها زبانها هستند. زبانها میتوانند به دو شکل بسته اصلی (core package) یا بسته افزونه (extension package) باشند. در اصل، هر دو نوع بسته شامل جفت کلید/مقدار هستند که ترجمه رشتههای متنی ثابت تعیین شده در کد منبع جوملا را فراهم میکنند. این بستههای زبان روی هر دو بخش سایت و مدیریت جوملا تأثیر میگذارند. توجه کنید که این بستههای زبان شامل فایل متا XML هم هستند که زبان را توصیف میکند.
- مسیر مدیریت: منوی مدیریت → سیستم → مدیریت / زبانها
کتابخانهها (Libraries)
کتابخانهها کدهای PHP مستقل هستند که جوملا از آنها استفاده میکند. تقریباً تمام کدهای اصلی جوملا به شکل کتابخانه در مسیر `libraries/src` قرار دارند. همچنین تمام کتابخانههای composer (مثل PHPMailer) در مسیر `libraries/vendor` به عنوان کتابخانه «vendor» نصب میشوند. بسیاری از محبوبترین افزونههای جانبی جوملا از کتابخانهها برای استفاده مجدد از کدهای مشترک بین کامپوننتهای خود بهره میبرند.
فایل (File)
نوع افزونه فایل برای نصب فایلهای منفرد در یک پوشه از سایت جوملا استفاده میشود. در بخش هسته جوملا نمونهای از این نوع افزونه وجود ندارد و کمتر استفاده میشود، اما میتواند به عنوان مثال برای قرار دادن اسکریپتهای سفارشی در پوشه CLI جوملا یا قرار دادن override قالبها در پوشه خاصی کاربرد داشته باشد.
بستهها (Packages)
بستهها صرفاً گروهی از هر نوع افزونههای گفته شده هستند. استفاده رایج از بستهها، ارسال قالبی است که همراه آن افزونه سیستمی نیز نصب میشود، یا کامپوننتی که یک کتابخانه مورد استفاده خود را هم نصب میکند. در جوملا بسیاری از بستههای زبان به صورت package عرضه میشوند تا زبانهای رابط سایت و مدیریت بهصورت مستقل نصب شوند.
نصب افزونه
چهار روش برای نصب افزونه وجود دارد: نصب از فهرست افزونههای جوملا (Joomla Extension Directory – بهصورت Install from Web)، بارگذاری فایل ZIP افزونه، نصب از پوشه و نصب از آدرس URL.