Çok uzun zamandır bunun üzerindeydim ve Don'a bir kez işim bittiğinde daha fazla ayrıntı vereceğine söz verdim.
Ben bileşenler için Joomla MVC geçersiz kılmak ve Joomla sadece şablon html klasör içinde değil, benim eklenti html klasöründe geçersiz kılmalar aramak için söyle gerekiyordu.
Ne sevmedim ne aslında geliştiriciler Joomla varsayılan sınıf almak ve onunla karışıklık, bu yüzden ben bir şey frenlemek yerine, eğer ben bu sınıfı genişletmek.
Sürecim takip ediyor.
- Geçersiz kılmam gereken sınıfı al
- Oku, sınıf adını değiştir, temp sınıf klasörümde yeni dosya oluştur
- Sınıf sürümümü yükle
- Joomla sınıfını yükle
- Eklentimde geçersiz kılmayı aramak için loadTemplate işlevini genişleten ve joomla şablonu ve son joomla bileşeninden daha fazla genişletme yöntemimi kaydettirin
görüntü oldukça
http://prntscr.com/3d9syq
Aşağıdaki snippet'teki ilk bölümler kullanıcının nerede olduğunu kontrol ediyor, eğer Joomla'yı güncellemek üzereyse, güncelleme tamamlandığında JackJoe numarası ile ilgilenenlerden daha yeni olduklarından emin olmak için oluşturulan geçici sınıf dosyalarını siliyorum 2.
if (($this->Input('option') == 'com_joomlaupdate' && $this->Input('task') == 'update.install') || ($this->Input('option') == 'com_joomlaupdate' && $this->Input('layout') == 'complete')) {
JFolder::delete(JPATH_SITE . '/plugins/system/yjsg/includes/yjsgcore/classes/extend/classes/');
JFolder::create(JPATH_SITE . '/plugins/system/yjsg/includes/yjsgcore/classes/extend/classes/');
$indexContent = '';
JFile::write(JPATH_SITE . '/plugins/system/yjsg/includes/yjsgcore/classes/extend/classes/index.html', $indexContent);
}
$YjsgJViewDefaultRead = JPATH_LIBRARIES . '/legacy/view/legacy.php';
$YjsgJViewDefaultFile = YJSGEXTEND . "classes" . YJDS . "Yjsg" . $isView . "Default" . $IsJversion . ".php";
//extend JView library class
if (!JFile::exists($YjsgJViewDefaultFile)) {
$YjsgJViewDefault = JFile::read($YjsgJViewDefaultRead);
$YjsgJViewDefault = str_replace('class ' . $isView, 'class Yjsg' . $isView . 'Default', $YjsgJViewDefault);
JFile::write($YjsgJViewDefaultFile, $YjsgJViewDefault);
}
require_once($YjsgJViewDefaultFile);
jimport('joomla.application.component.view');
JLoader::register($isView, YJSGEXTEND . $IsJversion . '/component/view.php', true);