J'étais sur celui-ci depuis très longtemps et j'ai promis à Don qu'une fois que j'aurais fini, je donnerais plus de détails à ce sujet.
Je devais remplacer Joomla MVC pour les composants et dire à Joomla de rechercher également les remplacements dans mon dossier html de plugin, pas seulement dans le dossier html du modèle.
Ce que je n'ai jamais aimé, c'est quand les développeurs prennent réellement la classe par défaut de Joomla et jouent avec, donc je préfère étendre cette classe si je le peux, au lieu de freiner quelque chose.
Mon processus suit.
- Obtenez la classe dont j'ai besoin
- Lisez-le, remplacez le nom de la classe, créez un nouveau fichier dans mon dossier de classe temporaire
- Charger ma version de la classe
- Charger la classe Joomla
- Enregistrer ma méthode extend qui étend la fonction loadTemplate pour rechercher la substitution dans mon plugin, que le modèle joomla et le dernier composant joomla
voici l'image plutôt
http://prntscr.com/3d9syq
Les premières parties de l'extrait ci-dessous vérifient où se trouve l'utilisateur, s'il est sur le point de mettre à jour Joomla, je supprime les fichiers de classe temporaire qui ont été créés pour s'assurer que nous en obtenons de nouveaux lorsque la mise à jour est terminée, ce qui prend en charge le numéro JackJoe. 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);