آموزش تبدیل کامپوننت جوملا 2.5 به جوملا 3


                      آموزش تبدیل کامپوننت جوملا 2.5 به جوملا 3

آموزش تبدیل کامپوننت جوملا 2.5 به جوملا 3

show_chart 1526
date_range 05-آذر-1397
person_outline امیررضا تهرانی
folder_open وبلاگ

 
همان طور که می دانید در حال حاضر جوملا 3 به مرحله stable بودن خود رسیده است و جوملا جهانی بعد از انتشار این نسخه دیگر از نسخه های قبلی پشتیبانی نخواهد کرد. به مرور زمان دیگر تقاضاها از نسخه های قدیمی جوملا مانند 1.5 یا 1.7 یا 2.5 کمتر می شود. پس همگی باید یک جورایی به جوملا 3 مهاجرت کنیم.
از این رو در این آموزش می خواهیم تا حدالامکان تفاوت بین فریمورک نسخه ی قدیمی جوملا با آخرین نسخه را با هم بیاموزیم تا شما برنامه نویسان قادر باشید یک افزونه جوملا 2.5 را به جوملا 3 تبدیل کنید.

ابتدا توجه کنید که این آموزش صد در صد به تمامی تغییرات ایجاد شده نمی پردازد زیرا که از خیلی از موارد جوملا استفاده نشده است.

تغییرات عمومی :

1 : همان طور که می دانید در جوملا 3 از تکنولوژی BootStrap استفاده شده تا گرافیکی بهتر نسبت به نسخه های قبلی داشته باشد.
2 : جوملا نسخه نیاز به نسخه PHP 5.3.1 دارد
3 : register_globals در سرور باید خاموش باشد
4 : magic_quotes_gpc در سرور باید خاموش باشد
5 : دیگر از DS در آدرس دهی ها استفاده نکنید زیرا که حذف شده است. بجای ان از / یا DIRECTORY_SEPARATOR استفاده کنید
6 : برای نام گزاری ماژول ها دیگر از "mod_" استفاده نمی شود.(به اول نام نباید اضافه شود)
7 : در تکنولوژی پلت فرم MVC بجای


{code lang:php showtitle:false lines:true hidden:false}JModel, JView, , JController{/code}

باید از


{code lang:php lines:true hidden:false}JModelLegacy, JViewLegacy , JControllerLegacy{/code}

استفاده کنید

تغییرات در فایل XML (نصاب) افزونه :

1 : دیگر از کد <install> برای شروع فایل استفاده نکنید. باید بجای ان از <extension> استفاده کنید (مانند جوملا 2.5)
2 : جوملا دیگر از


{code lang:php lines:true hidden:false}install_script
uninstall_script
com_install
com_uninstall{/code}

جهت نصب و حذف پشتیبانی نمی کند باید از


{code lang:php lines:true hidden:false}scriptfile{/code}

بجای آنها استفاده کنید

تغییرات در رویداد پلاگین ها :

1 : رویداد onContentBeforeSave دیگر پارامتر $article را توسط یک مقدار دریافت می کند نه بصورت مرجع. مثال :


{code lang:php lines:true hidden:false}public function onContentBeforeSave($context, $article, $isNew){/code}

2 : رویداد onContentAfterSave دیگر پارامتر $article را توسط یک مقدار دریافت می کند نه بصورت مرجع. مثال :


{code lang:php lines:true hidden:false}public function onContentAfterSave($context, $article, $isNew){/code}

تغییرات در نام class :

1 : کلاس JFTP زین پس به JClientFtp تغییر نام داده است
2 : کلاس JLDAP زین پس به JClientLdap تغییر نام داده است
3 : کلاس JWebClient زین پس به JApplicationWebClient تغییر نام داده است

class های حذف شده :

1 : JParameter (بجای آن از JForm استفاده کنید یا در بیشتر اوضاع می توانید از JRegistry برای گرفتن اطلاعات مانند "گرفتن پارامترها از پلاگین یا کامپوننت ها" استفاده کنید)
2 : JElement و تمامی زیر کلاس های آن
3 : JFormFieldEditors (بجای آن می توانید از JFormFieldPlugins استفاده کنید)
4 : JHtmlImage
5 : JRules (بجای آن می توانید از JAccessRules استفاده کنید)
6 : JSimpleXML
7 : JPane

تغییرات در class ها :

کلاس های


{code lang:php lines:true hidden:false}JFactory::getXMLParser()
JFactory::_createConfig()
JFactory::_createSession()
JFactory::_createDbo()
JFactory::_createMailer()
JFactory::_createDocument(){/code}

حذف شده اند و بجای آنها باید به ترتیب بالا از

 
{code lang:php lines:true hidden:false}JFactory::getFeedParser()
JFactory::createConfig()
JFactory::createSession()
JFactory::createDbo()
JFactory::createMailer()
JFactory::createDocument(){/code}

استفاده کنید.
برای خواندن فایل های XML و STRINGS از


{code lang:php lines:true hidden:false}JFactory::getXML(){/code}

