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

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

پشتیبان رسمی سیستم مدیریت محتوا

نحوه ی نوشتن ماژول

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

برای نوشتن در نسخه های بالاتر از 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']


با امید به اینکه این مقاله هرچند مختصر، کمکی شایانی در نوشتن ماژول به شما عزیزان کرده باشد.
در صورت برخورد با هرگونه سوالی در هریک از مراحل نوشتن ماژول، در قسمت نظرات همین مقاله مطرح کنید.

نظرات کاربران
مجتبی جشنانی در 07 مرداد 1390 - 16:45 گفته:
مدیر بخش قالب هانظرات: 190

خیلی عالی بود سید flower
اونایی كه دستی تو ماژول دارن ، دست بكار بشید كه دیگه كارتون خیلی راحت تر شده yes

حمید یوسفی در 08 مرداد 1390 - 02:40 گفته:
مدیر بازنشستهنظرات: 35

خیلی عالیه. اینطوری نوشتن ماژول راحت تره. مخصوصا رفع اشکال ها و هماهنگ سازی ها

--------------------

علیرضا در 08 مرداد 1390 - 21:41 گفته:
عضو سایتنظرات: 51

خیلی خوبه.. پس با این حساب نوشتن ماژول تشکر از پستها برای انجمن کار خیلی ساده ای باید باشه
امیدوارم به زودی این ماژول توسط مهندسین دیتالایف انجین فارسی آماده و منتشر بشه. happy

امیرحسین ساقی در 09 مرداد 1390 - 00:53 گفته:
عضو سایتنظرات: 61

ممنونم . مفید بود

Amirali در 04 شهریور 1390 - 03:37 گفته:
عضو سایتنظرات: 178

عالی بود تشكر makhsoosefreeiran

Ala Mohammad S.M در 30 دی 1390 - 21:34 گفته:
عضو سایتنظرات: 4

it was really useful thanks labkhand

behzadamin12 در 18 مهر 1394 - 09:07 گفته:
عضو سایتنظرات: 3

میشه یه مثال ماژولی اینجا قرار بدید
به این صورت که چیزهایی که گفتین رو توش نشون بدین

mohandesan در 03 بهمن 1394 - 18:54 گفته:
عضو سایتنظرات: 8

اگه یه آموزش پروژه محور بزارید خیلی خوبه

پارس دیتالایف در 03 بهمن 1394 - 20:47 گفته:
مدیر بازنشستهنظرات: 34

سلام ،
آموزش جدیدتری هم بصورت فیلم هست که ممکنه برای دوستان مفید باشه
:: فیلم آموزش ماژول نویسی ::
موفق باشید

--------------------

ارسال نظر
نام:*
ایمیل:*
متن نظر:
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
کد را وارد کنید: *
عکس خوانده نمی‌شود؟ کلیک کنید!