جدال وردپرس و جوملا

جدال وردپرس و جوملا

جدال وردپرس و جوملا

جوملا و وردپرس : مباحث مدل های ذهنی

خانواده ی بزرگی از برنامه های کاربردی وب، سیستم های مدیریت محتوای منابع باز (cms) است. ولی ما اگر به دنبال ثبات، الزمات فنی متوسط و عملکرد هستیم، مقدار زیادی از گزینه ها را خواهیم داشت. انتخاب cms های مناسب در گذشته، با توجه به نیازهای پروژه ی مرتبط با آن انجام میشد. ولی انتخاب در حال حاضر به این صورت نیست. چون الگوی توسعه پذیری، پیشرفت و توسعه ی CMS ها را به سوی مدلی از ویژگی های هسته ای برده است که با افزونه هایی قابل تعمیم است که می توانند تقریبا هر نیازی را برآورده سازند.

انتخاب CMS مناسب به نوعی یک موضوع مدلهای ذهنی است : انتخاب کردن مدلی که بتواند به بهترین شکل ممکن متناسب با چشم انداز مورد نظر ما باشد که به چه صورت باید یک برنامه کاربردی وب کار کند به مدیران و کاربران چه چیزی باید ارائه دهد. در این مطلب ، ما تفاوت عمده بین مدلهای ذهنی وردپرس و جوملا را برای تم گذاشتن و گسترش دادن هسته شان آشکار خواهیم کرد

اندیشه های پس زمینه

دو تا از محبوب ترین CMS های منابع باز در دنیا وردپرس و جوملا به حساب می آیند. جامعه فعال و بزرگی از توسعه دهنده ها و مستند سازی بسیار عالی را ارائه می دهند.به دلیل طراحی خوب BACK END و تعداد گسترده ای از تم های بسیار عالی وردپرس در میان جامعه طراحان وب اولین انتخاب است.
از جمله تفاوتهای میان وردپرس و جوملا، مدل تم گذاری آن هاست. اگر وب سایت نویسی اول از جوملا و بعد از وردپرس استفاده کند، امکان دارد حس کند که دومی به برنامه نویسی تم بیش از حد نیازمند است. این در حالی است که وب سایت نویسی که اول از وردپرس و بعد از جوملا استفاده کرده است، امکان دارد حس کند که جوملا کم تر قابل تنظیم و انعطاف پذیر است. این امر به دلیل اختلاف مدل تم های CMS آن هاست.

مدل تم گذاری وردپرس

 

مدل تم گذاری وردپرس بر اساس یک ساختار per-view می باشد. یعنی در هر تم می توانید برای لیست پست ها فایل مشاهده ی جداگانه ای داشته باشید. صفحات آرشیو و یک پست تک، این فایلها از یکدیگر مستقل هستند که این اجازه را به برنامه نویس می دهند که هر ویو را سفارشی سازی کنند. ولی برای تکرار قسمت های زیادی از کد به تم نیاز دارند. فقط بخش سربرگ ها و پاورقی هاست که در یک تم مشترک هستند. که درهر حال می تواند به صورت مستقیم در ویوهای جداگانه کدگذاری بشود.
اشکال عمده این مدل این است که ویو های مختلف همواره به ارائه های گوناگون نیازمندند ( مثلا آرشیو، لیست دسته بندی و لیست تگ تنها لیست هستند ) .به منظور غلبه کردن بر این مشکل، یک تم در ساختار سلسله مراتبی، که در آن ویوهای عمومی بیشتر به عنوان FALLBACK برای موارد خاص استفاده می شوند، سازمان یافته است. برای یک تم وردپرس مجدد مشترک، فایل INDEX.PHP می باشد، که تنها فایل مورد نیاز (همراه با style sheet) در یک تم است منبع کامل و نمودار تصویری از ساختار سلسله مراتبی یک تم وردپرس در این مکان در دسترس است.

تگ های حلقه ای و قالبی

برای درک چگونه کار کردن تم وردپرس، نیاز نی باشد که به تگ های حلقه ای و قالبی نگاه دقیق تری داشته باشیم. همه داده ها برای پستی و یا یک لیست از پست ها از طریق یک حلقه استخراج شده اند. یک حلقه عمدتا یک سازه while است که با این بیانیه آغاز می گردد :

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
 
