برای نوشتن در نسخه های بالاتر از 8.2، مراحل خیلی ساده تر شده اند. در واقع این مقاله مکمل جلسه 1 میباشد و شما می توانید با استفاده از مطلب قبلی (نحوه ی نوشتن ماژول - جلسه 1) نوشتن ماژول را آغاز کنید البته با این تفاوت که نیازی به ویرایش هیچ فایل php نداشته باشید.
در این جلسه توضیح مختصری در این مورد ماژول نویسی در دیتالایف انجین بدین صورت میدهیم.
به عنوان مثال در نسخه های قبل از 8.2 شما میبایست فایل index.php را باز کرده و برای فراخوانی و نمایش فایل ماژول کدهایی مانند کدهای زیر تعریف می کردید:
require_once ENGINE_DIR . "/modules/prostats.php";
$tpl->set ( '{prostats}', $tpl->result['prostats'] );
$tpl->set ( '{prostats}', $tpl->result['prostats'] );
در این نوع ماژول نویسی بعد از آپگرید به نسخه جدید میبایست و یا برخورد به هرگونه مشکلی در فایلهای php و جایگزین کردن با فایل جدید، تمامی تغییرات اعمال شده در فایل های php باید دوباره اعمال میشد.
اما در نسخه های بعد از 8.2 با تگ جدید {"آدرس"=include file} روبرو هستید که کار وبمستر را بسیار راحت کرده است، و وبمستر وظیفه قرار دادن کد را درون فایل های tpl قالب دارد.
برای این نوع ماژول نویسی می بایست (معمولا در قسمت انتهای فایل ماژول)، برای گرفتن خروجی، نتیجه تعریف شده در متغیر چاپ بشود.
بطور مثال:
echo $tpl->result['prostats'];
شکل کلی تعریف بصورت زیر است:
{include file="engine/modules/prostats.php"}
{include file="engine/modules/mymod.php?mod=news¶m={news-id}"}
{include file="engine/modules/mymod.php?mod=news¶m={news-id}"}
1- نمونه تگ ساده برای نمایش ماژول
2- نمونه ای به همراه ورودی، اگر در فایل shortstory.tpl قرار گیرد در فایل ماژول (engine/module/mymod.php) که در اینجا param بصورت متغیری بنام param$ تعیین میشود، که مقدار آن شماره پست مربوطه، و mod بصورت متغیری بنام mod$ تعیین میشود که مقدار آن news میباشد.
که فقط کافیست کدهای بالا را در فایل tpl قالب قرار گیرد.
در آموزش نوشتن ماژول جلسه اول دیدیم که برای استفاده از فایل های موجود در فولدر inc میبایست کدهایی درون فایل option.php قرار میدادید.
اما در نسخه های بالاتر از 8.2 فقط کافیست یک فایل install.php ایجاد کنید و کد های زیر را درون آن قرار دهید:
include ('engine/api/api.class.php');
$dle_api->install_admin_module('prostats', 'عنوان ماژول', 'توضیح ماژول', 'prostats.png', '1,2');
ورودی های تابع ایجاد شده بترتیب به شکل زیر میباشد:$dle_api->install_admin_module('prostats', 'عنوان ماژول', 'توضیح ماژول', 'prostats.png', '1,2');
1- آدرس (name) ماژولی هست که برای بخش مدیریت ایجاد کردید. (مثال engine/inc/prostats.php)
2- عنوان نمایشی ماژول
3- توضیحی که زیر عنوان در پنل مدیریت قابل مشاهده است.
4- آدرس آیکونی که در engine/skins/images/prostats.png برایش قرار داده اید.
5- سطح دسترسی گروه های کاربری برای مدیریت ماژول که در اینجا گروه کاربری 1 و 2 می توانند به آن دست پیدا کنند.
نکته: در صورت موجود بودن ماژول در مدیریت آن ماژول بروزرسانی و در صورت انجام با موفقیت عملیات، مقدار خروجی تابع بالا TRUE خواهد بود.
البته لازم به ذکر است در فایل api.class.php تابعی برای حذف ماژول در نظر گرفته شده است که بصورت زیر است:
$dle_api->uninstall_admin_module ('prostats');
که فقط کافیست به عنوان ورودی نام ماژول مدیریت آنرا وارد نمایید.برخی از ماژول ها نیاز دارند تا کاربری که در حال استفاده از آن هست را تشیص دهد. به عنوان مثال برای ثبت یک پیغام، برای تعیین فرستنده در دیتابیس، باید ID آن کاربر را هم دریافت و در فیلد جدید ثبت کنیم. حالا این ID کاربر ( یا حتی نام کاربری ) از طریق متغیری بنام member_id$ مشخص می شود که دارای آرایه ای از جدول کاربر لاگین شده است، مثلا برای دریافت داده های متغیر به شکل زیر استفاده کرد:
$member_id['user_id'];
$member_id['name'];
$member_id['email'];
...
$member_id['name'];
$member_id['email'];
...
در نسخه 9.3 نیز امکانی توسط تیم پشتیبان فارسی در قسمت زبان افزوده شده است، که برای افزودن برای زبان مورد نظر فقط کافیست فایلی با فرمت php یا lng در فولدر website و adminpanel قرار گیرد تا بصورت اتوماتیک فایل خوانده شود، برای مثال بصورت زیر قابل تعریف است:
<?php
$lang['firends_logo'] = "لوگوی دوستان";
$lang['firends2_logo'] = "لوگوی دوستان2";
?>
با ایجاد فایلی با محتویات بالا، فایل بصورت اتوماتیک خوانده شده و متغیری بصورت زیر تعریف خواهد شد که می توانید به راحتی فراخوانی کنید:$lang['firends_logo'] = "لوگوی دوستان";
$lang['firends2_logo'] = "لوگوی دوستان2";
?>
$lang['firends_logo']
$lang['firends2_logo']
$lang['firends2_logo']
با امید به اینکه این مقاله هرچند مختصر، کمکی شایانی در نوشتن ماژول به شما عزیزان کرده باشد.
در صورت برخورد با هرگونه سوالی در هریک از مراحل نوشتن ماژول، در قسمت نظرات همین مقاله مطرح کنید.