فریم ورک و سیستم مدیریت محتوای مادایکس
۲۲ اسفند ۱۳۸۷ ساعت ۱۰:۴۴
مادایکس
بررسی و معرفی MODx Evolution
مادایکس یک سیستم مدیریت محتوا و فریم ورک (Framework) تمام آژاکس به زبان PHP و بصورت Open Source است که هر دو قابلیت سیستم مدیریت محتوا (CMS , Content Management System) و فریم ورک مدیریت محتوا (CMF , Content Management Framework) را در خودش جمع کرده.
توسط خاصیت CMS مادایکس می تونید یک وب سایت کامل از هر نوع را در چند دقیقه راه اندازی و مطالب اون رو مدیریت کنید و توسط خاصیت CMF می تونید محدودیتهای موجود در CMS ها را از میان بردارید.
فریم ورک و محدودیتهای سیستم های مدیریت محتوا
هر سیستمی مطابق با یک هدف و منظور طراحی، پشتیبانی، بروز رسانی و ساخته میشه. مثلا یک سیستم مخصوص ایجاد بلاگ، یک سیستم مخصوص ایجاد انجمن، یک سیستم مخصوص ایجاد فروشگاه و غیره ایجاد میشه. این سیستمها تا حدودی امکان گسترش کاربرد رو به کاربرانشون میدن ولی در واقع با این منظور ساخته نشدند تا توسط کاربر توسعه داده بشن و اگر این گسترش امکانات (Develop) توسط طراحان سیستم پیش بینی نشده باشه، باید آستین ها رو بالا زد و کدهای اصلی سیستم رو دستکاری کرد.
برای نمونه وردپرس یک سیستم کامل و قدرتمند برای ایجاد بلاگ هست ولی اگر مثلا یکی از کاربران این سیستم بخواد یک فروشگاه کوچیک یا یک انجمن کوچیک وابسته به بلاگ یا سایت خودش در همون سیستم بلاگ داشته باشه، یا باید منتظر ارائه چنین امکانی از طرف سازندگان و توسعه دهندگان وردپرس بمونه یا شخصا وارد کدهای اصلی سیستم بشه که اینکار هم به تخصص بالا و تجربه زیاد در کار با اون سیستم نیاز داره (درک کامل نحوه کارکرد سیستم) و هم بسته به تبحر کاربر احتمال بروز خطا در هسته سیستم رو بالا می بره و گاهی هم غیر ممکنه و باید یک سیستم کنار سیستم موجود نصب کرد.
سیستم فریم ورک طوری طراحی و ساخته میشه که امکان گسترش و توسعه اش به سادگی امکانپذیر باشه یعنی کاربر بتونه بسادگی بدون دست بردن در هسته سیستم، امکانات مورد نیاز خودش رو برآورده کنه. مثلا یک سایت شامل بلاگ، بخش داونلود، فروشگاه، غیره رو بسادگی بصورت کامل و حرفه ای در کنار هم داشته باشه و حتی این سیستم رو کاملا تک منظوره کنه یعنی مثلا از فریم ورک یک فروشگاه کامل دربیاره.
مادایکس سیستمی هست که علاوه بر داشتن خصوصیات کامل یک CMS برای کاربران عادی، خصوصیات کامل یک CMF یا فریم ورک رو هم ارائه میده و جالب اینکه گسترش حرفه ای و بنیادی امکانات سیستم در دو فاز برنامه نویسی و استفاده انجام میشه که این دو بخش رو طراح و توسعه دهنده میتونه به سادگی و بطور کامل از هم جدا کنه این یعنی هر تغییری هر قدر گسترده و پیچیده در زمان طراحی و برنامه نویسی، در فاز استفاده به سادگی نصب یک افزونه است! و هر کاربری می تونه ازش استفاده کنه.
برای نمونه افزونه ای برای ساخت بلاگ در این سیستم ایجاد شده که کاربر عادی بدون نیاز به دانش برنامه نویسی PHP میتونه بسادگی از هر بخشی از سایتش بلاگ تهیه کنه یعنی مشخص کنه که چه صفحاتی بصورت بلاگ مدیریت و نمایش داده بشن. با این کار، کاربر عملا قابلیتهای یک سیستم بلاگ رو در سایتش راه اندازی کرده اون هم بلاگی که با سایر تنظیمات و بخشهای سیستم در تعامل کامل هست!
در کل هر امکانی، در زمان توسعه سیستم فقط در مواجهه با برنامه نویسه و وقتی از این بخش خارج میشه و به مصرف می رسه کاملا عامی و به اصطلاح Plug & Play میشه. به اضافه اینکه بخش برنامه نویسی هم به سادگی استفاده از API های سیستم هست و نیازی به دستکاری هسته سیستم یا درک نحوه عملکرد سیستم نیست.
CMS تمام آژاکس
این سیستم بصورت تمام آژاکس طراحی شده. اگر با CMS ها کار کرده باشید، می دونید که برای استفاده از آژاکس در فضای CMS ها، محدودیتهایی وجود داره. از جمله:
- دسترسی راحت و امن به پایگاه داده یا دیتابیس سایت:
در این سیستم یک فایل از قبل ایجاد شده که به فایل تنظیمات یا config سیستم دسترسی داره و مشکل دسترسی به پایگاه داده رو برطرف کرده. (اطلاعات دیتابیس و سایر اطلاعات پیکربندی در فایل config ذخیره شده). بجای ارسال درخواست آژاکس به اسکریپت مربوطه، ابتدا این فایل call میشه و اسکریپت مورد نظر در این فایل include میشه. - اضافه کردن و استفاده بی دردسر از فایلهای جاوا اسکریپت و JS library ها:
در مادایکس هیچگونه محدودیتی در ایجاد قالب یا skin یا template وجود نداره! هر ترکیب از کدهای HTML (فقط HTML بدون هیچ کد PHP) که موردنظرتون هست رو برای قالب سایت مشخص کنید. در مادایکس طراحی قالب به سادگی ساختن یک صفحه HTML انجام میشه. نمونه یک قالب ساده مادایکس رو در زیر ببینید:این امکان باز و گسترده در ساخت قالب، تاکید بر استفاده از CSS بصورت Tableless (بدون جدول) و استاندارد و XHTML بودن قالبها رو به همراه داره.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>[(site_name)] | [*pagetitle*]</title> <meta name="description" content="This is site description." /> <meta name="keyword" content="keyword1 , keyword2 , keyword3" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link rel="stylesheet" type="text/css" href="styles/styles.css" media="screen"/> <link rel="stylesheet" type="text/css" href="styles/print.css" media="print"/> <script type="javascript" src="js/jquery.js"></script> </head> <body> <div id="container"> <div id="header"> <div id="logo"><img src="images.logo.jpg" /></div> <div id="menu">[[Wayfinder? &startId=`0`]]</div><!-- creates dynamic menus --> </div> <div id="sidebar"> <div id="lastNews">[[Ditto? &startID=`4` .....]]</div><!-- creates dynamic blog summary and last blog posts and ... --> <div id="login">[[WebLoginPE]]</div><!-- creates user management features --> </div> <div id="content"> [*content*] <!-- prints main content of document --> </div> <div id="footer"> {{copyright}} <!-- prints some HTML codes --> <p>{{counter-codes}}</p> <!-- prints counter-codes which you have created --> </div> </div> </body> </html>
- استفاده از API های سیستم و برخی منابع تولید شده موقتی مثل session ها که با اجرای سایت ایجاد، حذف و تغییر می کنند:
چنانچه با آژاکس کار کرده باشید، می دونید که برای پردازش اطلاعات باید یک فایل پردازشی مثل PHP رو اجرا کنید (ارسال درخواست آژاکس و دریافت پاسخ). این فایل صرفا یک فایل مجزا و در واقع اسکریپت هست. طبیعا برای مبادله اطلاعات با یک سیستم داینامیک نیاز به برقراری ارتباط با پایگاه داده دارید و همچنین از API های سیستم هم محرومید چون این فایل در حقیقت obsolete هست و از تغییر و تحولات داینامیک با خبر نمیشه. در مادایکس قادرید تا این اسکریپت شخصی رو وارد سیستم کنید، از API ها استفاده کنید، به متغیرهای سیستمی دسترسی داشته باشید و از اتصالات دائمی و امن سیستم با پایگاه داده بهره ببرید.
علاوه بر اینها بخش مدیریت هم بصورت تمام آژاکس توسط مرجع یا کتابخانهMootools طراحی شده و در نسخه آینده هم ExtJS جایگزین Mootools شده. (یه توضیح مختصر درباره Ext JS)
بدون نیاز به برنامه نویسی
برخلاف اکثر سیستمها، کاربر به هنگام کار با مادایکس در هیچ جا از جمله قالب، هیچ کد PHP مشاهده نمی کنه! کدها بصورت اسکریپت و جداگانه با نام Snippet در سیستم وارد میشن و بصورت تگ خاص در سایت استفاده میشن. یک تگ مخصوص می تونه بسادگی اطلاعات رو به اسکریپت برسونه و اون رو اجرا کنه.
برای نمونه فرض کنید اسنیپتی (اسکریپتی) ساخته شده که متغیری با نام action$ داره و اگر مثلا مقدار این متغیر register بود، فرمی برای ثبت اطلاعات رو نشون بده و اگر display بود اطلاعات ثبت شده رو نمایش بده. همچنین فرض کنید نام TestSnippet برای این اسنیپت یا اسکریپت انتخاب شده. حالا کاربر در بخش مدیریت با قرار دادن کد زیر در هر جای صفحه یا قالب خودش می تونه اسکریپت رو در سایت فعال کنه:
در تگ بالا، مقدار display بصورت خودکار وارد متغیر action$ میشه و بازدیدکننده خروجی متناسب با مقدار display رو مشاهده می کنه. برای چنین کار ساده ای به هیچ وجه نیازی به دانش برنامه نویسی نیست. البته مسلما دست برنامه نویس ها خیلی بازه چون اونها می تونن خودشون اسکریپت بنویسن و اسکریپتهای نوشته شده رو مطابق نیازشون تغییر بدن.
مادایکس، یک سیستم خاص
- متغیر قالب
- این سیستم یک قابلیت کاملا منحصر به فرد رو به جامعه CMS ها معرفی کرده به نام Template Variable یا متغیر قالب.
همه CMS ها تعدادی فیلد پیش فرض برای وارد کردن اطلاعات هر صفحه مثل عنوان و خلاصه و محتوا و alias و ... دارند.
در مادایکس شما قادرید هر نوع فیلد ورودی به هر تعداد رو مشخص کنید تا به فیلدهای پیش فرض اضافه بشه. مثلا هر صفحه یک عکس خاص نیاز داره. شما یک متغیر قالب یا همون فیلد از نوع عکس میسازید و با کمک اون به بخش تصاویر و آپلود میرید. عکس مورد نظر درست جایی از قالب قرار میگیره که تگ این متغیرقالب رو قرار دادید. این قابلیت بی نهایت جای فکر داره و دست سایت رو در ایجاد سایت داینامیک باز میذاره..... - مدیریت کلمات کلیدی
مادایکس امکان مدیریت کلمات کلیدی رو به سادگی فراهم می کنه و می تونید برای هر صفحه از هر کلمات متناسب با محتوای اون صفحه استفاده کنید. - مدیریت قالبها یا Template ها
همونطور که گفتم امکان تعیین و تغییر قالب برای هر صفحه به سادگی انتخاب اون قالب از یک منو است. این منو در بخشی که فیلدهای اطلاعات صفحه از قبیل عنوان و خلاصه و alias و غیره قرار دارند قرار گرفته - SEO
مادایکس مانند سایر سیستم ها امکان استفاده از Friendly URLs مانند
http://site-name.com/parent1/parent2/child.html
به جای
http://site-name.com/index.php?id=38
رو به کاربر میده و برای موتورهای جستجو کاملا بهینه شده است (SEO). همچنین تعامل فوق العاده ای با موتورهای جستجو از جمله گوگل داره (من در این باره یک تجربه شخصی جالب دارم). - دسترسی به همه نوع اطلاعات
در مادایکس تمامی اطلاعات از دیتابیس به سادگی در دسترس هستند و برای مثال توسط افزونه جستجوی معروف این سیستم (AjaxSearch) می تونید هر اطلاعاتی از قبیل نام صفحه، محتوای صفحه، محتوای متغیرهای قالب، برچسب ها و همه فیلدهای مخصوص یک صفحه رو در جستجو وارد کنید. - استفاده از Event ها
پلاگین ها در مادایکس کدهای PHP هستند که بصورت خودکار در زمان یک رخداد یا Event اجرا میشن. مثلا کدی درست قبل از ورود یا Login کاربر (درست قبل از ایجاد session ها) اجرا بشه و مثلا یک session اضافی رو بسازه و یا کدی درست قبل از نمایش اطلاعات صفحه اجرا بشه و بیاد محتوای صفحه رو ف ی ل ت ر کنه.
مثلا Eventای برای زمان ورود یا لاگین کاربران وجود داره که من می تونم با استفاده از این Event، با استفاده از نام کاربری و رمز وارد شده، کاربر رو در یک محیط دیگه مثل فروم هم لاگین کنم یا لاگ اوت کنم و. ....
منوی درختی صفحات سایت هم نکته مفید و جالب مادایکس هست که امکان مشاهده و مدیریت همه صفحات رو یکجا به کاربر میده. مادایکس قابلیتهای بسیار مفید و خاصی از جمله سیستمهای خاص مدیریت دسترسی کاربران و قابلیتهای RTL و غیره ارائه داده که توضیح و معرفی اون خیلی طولانی میشه.
همه این قابلیتها به اضافه قابلیتها و امکانات کلی و عمومی سایر CMS هاست!
مادایکس فارسی
این سیستم به فارسی ترجمه شده و سایت پشتیبانی فارسی به همراه انجمن داره. بخش راهنما یا Documentation هم فعلا توسط خودم در حال تکمیل و ترجمه هست که اگر مایل به همکاری هستید می تونید همکاری کنید و تو یه کار open source سهیم شید.
نسخه های مادایکس
آخرین نسخه مادایکس نسخه Evolution 1.0.5 هست که و کامل شده. علاوه بر انجمن و کاربران بسیار فعال سایت (سایت اصلی)، طراحان سیستم کاملا دارن رو توسعه اش کار می کنند.
نسخه جدید مادایکس با نام Revolution 2.0، واقعا Revolution (هست (واقعا) قابلیتهایی بهش اضافه میشه که اولا منحصر به فرده و ثانیا فوق العاده جالبه! این نسخه بصورت عمومی در دسترس هست)
از قابلیتهای منحصر به فرد فعلا همین رو بگم که قابلیت ریموت اولین بار توسط یکی از برنامه نویسان اصلی سیستم داره اجرا میشه و این امکان رو میده تا مثلا هسته مادایکس رو روی یک سرور، فایلهای شخصی سایت (مثل تصاویر و غیره) رو یک سرور و دیتابیس رو روی یک سرور دیگه قرار بدید و سایت رو اجرا کنید. ! امنیت از این توپ تر؟
از امکانات فوق العاده هم میشه به قابلیت توسعه یا Develop سطح بالای اون اشاره کرد که این سیستم با همین هدف بصورت کاملا Object Oriented بازنویسی شده. همچنین بسیاری از افزونههای سودمند نسخهی Evolution در Revolution بصورت Built-in قرار گرفته از جمله ManagerManager (با عنوان Form Customization) و PHx.
یه امکان جالب دیگه، قابلیت مدیریت چند تا سایت در یک فضای مدیریتی هست که مورد علاقه سازمانها و شرکتهاست که همه سایتهای زیرمجموعه رو یکجا رسیدگی کنند.
کدنویسی توی نسخه جدید واقعا راحت و لذتبخشه!
لینکها:
سایت اصلی: MODxCMS.com
انجمن پشتیبانی اصلی: MODxCMS.com/forums
دانشنامه مادایکس: wiki.MODxCMS.com
سایت پشتیبانی فارسی: MODxCMS.ir
انجمن پشتیبانی فارسی: MODxCMS.ir/forums
AHHP تو این انجمن آماده پاسخ به هر سوالی هست :)
من یه آموزش و معرفی طولانی و جامع بصورت تصویری و حرفه ای توی سایت Nettuts پیدا کردم.
می خواستم ترجمه اش کنم ولی دیدم که خیلی طولانیه و از حوصله جمع (خودم) خارجه. به همین علت میذارم به عهده کاربر علاقمند. مطلب خیلی خوبیه،
Working With a Content Management Framework: MODx
پی نوشت 1: من این معرفی رو واسه انجمن تک داونلود.آی آر نوشتم و چندجای دیگه بصورت کپی/پیست و بدون هیچ منبعی مشاهده کردم که تو هم هرجا بدون اسم من (AHHP یا امیرحسین) دیدی، کامنت بذار، بزن تو گوشش که دیگه منبع و نویسنده یادش نره! ;)
پی نوشت 2: برای استفاده نسخه Evolution بصورت فارسی، بخوانید: MODx Evolution کاملا راستچین


Google Chrome

تو چی فکر می کنی؟