وردپرس یا جوملا؟!!

جوملا و وردپرس: مباحث مدلهای ذهنی
سیستم های مدیریت محتوای منابع باز (CMS)، خانواده ی بزرگی از برنامه های کاربردی وب است،
اما اگر ما به دنبال ثبات، عملکرد و الزامات فنی متوسط هستیم، تعداد بی شماری از گزینه ها را خواهیم داشت. در گذشته، انتخاب CMS های مناسب با توجه به نیازهای پروژه ی مرتبط انجام می شد، اما در حال حاضر انتخاب به این گونه نیست زیرا که الگوی توسعه پذیری ، پیشرفت و توسعه ی CMS ها را به سمت مدلی از ویژگی های هسته ای برده است که قابل تعمیم با پلاگین هایی هستند که تقریبا می توانند هر نیازی را برآورده کنند.
انتخاب یک CMS مناسب به نوعی یک موضوع “مدل های ذهنی” است: انتخاب یک مدل که بتواند به بهترین وجه ممکن با چشم انداز مورد نظر ما متناسب باشد که چگونه یک برنامه کاربردی وب باید کار کند و چه چیزی را باید به کاربران و مدیران ارائه دهد. ما در این مقاله، تفاوت عمده میان مدل های ذهنی وردپرس و جوملا را برای تم گذاشتن و گسترش هسته ای آنها آشکار خواهیم کرد.
اندیشه های پس زمینه
وردپرس و جوملا دو تا از محبوب ترین CMS های منابع باز موجود هستند. آنها جامعه ی بزرگ و فعالی از توسعه دهندگان و مستند سازی بسیار عالی را ارائه می دهند. وردپرس عمدتا به دلیل طراحی خوب back end و تعداد گسترده ای از تم های بسیار عالی در میان جامعه طراحان اولین انتخاب است.
در همین اثنا، جوملا، از میراث مامبو، که برای عملکرد کم و خروجی معنایی نادرست بدنام بود(مانند جداول تو در تو برای طرحبندی صفحات وب) رنج می برد. اما از زمان انتشار نسخه ۱٫۵، جوملا دارای هسته کاملا بازنویسی شده، با بهبود وضعیت توسعه پذیری و خروجی HTML بهتر، شد.
یکی از تفاوت های بین وردپرس و جوملا، مدل تم گذاری آنها است.اگر یک وب سایت نویس ابتدا از جوملا و سپس از وردپرس استفاده کند، ممکن است احساس کند که دومی بیش از حد به برنامه نویسی تم نیاز دارد، در حالی که یک وب سایت نویس که ابتدا از وردپرس و سپس از جوملا استفاده کرده است، ممکن است احساس کند که جوملا کمتر انعطاف پذیر و قابل تنظیم است. این امر به دلیل اختلف مدل تم های CMS درآنها است.
مدل تم گذاری وردپرس
مدل تم گذاری وردپرس بر اساس یک ساختار per-view است. این به این معنی است که در هر تم، می توانید فایل مشاهده ی جداگانه ایی برای لیست پست ها داشته باسید،یک پست تک و صفحات آرشیو. این فایل ها مستقل از یکدیگر هستند، که به برنامه نویس ها اجازه می دهد که هر ویو را کاستومایز کنند اما برای تکرار کردن بخش های زیادی از کد به تم نیاز دارند. تنها بخش های مشترک در یک تم سربرگ ها و پاورقی ها هستند، است که به هر حال می تواند به طور مستقیم در ویوهای جداگانه کدگذاری شود.
اشکال اصلی این مدل این است که ویوهای متفاوت همیشه به ارائه های(presentation) مختلف نیاز ندارند(به عنوان مثال، آرشیو، لیست دسته بندی و لیست تگ فقط لیست هستند). برای غلبه بر این مشکل، یک تم در ساختار سلسله مراتبی، که در آن ویوهای عمومی بیشتریس به عنوانfallback برای موارد خاص استفاده می شود، سازمان یافته است. مجدد مشترک برای یک تم وردپرس فایل index.php است، که در واقع تنها فایل مورد نیاز(همراه با یک style sheet) در یک تم است. منیع کامل و نمودار تصویری از ساختار سلسله مراتبی یک تم وردپرس در اینجا در دسترس است.
تگ های حلقه ای و قالبی
برای درک بهتر چگونگی کار کردن یک تم وردپرس، نیاز است که نگاه دقیق تری به تگ های حلقه ای و قالبی داشته باشیم. همه داده ها برای یک پست یا لیستی از پست ها از طریق یک حلقه استخراج شده است. یک حلقه اساسا یک سازه while است که با این بیانیه آغاز می شود:
1
2
3
4
5
|
<?php if (have_posts()) : while (have_posts()) : the_post(); ?> // post output here <?php endif ; endwhile ; ?> |
مهم ترین بخش از این کد the_post()است. که یک هدف جهانی$post PHP که حاوی همه ی اطلاعات صفحه است. ساختار حلقه نیز برای ویو تک پست مورد نیاز است ، زیرا تمام توابع برای ارائه داده ها به حضور هدف $post تکیه می کنند. این توابع تگ قالب نامیده می شوند، و هدف اصلی آنها خروج کردن داده های فرمت شده است. معمولا، آنها تگ های HTML خارج می کنند به طوری که می توان آنها را در حالات مختلف استفاده کرد.
راهنمای کامل برای ساخت و توسعه تم در اینجا در دسترس است.
مدل مبتنی بر محتوای جوملا
جوملا یک رویکرد کاملا متفاوت برای تم گذاری دارد. قالب های جوملا بر روی یک ساختار مشترک تعریف شده در یک فایل index.php ساخته شده اند.
این پرونده حاوی هر دو محتوای استاتیک و تگ های قالب است که به عنوان نکهدارنده ی جای محتوا(به عنوان مثال محتوایی که در سراسر وب سایت مشترک است) خدمت می کنند و با خروجی هایHTML در مرحله ی رندر کردن صفحه جایگزین شده اند.
فرم مشترک برای یک تگ قالب در زیر آمده است:
1
|
<jdoc: include type= "modules" name= "right" style= "xhtml" /> |
تفاوت تگ های قالب در نوع محتوایی است که ارائه می دهند: جزء، پیام، گنجایش، سر
این ستون فقرات ساختاری بر ابن امر دلالت دارد که هر ویو در خروجی CMS یک صفحه کامل نیست بلکه فقط که به ارائه ی محتوا کمک می کند. در نگاه اول، یک وب سایت نویس که از مدل تم گذاری وردپرس استفاده می کند ممکن است فکر کند که هیچ راهی برای کاستومایز کردن این واحد محتوا وجود ندارد. در واقع، جوملا متکی بر الگوی معماری MVC است، به این معنی که استخراج داده ها و ارائه ی آنها از هم جدا هستند، دومی توسط بخش ویو نرم افزار ترجمه شده است.
سفارشی کردن قالب
برای کاستومایز ویوی پیش فرض، جوملا الگویی به نام قالب باطل کننده دارد، که سیستم از طریق آن پوشه قالب را برای فایل ویوی کاستوم که به جای فایل پیش فرض استفاده می شود، اسکن می کند. تصویر زیر ساختار پوشه و قرارداد نامگذاری ویوی پیش فرض و باطل کردن آن را نشان می دهد.
باطل کننده های جوملا یک راه عالی برای سفارشی کردن قالب یک وب سایت بدون هک هستند. با این حال، آنها اغلب نادیده گرفته می شوند و پشتیبانی جوملا از توسعه ی میراث، این الگو را حتی برای بسته های محبوبی مانند Virtuemart، غیر قابل استفاده می کند(که از سیستم قالب ساخته شده ی آن استفاده می کند).
مرجع کامل برای سیستم قالب جوملا در اینجا در دسترس است.
فراتر از هسته
در چند سال گذشته، پلاگین یک تفاوت بزرگ در صنعت نرم افزار بوجود آورده است، یکی از قابل توجه ترین نمونه های آنها موزیلا فایرفاکس است.
همانطور اشاره کردیم، CMS های مدرن در حال به گونه ای ساخته شده اند که قابل توسعه باشند، و به ما این اجازه را می دهد که از هسته به عنوان ستون فقرات استفاده کنیم و بوسیله ی آ ن قطعات تخصصی بسازیم. این طراحی های مدولار نتیجه شده از این قابلیت به دلایل بسیاری یک مدل توسعه یافته ی موثر است:
• نگهداری بهتر
وب سایت نویسان نیازی به تغییر هسته به منظور اضافه و یا کاستومایز کردن قابلیت ها ندارند.
• بسیار سبک وزن و امن تر
تنها ویژگی های که مورد نیاز است را شامل می شوند، و در نتیجه حافظه کمتری مصرف می کنند و پایه ی کد کوچکتر و آسیب پذیری کمتر است.
• چرخه توسعه جداگانه برای هسته و ویژگی ها
با ارائه یکAPI پسوند، در حالی که تیم مرکزی بر عملکرد و قابلیت اطمینان بودن سیستم متمرکز است وب سایت نویسان شخص سوم می توانند ویژگی های جدید به آن اضافه کنند.
با پروژه های منابع باز، آخرین نکته بالا، هم برکت است و هم لعنت. این مدل می تواند از تلاش های مشترک برای توسعه ی بیشتر سود ببرد، اما منجر به کار تایید نشده و گردش کار کمتر سازمان یافته می شود.
جوملا و وردپرس با ارائه دستورالعمل های برنامه نویسی برای غلبه بر این نفرین تلاش کرده اند. با این حال، تلاش کمی صرف مستند سازی طراحی UI ی back-end وfront-end شده است.
گذشته از قراردادهای مختلف نامگذاری در آنها، مدل های توسعه ی وردپرس و جوملا به ویسله ی میانگین توسعه ی API، در نحوه تعامل کد شخص ثالث با هسته متفاوت شده است.
نکته کلیدی برای درک این موضوع این است که: در حالیکه جوملا بر اساس الگوی MVC است، وردپرس متکی بر یک سیستم event-like است به ظوری که پسوند می توان را قلاب کرد. اجازه دهید به بعضی جزئیات نگاه داشته باشیم.
روش قلاب کردن در وردپرس
مدل الحاقات وردپرس بر اساس اجرای یک سری از توابع با استفاده از اتصال به جریان سیستم به معنی “قلاب” است. قلاب حاوی فهرستی از توابع است که به نقاط مختلف در حالیکه وردپرس در حال اجرا است، چسبیده اند. آنها داده های پایگاه اطلاعات را دستکاری(در مورد قلاب های فیلتر)و خارج می کنند (در مورد قلاب های اقدام کننده) و می توانند از درون خود تم واز یک بسته ی پلاگین تخصصی قابل دسترسی باشند.
وردپرس فاقد مستندات جامع برای قلاب است، اما یک لیست از قلاب ها در اینجا در دسترس قرار دارد.
برای درک مدل ذهنی در پشت سیستم قلاب وردپرس، می توانیم آن را با پخت یک کیک مقایسه کنیم. در ابتدا، ما یک ایده از نوع کیکی که می خواهیم بپزیم داریم، بنابراین مواد تشکیل دهنده آن را تهیه می کنیم. نمی توانیم فقط همه چیز را در هم بریزیم و آن را بپزیم. بنابراین، یک سری از اقدامات منظم را اجرای می کنیم، مثل شکستن (فیلتر کردن) پوسته تخم مرغ و مخلوط کردن تخم مرغ با آرد و شکر.همانطور که در حال انجام این کار هستیم، ممکن است بخواهیم دستور پخت را سفارشی کنیم. بنابراین، مقداری شکلات اضافه می کنیم (پلاگین) و شاید ماده دیگری را به نصف کاهش دهیم. نتیجه یک کیک خوب است، که از خلاقیت و موادی تشکیل شده که از هم گسسته بودند.
وردپرس صفحات خود را به همین شیوه می پزد.
نوار ابزارها و ابزارک ها
در حالی که پلاگین ها به طور گسترده ب قلاب ارتباط دارند، یک ویجت (widget) نوع خاصی از پلاگین است. این برنامه یک ابزار برای نشان دادن اطلاعات در نوار ابزار تم است. مزیت اصلی ویجت ها این است که آنها در خط اتصال back-end قابل تنظیم هستند، که حتی به کاربران تازه کار هم امکان سفارشی سازی سریع را می دهند. از لحاظ توسعه تم، نوار ابزار در مدل ذهنی خود به تگ های قالب جوملا شبیه است. نوار ابزار جای نگهداری چیزی است. کمی گمراه کننده است که یک نوار ابزار حتما لازم نیست که در نوار کناری یک طرح بندی قرار داده شود. می تواند در بالا و پایین صفحه، سربرگ یا هر جای دیگری قرار داده شود.
برای کسب اطلاعات بیشتر در مورد API های جدید برای توسعه ویجت، نگاهی به اسناد رسمی داشته باشید.
اضافه کردن قابلیت ها
تا به حال، مشکل پسوندAPI وردپرس این بود که به شما هیچ راه ساده ای برای اضافه کردن قابلیت های پیچیده نمی داد، مانند یک کارت تجارت الکترونیک و یا یک لیست از رویدادهای مختلف. اکثر توسعه دهندگان، این ضعف را با اشاره به این که وردپرس یک موتور وبلاگ نویسی است، بخشیده اند. امیدوارم که با انتشار وردپرس ۳٫۰ و سیستم آن برای “انواع پست”، که امکان استفاده از خط اتصال ” پست “و” صفحه “را برای انواع مختلف محتوا ممکن کرده است، این مشکل حل شود.
همانند دیگرCMS های محبوب (مانند Drupal)، تابع انواع پست ها به عنوان یک نوع ” کیت محتوا ساز”، به شما توانایی هوشمندانه ی اضافه کردن، مدیریت و ارائه مطالب تخصصی را می دهد. اگر شما علاقه مند به کار با این ویژگی جدید هستید، در اینجا یک آموزش خوب برای شما وجود دارد.
به غیر از انواع پست (و تا زمان که پشتیبانی برای بروز رسانی پلاگین های عمده ی این ویژگی)، تنها راه عملی برای اضافه کردن قابلیت های پیچیده، استفاده از صفحات موجود به عنوان ظروف حمل کننده (به نام “کد کوتاه”) است، این امر با قرار دادن یک جا نگهدار در بدنه که با یک خروجی HTML توسط قلاب های فیلتر مخصوض جایگزین شده اند امکان پذیر است.
این رویکرد توسط پلاگین هایی مانند Buddypress و WP e-Commerce ، که موتورهای وبلاگ ها را با شبکه های اجتماعی و قابلیت کارتهای خرید گسترش دادند.
یکی دیگر از نمونه های بزرگ عالی اجرای کدهای کوتاه Contact Form 7 است، که یک کانتکت فرم پلاگین مدیریتی کاملا برجسته است.
توسعه جوملا
یک جنبه از جوملا که اغلب نادیده گرفته شده است ساخته شده آن در چارچوب جامد MVC است. بنابراین، گسترش هسته ی آن واقعا بسیار شبیه به کار کردن با محصولاتی مانند چارچوب Zend و CodeIgniter است، که به شما یک رابط back-end از قبل طراحی شده را که بر اساس آن می توانید به ادغام گسترش های خود بپردازید ارائه می دهد.
این رویکرد همچنین به طراحان توانایی استفاده از قالب های باطل کننده را حتی برای گسترش های شخص ثالث، می دهد.
برای درک بهتر MVC و چگونگی کار آن در جوملا، در اینجا یک مرجع کامل برای شما وجود دارد.
انواع گسترش های جوملا
مدل توسعه جوملا در سه طعم می آید، هر یک با وظایف مختلف: اجزاء، ماژول ها و پلاگین ها.
قطعات هسته را با اضافه کردن قابلیت های خاص، مانند کارت های تجارت الکترونیک، لیست رویدادها و انجمن ها، گسترش می دهند. از نقطه نظر کاربرها، ما می توانیم اجزا را نه متصل به دیگر محتواها بلکه به عنوان بخش های مجزا از یک وب سایت ببینیم. یک مثال محبوب، JEvents، یک تقویم رویدادها است.
در سیستم تم، خروجی یک جزء جایگزین جا نگهدار جزء در فایل index.php قالب می شود:
1
|
<jdoc: include type= "component" /> |
ماژول ها در وردپرس مانند ویدجت هستند: آنها اطلاعات جزء را نشان می دهند، که از پایگاه داده ها استخراج شده است. آنها قابل پیوست به موقعیت ماژول هستند و می تواند بر روی همه ی صفحات یک وب سایت قرار داده شوند.
ماژول ها در ابتدا به عنوان بلوک های تیزر در نظر گرفته شده بودند، اما آنها می توانند متن های کامل و گالری های تصویری را ترکیب کنند، که آنها را برای بخش های استاتیک یک طرح بندی از قبیل یادداشت های پایین صفحه، سودمند می کند. آنها همچنین برای نشان دادن مطالب مرتبط در یک صفحه مفید هستند. برای مثال، شما می توانید محصولات جالب را برای وب سایت نویسان در حالی که آتها در حال بازدید لیست رخدادهای barcamp هستند، برجسته کنید.
تگ قالب، که به عنوان جا نگهدارنده ماژول عمل می کند، به این شکل به نظر می رسد:
1
|
<jdoc: include type= "modules" name= "right" style= "xhtml" /> |
پلاگین شبیه به سیستم قلاب در وردپرس کار می کند، زیرا آنها به روخدادهای سیستم خاص برای فرمت، دستکاری و جایگزین کردن خروجی HTML متصل می شوند.
زمینه های احتمالی از محدوده عملکرد از محتوای مقاله گرفته تا فیلتر کردن HTML و گسترش پروفایل کاربر.
پلاگین های جوملا که به طورمعمول استفاده می شود عبارتند از: URL بازنویسی فیلترها، که به همراه اجزای اجرایی مانند Sh404SEF می آیند.
مسائل مرتبط با سازگاری
چیزی که هر توسعه دهنده باید آگاه باشند این است که، با وجود تلاش برای ارائه گسترش خوب API، جوملا ۱٫۵ هنوز هم در پشتیبانی خود را از گسترش میراث(ساخته شده برای (V1.0 رنج می برد ، که ساختارMVC ندارد و گاهی اوقات به سختی قابل سفارشی کردن است. علاوه بر این، آنها مدل ذهنیAPI را شکستند.
کتابخانه ضمیمه های جوملا نشانه های روشنی برای گسترش محلی ۱٫۰ یا۱٫۵ دارد. اما جعل کردن سازگاری محلی ۱٫۵ آسان است، که چیزی به جز کد میراث را برای توسعه دهندگان باقی نمی گذارد. این روش حتی در پروژه های بزرگ شناخته شده ای مانند Virtuemart دنبال شده است.
امیدوارم وقتی که نسخه ی ۱٫۶جوملا منتشر شده و پشتیبانی از میراث از قلم افتاد، هر توسعه دهنده دوباره روی کد هایشان به تناسب خصوصیات CMS کار خواهند کرد.
قدم بعدی چیست؟
در حالی که بهترین راه برای انتخاب یک CMS با امتحان کردن آن بر روی یک پروژه واقعی امکان پذیر است، درک مدل ذهنی اساسی آن باعث می شود که توسعه دهندگان کمتر احساس سر در گمی در کدها داشته و بیشتر از الگوهای طراحی که باید دنبال کنند آگاه باشند.
اگر شما می خواهید برای جوملا و وردپرس تم و ضمیمه طراحی کنید، در اینجا برخی از منابع آمده است:
وردپرس:
- How to Create a WordPress Theme from Scratch
- How to Write a WordPress Plugin: a complete reference on WordPress plugins development.
- Top 10 Most Common Coding Mistakes in WordPress Plugins: a must read for WordPress developers.
- WordPress 3.0 new features
- 8 Useful Code Snippets To Get Started With WordPress 3.0
جوملا:
- Joomla Developer’s Toolbox: a collection of resources for Joomla users and developers by Smashing Magazine.
- Creating a Basic Joomla! Template
- Developing a Model-View-Controller Component: a step-by-step tutorial on components development in Joomla.
- Creating a Hello World Module for Joomla 1.5: official documentation on Joomla modules development.
- Joomla Component Creator: a smart wizard for creating a “starter” component structure.
- Joomla 1.6 Updates: this article explains the primary objectives of the upcoming Joomla 1.6
منبع : همیار وردپرس
مطالب زیر را حتما بخوانید:
قوانین ارسال دیدگاه در سایت
- چنانچه دیدگاهی توهین آمیز باشد و متوجه اشخاص مدیر، نویسندگان و سایر کاربران باشد تایید نخواهد شد.
- چنانچه دیدگاه شما جنبه ی تبلیغاتی داشته باشد تایید نخواهد شد.
- چنانچه از لینک سایر وبسایت ها و یا وبسایت خود در دیدگاه استفاده کرده باشید تایید نخواهد شد.
- چنانچه در دیدگاه خود از شماره تماس، ایمیل و آیدی تلگرام استفاده کرده باشید تایید نخواهد شد.
- چنانچه دیدگاهی بی ارتباط با موضوع آموزش مطرح شود تایید نخواهد شد.
نظرات کاربران