استفاده کنید

Application :

موارد زیر حذف شده اند و جایگزینی برای آنها وجود ندارد


{code lang:php lines:true hidden:false}JApplicationHelper::getPath()
JApplicationHelper::_checkPath(){/code}



MVC :
JController

1 : موارد زیر حذف شدند :


{code lang:php lines:true hidden:false}JController::$_acoSection ==>
JController::$_acoSectionValue ==> Removed
JController::authorize() ==> JController::authorise()
JController::setAccessControl() ==> JAccess
JController::getInstance() ==> JControllerLegacy::getInstance(){/code}



(دقت کنید سمت چپ علامت فلش گزینه قدیمی و سمت راست ان مورد جایگزین شده می باشد)

JControllerLegacy :

متد


{code lang:php lines:true hidden:false}JControllerLegacy::display(){/code}

یک پارامتر اضافی باید برای اجرا بگیرد


{code lang:php lines:true hidden:false}($cachable = false, $urlparams = false){/code}

JObject :

متد


{code lang:php lines:true hidden:false}JObject::toString(){/code}

حذف شده است و باید از متد زیر استفاده کنید :


{code lang:php lines:true hidden:false}JObject::__toString(){/code}

JBrowser :


{code lang:php lines:true hidden:false}JBrowser::setQuirk() ==>
JBrowser::hasQuirk() ==> Removed
JBrowser::getQuirk() ==> Removed
JBrowser::setFeature() ==> Removed
JBrowser::hasFeature() ==> Removed
JBrowser::getFeature() ==> Removed
JBrowser::$_majorVersion ==> JBrowser::$majorVersion
JBrowser::$_minorVersion ==> JBrowser::$minorVersion
JBrowser::$_browser ==> JBrowser::$browser
JBrowser::$_agent ==> JBrowser::$agent
JBrowser::$_lowerAgent ==> JBrowser::$lowerAgent
JBrowser::$_accept ==> JBrowser::$accept
JBrowser::$_accept_parsed ==> JBrowser::$acceptParsed
JBrowser::$_platform ==> JBrowser::$platform
JBrowser::$_robots ==> JBrowser::$robots
JBrowser::$_mobile ==> JBrowser::$mobile
JBrowser::$_images ==> JBrowser::$images{/code}



(دقت کنید سمت چپ علامت فلش گزینه قدیمی و سمت راست ان مورد جایگزین شده می باشد)

JRequest :

متدهای زیر تغییراتی در خود داشتند :


{code lang:php lines:true hidden:false}JRequest::clean() ==> Removed
JRequest::_cleanVar() ==> protected
JRequest::getCmd() ==> JFactory::getApplication()->input->get()
JRequest::getVar() ==> JFactory::getApplication()->input->get()
JRequest::checkToken() ==> JSession::checkToken(){/code}



JUri :

متدهای زیر تغییراتی را خود داشتند :


{code lang:php lines:true hidden:false}JURI ==> JUri


هنوز قابلیت تشخیص نام قدیم خود را دارد


JUri::$_uri ==> JUri::$uri
JUri::$_scheme ==> JUri::$scheme
JUri::$_host ==> JUri::$host
JUri::$_port ==> JUri::$port
JUri::$_user ==> JUri::$user
JUri::$_pass ==> JUri::$pass
JUri::$_path ==> JUri::$path
JUri::$_query ==> JUri::$query
JUri::$_fragment ==> JUri::$fragment
JUri::$_vars ==> JUri::$vars{/code}



JHtml :

متدهای زیر تغییراتی در خود داشتند :


{code lang:php lines:true hidden:false}JHTML ==> JHtml


هنوز قابلیت تشخیص نام قبلی خود را دارد


JHtml::_includeRelativeFiles() ==> JHtml::includeRelativeFiles()
JHtml::core() ==> JHtmlBehavior::framework()
JHtml::script() ==> در پارامتر دوم خود دیگر یک رشته نمی پذیرد
JHtml::stylesheet() ==> در پارامتر دوم خود دیگر یک رشته نمی پذیرد{/code}



JHtmlBehavior :

متدهای زیر تغییراتی در خود داشتند :


{code lang:php lines:true hidden:false}JHtmlBehavior::mootools() ==> JHtmlBehavior::framework()
JHtmlBehavior::noframes() ==> آرگومان $location دیگر استفاده نمی شود{/code}



JToolBar :

JToolBar دیگر از تابع های 'X' پشتیبانی نمی کند (addNewX, editListX)

دوستان به چند مورد توجه کنند :
1 : این تغییرات بعضا از جوملا 1.5 به 2.5 و 3 هم بوده است. همه موارد از جوملا 2.5 به 3 نبود
2 : در فرصت های بعدی این اموزش تکمیل خواهد شد

به امید آنکه کمکی به جامع طراحی وبسایت کشور باشد
با تشکر
مدیریت پیامک ایرانیان

طراحی سایت : رایان نگار پارس

پیامک ایرانیان | ارسال | تبلیغات | پنل پیامک