دیتالایف انجین فارسی

نحوه ی نوشتن ماژول - جلسه 2

تاریخ انتشار: 7 مرداد 1390
ارسال کننده: SMostafa
برای نوشتن در نسخه های بالاتر از 8.2، مراحل خیلی ساده تر شده اند. در واقع این مقاله مکمل جلسه 1 میباشد و شما می توانید با استفاده از مطلب قبلی (نحوه ی نوشتن ماژول - جلسه 1) نوشتن ماژول را آغاز کنید البته با این تفاوت که نیازی به ویرایش هیچ فایل php نداشته باشید.
در این جلسه توضیح مختصری در این مورد ماژول نویسی در دیتالایف انجین بدین صورت میدهیم.

به عنوان مثال در نسخه های قبل از 8.2 شما میبایست فایل index.php را باز کرده و برای فراخوانی و نمایش فایل ماژول کدهایی مانند کدهای زیر تعریف می کردید:
require_once ENGINE_DIR . "/modules/prostats.php";
$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&param={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');
ورودی های تابع ایجاد شده بترتیب به شکل زیر میباشد:
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'];
...

در نسخه 9.3 نیز امکانی توسط تیم پشتیبان فارسی در قسمت زبان افزوده شده است، که برای افزودن برای زبان مورد نظر فقط کافیست فایلی با فرمت php یا lng در فولدر website و adminpanel قرار گیرد تا بصورت اتوماتیک فایل خوانده شود، برای مثال بصورت زیر قابل تعریف است:
<?php
$lang['firends_logo'] = "لوگوی دوستان";
$lang['firends2_logo'] = "لوگوی دوستان2";
?>
با ایجاد فایلی با محتویات بالا، فایل بصورت اتوماتیک خوانده شده و متغیری بصورت زیر تعریف خواهد شد که می توانید به راحتی فراخوانی کنید:
$lang['firends_logo']
$lang['firends2_logo']


با امید به اینکه این مقاله هرچند مختصر، کمکی شایانی در نوشتن ماژول به شما عزیزان کرده باشد.
در صورت برخورد با هرگونه سوالی در هریک از مراحل نوشتن ماژول، در قسمت نظرات همین مقاله مطرح کنید.
    22 نفر (22 کاربر و 0 میهمان) از این مطلب تشکر کرده اند.
    تشکر
    مدیر بخش قالب ها
    07 مرداد 1390 - 16:45
    خیلی عالی بود سید flower
    اونایی كه دستی تو ماژول دارن ، دست بكار بشید كه دیگه كارتون خیلی راحت تر شده yes
    مدیر بازنشسته
    08 مرداد 1390 - 02:40
    خیلی عالیه. اینطوری نوشتن ماژول راحت تره. مخصوصا رفع اشکال ها و هماهنگ سازی ها

    --------------------
    عضو سایت
    08 مرداد 1390 - 21:41
    خیلی خوبه.. پس با این حساب نوشتن ماژول تشکر از پستها برای انجمن کار خیلی ساده ای باید باشه
    امیدوارم به زودی این ماژول توسط مهندسین دیتالایف انجین فارسی آماده و منتشر بشه. happy
    عضو سایت
    09 مرداد 1390 - 00:53
    ممنونم . مفید بود
    عضو سایت
    04 شهریور 1390 - 03:37
    عالی بود تشكر makhsoosefreeiran
    عضو سایت
    30 دی 1390 - 21:34
    it was really useful thanks labkhand
    عضو سایت
    18 مهر 1394 - 09:07
    میشه یه مثال ماژولی اینجا قرار بدید
    به این صورت که چیزهایی که گفتین رو توش نشون بدین
    عضو سایت
    03 بهمن 1394 - 18:54
    اگه یه آموزش پروژه محور بزارید خیلی خوبه
    مدیر بازنشسته
    03 بهمن 1394 - 20:47
    سلام ،
    آموزش جدیدتری هم بصورت فیلم هست که ممکنه برای دوستان مفید باشه
    :: فیلم آموزش ماژول نویسی ::
    موفق باشید

    --------------------
    جهت ارسال نظر، فرم زیر را تکمیل نمائید:
    نام:*
    ایمیل:*
    متن نظر:

     
    پررنگکج خط دارخط دار در وسط|سمت چپوسط سمت راست|قرار دادن شکلکانتخاب رنگ|پنهان کردن متنقراردادن نقل قولتبدیل نوشته ها به زبان روسیقراردادن Spoiler
    کد را وارد کنید: *
    عکس خوانده نمی شود