// post output here
 
<?php endif; endwhile; ?>

 

در این کد مهترین قسمت the_post() است . که هدفی جهانی post PHP$ که شامل همه اطلاعات صفحه می باشد. ساختار حلقه نیز برای ویو تک پست مورد نیاز است. چون همه توابع برای ارائه تکیه به حضور هدف post$ می کنند. به این توابع تگ قالب می گوییم. و خارج کردن داده های فرمت شده، هدف اصلی آن است. به طور معمول آنها تگ های HTML خارج میکنند به صورتی که آن ها را می توان در حالت های مختلف استفاده نمود. برای ساخت و توسعه تم راهنمای کامل در دسترس است.

مدل مبتنی بر محتوای جوملا

جوملا رویکردی کاملا متفاوت برای تم گذاری دارد. قالب های آن بر روی ساختار مشترکی تعریف شده و در یک فایل index.php ایجاد شده اند.
این پرونده شامل هر دو محتوای استاتیک و تگ های قالب است که به عنوان نگه دارنده جای محتوا ( مثلا محتوایی که در سراسر وب سایت مشترک است ) خدمت می نمایند و با در مرحله رندر کردن صفحه با خروجی های HTML جای گزین شده اند.
برای یک تگ قالب، فرم مشترک در ذیل آمده است:

<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 وردپرس مشکلش این بود که هیچ راه ساده ای را برای اضافه نمودن قابلیت های پیچیده به شما نمی داد. مثل یک کارت تجارت الکترونیک و یا لیستی از رویدادهای گوناگون، بیشتر توسعه دهندگان، با اشاره به اینکه وردپرس یک موتور وبلاگ نویسی است، بخشیده اند. امیدواریم با منتشر شدن وردپرس ۳.۰ و سیستم آن برای انواع پست ، که استفاده از خط اتصال پست و صفحه را ممکن می سازد برای انواع گوناگون محتوا ممکن نموده است، این مشکل حل بشود.

مثل CMS های محبوب دیگر مانند Drupal ، تابع انواع پست ها به عنوان نوعی ” کیت محتوا ساز ” توانایی هوشمندانه ی اضافه کردن، مدیریت و ارائه مطالب تخصصی را به شما می دهد.اگر شما به کار با این ویژگی جدید امیدوارید، برای تان آموزش خوبی در اینجا وجود دارد.

به غیر از انواع پست ( و تا زمان پشتیبانی رای به روز رسانی افزونه های عمده این ویژگی ) برای اضافه کردن قابلیت های پیچیده، تنها راه عملی استفاده از صفحات موجود به عنوان ظروف حمل کننده ( به اسم ” کد کوتاه” )می باشد. با قرار دادن یک جا نگه دار در بدنه که با یک خروجی HTML توسط قلاب های فیلتر مخصوص جایگزین شده است، این کار امکان پذیر است.

توسط افزونه هایی مثل Buddypress و WP e-Commerce ، موتورهای وبلاگ را با شبکه های اجتماعی و قابلیت کارت های خرید توسط این رویکرد گسترش یافت.
از دیگر نمونه های بزرگ عالی اجرای کدهای کوتاه، Contact form 7 است که یک کانتکت فرم پلاگین مدیریتی می باشد که کاملا برجسته است.

توسعه جوملا

جنبه ای از جوملا که معمولا در نظر گرفته نمی شود ساخته شدنش در چارچوب جامد MVC است. پس، هسته آن در واقع خیلی به کارکردن با محصولاتی مانند چارچوب Zend و CodeIgniter شبیه است. که به شما یک رابط back-end از قبل طراحی شده را که براساس آن می توانید به اغدام گسترش های خود بپردازید ارائه می دهد.

همچنین این رویکرد توانایی استفاده از قالب های باطل کننده را حتی برای گسترش های شخص ثالث به طراحان می دهد. برای درک بهتر Mvc و چگونگی کارش در جوملا در اینجا مرجع کاملی برای تان موجود است.

انواع گسترش های جوملا

