این مطلب یکی از مقالات پرونده ویژه «سامانههای مدیریت محتوا» شماره 199 ماهنامه شبکه است. علاقهمندان میتوانند کل این پرونده ویژه را از روی سایت شبکه دانلود کنند.
تا به حال نام MDOX به گوشتان نخورده است؟
اگر تا قبل از این هرگز چیزی درباره MODX نشنیده بودید، فعلاً همینقدر بدانید این یک موتور قدرتمند و کارآمد قدیمی است که اغلب با جوملا و دروپال مقايسه میشود. بعضی حتی آن را با وردپرس مقايسه میکنند، اما نه مانند سیبی که از وسط دو نصف شده باشد. وردپرس یک ابزار حاضر و آماده است که توسط افراد غیرفنی استفاده میشود. در واقع، میتوان MODX را این گونه توصیف کرد: «بهترین سیستم مدیریت محتوایی كه شما هرگز از آن استفاده نکردهاید.» در حالت کلی ما MODX را یک فریمورک مخصوص توسعهدهندگان میدانیم که پروژههای خود را با آن میسازند، نه یک ابزار آماده برای ساخت وبسایت. MODX برای کاربرانی که مهارتی در زمینه PHP یا HTML ندارند، انتخاب مناسبی نیست. شاید بتوان MODX را بهعنوان یک CMF یا فریمورک مدیریت محتوا معرفی کرد.
بررسی دقیقتر
MODX مثل خیلی از فریمورکهای معروف توسط PHP ساخته شده است و میتوان آن را روی سرورهای معروف مثل Apache، IIS, Lighttpd و nginx اجرا کرد. پایگاه داده مورد استفاده آن نیز MySQL و از xPDO بهعنوان ORB (سرنام Object-Relational Bridge) استفاده میکند. xPDO مستقیم در PDO ساخته شده است و از یک سبک الگوی رکورد فعال برای دسترسی به پایگاه داده استفاده میکند. برای مثال میتوان آن را با Doctrine یا Propel مقايسه کرد. بخش مدیریت با قالبهای ExtJS، Smarty و API خود MODX ساخته شده است. بخش ویرایشی مدیریت، داشبوردها، منوها و سایر ویژگیها نیز مستقیم داخل رابط کاربری ساخته شدهاند. در بخش مدیریت شما کنترل کاملی روی چیزهایی که میخواهید کاربران به آن دسترسی داشته باشند خواهید داشت. امنیت یکی از برجستهترین قابلیتهای MODX است که طرفداران از آن تعریف میکنند، هرچند درک کامل آن به مهارتهای قابل توجهی نیاز دارد.
آموزش و مستندسازی
MODX با کتابها، ویدئوها و انجمنهای مربوط بهخوبی مستندسازی شده است. جالب اینجا است که خود این انجمنها نیز توسط MODX ساخته شدهاند و مطالب ارسالی در آنها قدمت 10 ساله دارد. MODX یک کانال Slack فعال نیز دارد که اعضای آن همیشه در دسترس هستند و بهسرعت به سؤالات شما پاسخ میدهند.
نصب
در حال حاضر MODX را تنها میتوان از طریق دانلود فایل ZIP و باز کردن آن روی فولدر وب شما نصب کرد. (شکل 1)
شکل 1
برای بهروزرسانیها هیچ بهروزرسان خودکاری برای بخش اصلی این محصول وجود ندارد. اما بخشی اضافی وجود دارد که کار بهروزرسانی را بهراحتی برای شما انجام میدهد. تمام اجزای فرعی دیگر را نیز میتوان از قسمت مدیریت بهروزرسانی کرد. این پروژه روی GitHub قرار دارد که همیشه شامل آخرین اسنپشاتهای این پروژه است. شما از این طریق هم میتوانید MODX را نصب کنید، اما دانلود آن از طریق وبسایت اصلی بهتر و معقولانهتر است.
چرا این محصول توصیه میشود؟
MODX چیزی فراتر از یک سیستم مدیریت محتوای قدرتمند است. بعد از نصب، شما یک قالب خالی خواهید داشت که میتوانید طراحی خود را با آن آغاز کنید. صدها گزینه قابل تنظیم برای تغییر طرح شما در اختیارتان قرار دارد. در MODX خبری از ویزارد، درگ کردن، تولیدکننده منو، تنظیمات قالب، ساختار سلسله مراتبی سیستم فایل عجیب و غریب یا عملگرهای جادویی برای انجام همه کارها وجود ندارد.
اگر شما هم بهدنبال نوعی سیستم مدیریت محتوا هستید که بتواند کار کدنویسی دستی سایت را برای شما انجام دهد، این CMS کار شما را بدون نیاز به یادگیری و دستکاری ساختارهای پیچیده قالبها ساده میکند. بعد از اینکه MODX را نصب میکنید، کدهای HTML خود را در یک قالب پایه پیست میکنید و کار تمام میشود. در واقع اگر شما عادت به کدنویسی دستی دارید، احتمالاً MODX بهترین CMS برای شما است. وقتی میخواهید وبسایتهای چندزبانه و چندکاربردی با محتوای مستقل و سفارشی برای مشتريان خود ایجاد کنید، باید به سراغ MODX برويد. این سیستم مدیریت محتوا تقريباً هر وظیفهای که شما بخواهید انجام میدهد. برای هر کار مشخصی که باید انجام دهید، به طور معمول چندین روش وجود دارد. از ساده تا پیچیده MODX همه آن را انجام میدهد. از آن برای ساخت API، انجمن، وبلاگ، سایتهای تجاری، صفحات تبلیغاتی و سایتهای چندرسانهای استفاده میشود. MODX میتواند زبانهای مختلف، مجوزهای امنیتی پیشرفته و سفارشیسازی مدیریت ورود کاربران را اداره کند.
ساخت یک صفحه وب
MODX از اجزا و عناصر جداگانه برای سرهم کردن یک صفحه وب استفاده میکند. اجزایی بهنام Templates, Snippets, Chunks,Template Variables و قالبهای اختصاصی که همگی Elements نامیده میشوند. (شکل 2) شما میتوانید از داخل این قالبها هر سیستم دادهای (مثل داده لاگین کاربر، داده صفحه جاری، متادیتا، تنظیمات سیستمی، متغیرهای قالب و نظاير آن) را با استفاده از تگها به دست آورید.
شکل 2
چرخه کار MODX شامل کدنویسی قالبهای HTML است و HTML قابل استفاده مجدد را در بخشی بهنام Chunks و عناصر PHP قابل استفاده مجدد را در بخشی بهنام Snippets نگهداری میکند. شما میتوانید تمام فیلدهای سفارشی مورد نیاز برای این قالب را نیز تنظیم کنید. سپس شما یک Resource را ایجاد و آن را به قالب الصاق میکنید.
یک Resource یا منبع یک اصطلاح پایه در نقطه پایانی است، این همان چیزی است که در URL دیده میشود. شما میتوانید این منابع صفحه را نامگذاری کنید، اما موارد استفاده از آنها خیلی بیشتر از اینها است. میتوانید نوع محتوای یک Resource را چیزی غیر از HTML، مثل PDF یا داده باینری تعریف کنید. هر Resource میتواند اشاره به یک فایل یا لینک خارج از صفحه داشته باشد و یا بهعنوان یک لینک نمادین با سایر محتوای موجود در سایت استفاده شود. یک Template یا قالب چهارچوب اطراف منابع شما را که نمایش داده میشود تشکیل میدهد. تمام منابع به یک قالب اختصاص داده میشوند. یک Chunk محتوای HTML یا جاوا اسکریپت قابل استفاده مجدد یا هرچیزی غیر از PHP است.
Snippet میتواند شامل PHP باشد. اینها به هسته MODX و تمام اشیا آن دسترسی دارند. یک Snippet میتواند یک Chunk را فراخوانی کند و برعکس آن نیز صادق است. الگوها هم میتوانند هر دو را فراخوانی کنند. یک Template Variable میتواند هر نوع داده سفارشی باشد که یک قالب ممکن است به آن نیاز داشته باشد. برای مثال، عادی است یک تلویزیون بهعنوان یک عکس سفارشی به یک صفحه تبلیغاتی اختصاص داده شود، اما هر Resource میتواند یک عکس متفاوت را برای نمایش توسط قالب در نظر بگیرد. اینها شبیه به Custom field در وردپرس هستند، اما توانایی آنها بیشتر است. شما با استفاده از بخش Categories میتوانید این عناصر را سازماندهی کنید.
نگاهی اجمالی به بخش مدیریت
بخش مدیریت توسط ExtJS ساخته شده است، به همین دلیل میتوانید از امکانات کشیدن و انداختن، سفارشیسازی فرم، جداول پویا، منوهای راست کلیک وغیره استفاده کنید. میتوانید از منابع راست کلیک برای گزینههای مختلفی مثل ویرایش سریع استفاده کنید که به شما اجازه میدهد منابع را در کادرهای شناور اصلاح کنید. یک قابلیت کاربردی دیگر مدیریت رسانه است که توسط آن میتوانید منابع چندرسانهای خود را راهاندازی و با امنیت کلی آنها را کنترل کنید. درنهایت میتوانید با لاگین کردن کاربران تنها فولدرهای خاصی را در اختیار آنها قرار دهید. (شکل 3)
شکل 3
زمینهها
(شکل 4) Context بخشی از متن و محتوا است که بازدیدکنندگان زمانی که وارد سایت میشوند مشاهده خواهند کرد. وقتی شما وارد بخش مدیریت میشوید، در واقع به بخشی از زمینه Mgr وارد شدهاید. زمینههای مختلف میتوانند منابع، مجوز دسترسی و زبان کاملاً متفاوتی داشته باشند. میتوان هر کانتکست را یک وبسایت کاملاً متفاوت در نظر گرفت. یک نوع استفاده رایج از کانتکست ساخت نوعی وبسایت «ویژه اعضا» در وبسایت اصلی برای کاربران تأیید صلاحیت شده است. تمام کاری که باید انجام دهید این است که به کاربران مهمان اجازه ندهيد به این کانتکست دسترسی داشته باشند. در حالت کلی، از کانتکست برای جداسازی نواحی مختلف سایت استفاده میشود. بعضی هم از آن برای تبدیل محتوا به زبانهای مختلف استفاده میکنند. این یکی از قابلیتهای قدرتمند و نسبتاً پنهان MODX است که خیلی از توسعهدهندگان توجهی به آن نمیکنند.
شکل 4
قالبها و تگها
MODX یک سیستم برچسب قالب داخلی دارد. هر برچسب با دو براکت شروع و خاتمه پیدا میکنند [[ ... ]]
در هر برچسب یک کاراکتر نشاندهنده این است که در حال فراخوانی یک Chunk یا منبع یا تنظیمات سیستمی وغیره هستید:
[[*...]]: یک ستاره فیلدهای منبع را بازمیگرداند. بهوسیله آن دادههای مشخصی از منبع جاری از قبیل عنوان صفحه یا حتی منابع اصلی مشخص میشوند.
[[++...]]: برای پیدا کردن تنظیمات سیستمی از قبیل site_url یا تنظیمات سفارشی که شما ایجاد کردهاید، مثل company_phone1 استفاده میشود.
[[+...]]: این یک placeholder است.
[[~##]]: یک URL به منبع توسط ID آن مثل [[~32]] تولید میکند.
[[...]] زمانی که از هیچ نمادی استفاده نمیشود، یک Snippet فراخوانی میشود.
[[%...]]: یک رشته زبان را استخراج میکند.
[[-...]]: برای نوشتن کامنت در MODX استفاده میشود.
[[!...]]: علامت تعجب به MODX میگوید خروجی تگ را ذخيره نکند، آن را با نمادهای قبلی استفاده کنید. اگر شما [[!$SomeChunk]] را فراخوانی کرده باشید، این خروجی بهجای دریافت از کش، هر بار پردازش میشود.
پارامترهای برچسب
برچسبها برای سفارشیسازی خروجی خود میتوانند از پارامتر و فیلتر استفاده کنند. برای مثال میتوانید به یک URL تولید شده خودکار تعدادی پارامتر مثل این اضافه کنید:
<a href=”[[~17? §ion=`food` &sort=`asc`]]”>Here</a>
همان طور که مشاهده میکنید ساختار دستوری استفاده از پارامترها شبیه به رشته کوئریهای عادی URL است. علامت سؤال بهمعنای شروع فهرستی از پارامترها است و هر پارامتر با & شروع میشود و این مقدار در براکتها قرار میگیرد.
خروجی کد بالا به این صورت خواهد بود:
<a href=”yourpage?section=food&sort=asc”>Here</a>
یک Snippet وقتی به همین شیوه فراخوانی میشود، میتواند داده بیشتری را دریافت کند:
[[!MyCustomSnippet? &input=`something tasty`]]
اینجا یک Snippet با نام MyCustomSnippet فراخوانی شده است که داده اضافی با نام input و مقدار something tasty به آن اختصاص داده شده است. در PHP شما یک متغیر خودکار بهنام $input دارید که میتوانید در این Snippet به آن دسترسی داشته باشید. برچسبها میتوانند در یکدیگر ادغام شوند. یک نمونه بسیار رایج به این شكل است:
<a href=”[[~[[*id]]]]”>Link to this page</a>
یک فیلد منبع [[*id]] در تگ لینک [[~#]] ادغام شده است. تگهای داخلی قبل از تگهای بیرونی پردازش میشوند.
یک مورد دیگر زمانی است که شما میخواهید یک HTML Chunk را فراخوانی و در بعضی دادههای دینامیک استخراج شده از یک Snippet پردازش کنید که چیزی شبیه به این است:
[[$AChunk? &data=`[[!GetTheData]]`]]
تگ Chunk مقدار data را به Chunk ارسال میکند، اما برای فهميدن اینکه این داده در واقع چیست از یک Snippet استفاده میکند.
فیلترهای خروجی
برچسبها علاوه بر پارامتر چیزهای دیگری هم با عنوان فیلترهای خروجی را قبول میکنند. فیلترها قبل از خروجی کد را پردازش میکنند. چند فیلتر را میتوان با هم استفاده کرد. سادهترين مثال در این مورد تغییر یک رشته است.
[[SomeSnippet:ucase]]
فیلتر با یک علامت دو نقطه آغاز میشود و باید قبل از پارامترهای شما قرار بگیرد. در زیر چند فیلتر زنجيرهای را مشاهده میکنید:
[[SomeSnippet:ucase:replace=`this==that`? ¶m1=`Go big`]]
در اینجا نتیجه Snippet به حروف بزرگ تبدیل میشود، سپس یک فیلتر بهنام replace تمام موارد پیدا شده this را به that تغییر میدهد. بعد از این فیلترها نیز پارامترها قرار میگیرند که طبق دستورالعمل با علامت سؤال شروع میشوند.
انواع مختلفی از فیلترهای پیشفرض در MODX گنجانده شده است. جالبتر از فیلترهای پیشفرض این است که میتوانید از Snippet بهعنوان فیلتر استفاده کنید. تمام کاری که باید انجام دهید این است که از نام Snippet خود مثل یک فیلتر استفاده کنید:
[[$CallingChunk:mySnippet]]
هرچه HTML بهوسیله کد CallingChunk ارسال کرده است، میتواند بهوسیله mySnippet شما دریافت و به PHP اختصاصی شما تغییر پیدا کند. مقدار $CallingChunk نیز بهوسیله متغیر $input در PHP شما قابل دسترسی است.
اگر مواردی که به آنها اشاره شد شما را قانع نمیکنند، نکات بسیار دیگری نیز وجود دارد که به آنها اشاره نکردیم: سلسله مراتب ساختیافته، اداره محتوای تکراری، دسترسی به پایگاه داده و ساخت جداول سفارشی. شما میتوانید محتوا را طبقهبندی کنید، روابط والد/ فرزند داشته باشید، محتوا را برای مقاصد امنیتی گروهبندی کنید و برای اعتبارسنجی دادههایی که احتمالاً کاربران وارد میکنند، پلاگین ایجاد کنید.
این قابلیتها به همین جا ختم نمیشود. میتوانید نوع محتوا و دادههای MIME را ویرایش کنید. وضعیت پسوند صفحه را مشخص کنید (اینکه از HTML استفاده میکنید یا خیر) و بهعنوان منبع رسانه خود از
Amazon S3 استفاده کنید. شما برای بخش ویرایشی سایت خود میتوانید از text/HTML خام پیشفرض یا ویرایشگرهایی مثل TinyMCE, CodeMirror یا ACE استفاده کنید. یک ویرایشگر برای Markdown نیز وجود دارد.
نقاط منفی
اساس کدنویسی در MODX قدیمی است و از استانداردهای مدرن PSR در آن استفاده نشده است و برای پکیج کردن از Composer استفاده نمیکند. سومین نسخه از این سکو که MODX 3 نام دارد قرار است بهسمت مدرن شدن برود. مشکل دوم استفاده از ExtJS است. با وجود اینکه این فریمورک ایدهآل است، اما مشکل اینجا است که MODX از نسخه قدیمی آن استفاده میکند. همچنین، بخش مدیریت در حال حاضر امکان بهروزرسانی ندارد. به نظر میرسد نسخههای بعدی بخش مدیریت اصلاً از ExtJS استفاده نخواهد کرد. تنها مشکل دیگری که ممکن است با آن برخورد کنید نوع پیکربندی سرور برای MODX است. در انجمن MODX نیز موضوعی با عنوان میزبانهای مناسب برای MODX در جریان است که در این مورد شما را راهنمايی میکند.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