در سه طعم مدل توسعه جوملا می آید. هر کدام با وظایف متفاوت : اجزاء ، ماژول ها و پلاگین ها.
با اضافه نمودن قطعات خاص، قطعات هسته را مثل کارتهای تجارت الکترونیک ، لیست رویداد ها و انجمن ها، گسترش می دهند. از نقطه نظر کاربرها، اجزا را می توانیم نه متصل به محتواهای دیگر بلکه به عنوان بخش های مجزا از یک وب سایت ببینیم. یک نمونه محبوب ، Jevents، یک تقویم رویدادهاست.
در سیستم تم، خروجی یک جزء جای گزین جانگهدار جزء در فایل index.php قالب می شود :

<jdoc:include type="component" />

 

در وردپرس ماژول های مثل ویجت هستند : آن ها اطلاعات جزیی را نشان می دهند که از پایگاه داده ها استخراج شده است. آن ها به موقعیت ماژول قابل پیوست هستند و بر روی همه ی صفحات یک وب سایت می تواند قرار داده شود
در ابتدا ماژول ها به عنوان بلوک های تیزر در نظر گرفته شده بودند. ولی متن های کامل و گالری های تصویری را می توانند ترکیب کنند که برای بخش های استاتیک یک طرح بندی از قبیل یادداشت های پایین صفحه از قبیل یادداشت ها ، آن ها را سودمند میکند. همچنین آنها برای نشان دادن مطلب های مرتیط در یک صفحه مفید می باشند. مثلا ، می توانید شما محصولات جالب را برای وب سایت نویسان برجسته نمایید، در حالی که آن ها در حال بازدید لیست رخداد های barcamp هستند.
تگ قالب، که به عنوان جانگه دارنده ماژول عمل می کند به این شکل است :

<jdoc:include type="modules" name="right" style="xhtml" />

پلاگین مانند سیستم قلاب در وردپرس عمل می کند چون آن ها به رویدادهای سیستم خاص برای فرمت، دست کاری و جایگذین کردن خروجی HTML متصل می شوند.
زمینه های احتمالی از محدوده عملکرد از محتوای مقاله گرفته تا فیلتر کردن HTML و گسترش پروفایل کاربر.
افزونه های جوملا که به طور معمول استفاده می شوند عبارت اند از : URL بازنویسی فیلترها ، که به همراه اجزای اجرایی مثل Sh404SEF می آیند.

مسائل مرتبط با سازگاری

چیزی که هر توسعه دهنده باید آگاه باشد این است که با وجود تلاش برای ارائه گسترش خوب API ، جوملا ۱.۵ هنوز هم در پشتیبانی خود از گسترش میراث ساخته شده برای ورژن ۱ رنج می برد که ساختار MVC ندارد و گاهی به سختی قابل سفارشی کردن است. همچنین آن ها مدل ذهنی API را شکستند.
کتابخانه ضمیمه های جوملا برای گسترش محلی ۱.۰ یا ۱.۵ نشانه های روشنی ندارد. ولی جعل نمودن سازگاری محلی ۱.۵ آسان است که به جز کد میراث برای توسعه دهندگان چیز دیگری را باقی نمیگذارد. ین شیوه حتی در مورد پروژه های بزرگ شناخته شده ای مثل Virtuemart دنبال شده است.
امیدواریم که هنگامی نسخه ۱.۶ جوملا انتشار یافت و پشتیبانی از میراث از قلم افتاد، هر توسعه دهنده دوباره روی کدهای شان به تناسب خصوصیات CMS کار خواهند کرد.

گام بعدی چیست ؟

در حالی که بهترین شیوه برای انتخاب یک CMS با امتحان نمودن آن بر روی یک پروژه واقعی امکان پذیر است،درک مدل ذهنی اساسی آن موجب می شود که توسعه دهندگان احساس سردرگمی کمتری در کدها داشته باشند و از الگوهای طراحی که باید دنبال کنند، بیشتر آگاه باشند.
اگر شما می خواهید برای جوملا و وردپرس تم و ضمیمه طراحی کنید برخی منابع در این جا آمده است :

جوملا:

مطالب مرتبط

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *