Sélectionnez votre langue

Joomla est un CMS magnifiquement mûri, et les Joomlers à long terme pourraient sciemment hocher la tête, quand je dis que c'était parfois un parcours cahoteux. Jetez un œil à cet article 'Celebrating Joomla 4 ' pour avoir une idée des nouvelles fonctionnalités de Joomla 4.

Si vous êtes (relativement) nouveau sur Joomla, il est probable que votre site Web utilise un modèle compatible avec Joomla 4 (ou au moins votre développeur de modèles fournit une version entièrement compatible J4 du modèle). Alors vous avez de la chance et cet article ne vous concerne pas. Mais que se passe-t-il si votre site Web fonctionne depuis des années et que vous envisagez une migration de Joomla 3 vers Joomla 4 ?

Avant de vous décider, vous devez répondre à un certain nombre de questions et au nouveau Pre-Update-Checker dans Joomla 3.10 ( https://magazine.joomla.org/all-issues/august/pre-update-check-your-path- to-joomla-4 ) vous aide beaucoup avec ces questions. Dans cet article, je me concentre sur l'une de ces questions spécifiques : comment gérer votre modèle d'interface Joomla 3 actuel ?

Vos choix

Comme toujours dans la vie, vous avez le choix entre plusieurs chemins :

  1. Vous pouvez profiter de l'occasion pour abandonner votre ancien modèle et embrasser pleinement l'avenir. Je suis sûr qu'au moment où vous lirez ceci, il y aura beaucoup de modèles disponibles pour Joomla 4.
  2. Vous souhaitez également utiliser votre modèle actuel sur votre nouveau site Web Joomla 4. Dans ce cas, encore une fois, vous avez deux choix possibles :
    1. Votre développeur de modèle fournit une version mise à jour de votre modèle, compatible avec Joomla 4.
    2. Il n'y a pas de version mise à jour de votre modèle

Scénario 2.b : aucune version mise à jour disponible

Nous examinons le scénario 2.b, car tous les autres scénarios sont simples à résoudre (avec votre développeur de modèles). Un avertissement en amont : cela va être plutôt pratique et technique (vous devez changer des choses dans la base de données et dans le code PHP de votre modèle), donc si vous n'êtes pas familier avec le code ou les bases de données, vous voudrez peut-être obtenir une aide professionnelle. Assurez-vous d'avoir une sauvegarde vers laquelle revenir lorsque les choses tournent mal, et si vous ne savez pas comment faire cela, ayez une personne de réserve qui peut vous aider.

Préparation

Créez un nouveau site de test Joomla 4 , afin de ne pas casser votre site actuel, qui devrait toujours être sur Joomla 3.10. Utilisez le même préfixe de table de base de données que pour votre site J3.

Activez le « Débogage » de Joomla, consultez cet article de blog pour savoir comment procéder : https://www.joomdev.com/blog/entry/how-to-enable-debug-and-error-reporting

Copiez le répertoire '/templates/YOURTEMPLATE/' de votre site J3 vers votre site de test J4

Sauvegardez la base de données complète de votre site Web J3 dans un fichier local sur votre ordinateur, consultez la documentation pour savoir comment procéder (faites défiler jusqu'à la partie intitulée « Sauvegarde de la base de données » : https://docs.joomla.org/Backup_Basics_for_a_Joomla!_Web_Site

Préparer l'insertion des enregistrements de la base de données

Vous devez insérer DEUX enregistrements de base de données de votre base de données J3 dans votre base de données J4-Test, et vous devez apporter quelques petites modifications à ces deux enregistrements :

  • Ouvrez votre fichier téléchargé dans un éditeur comme le Bloc-notes ou un éditeur de code. Trouvez le '#__extensions'table de base de données (où '#__' représente le préfixe de votre table de base de données).

  • Recherchez la partie 'INSERT INTO #__extensions', avec la ligne de données YOURTEMPLATE - elle ressemblera à celle ci-dessous - et copiez-la dans un bloc-notes ou un fichier d'éditeur de code vide : d'abord la partie de INSERT INTO à VALUES, puis la partie qui s'applique à votre modèle.

Voici à quoi devrait ressembler la première partie :

INSERT INTO `#__extensions` (`extension_id`, `package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES

Voici à quoi devrait ressembler la deuxième partie :

(10007, 0, 'YOURTEMPLATE', 'template', 'YOURTEMPLATE', '', 0, 1, 1, 0, '{\"name\":\"YOURTEMPLATE\",\"type\":\" template\",\"creationDate\":\"01.01.2000\",……………..,\"filename\":\"templateDetails\"}', '{\"template_width\":\" 1400\",\"body_color\":\"#ffffff\",…………….,\"bottom_modules_switch\":\"1\",\"base_modules_switch\":\"1\"}', '', '', 0, '0000-00-00 00:00:00', 0, 0);

L'idée est de coller les deux parties l'une en dessous de l'autre afin d'avoir une seule déclaration ; la première partie contient des informations sur l'emplacement de stockage des données et la seconde partie sur les données à stocker.

IMPORTANT : Joomla 4 n'a plus le ' system_data champ ' dans cette table, vous devez donc le supprimer de votre instruction INSERT - nous l'avons marqué (à la fois le FIELD NAME et la EMPTY VALUE) ici en jaune dans l'exemple. Assurez-vous également de retirer les COLON respectifs .

  • Recherchez la de '#__template_styles' table de base données (où '#__' représente le préfixe de votre table de base de données actuelle.

  • Recherchez la partie "INSERT INTO #__template_styles", avec la ligne de données YOURTEMPLATE - elle ressemblera à celle ci-dessous - et copiez-la dans un bloc-notes ou un fichier d'éditeur de code vide, comme vous l'avez fait à l'étape précédente.

Voici à quoi devrait ressembler la première partie :

INSERT INTO `#__template_styles` (`id`, `template`, `client_id`, `home`, `title`, `params`, `inheritable`, `parent`) VALUES

Voici à quoi devrait ressembler la deuxième partie :

(9, 'YOURTEMPLATE', 0, '1', 'YOURTEMPLATE - Standard', '{\"template_width\":\"1200\",………….. "base_modules_switch\":\"0\"}', 0, '');

L'idée est de coller les deux parties l'une en dessous de l'autre afin d'avoir une seule déclaration ; la première partie contient des informations sur l'emplacement de stockage des données et la seconde partie sur les données à stocker.

Vous avez maintenant deux instructions INSERT.

  • Soumettez maintenant ces deux lignes INSERT INTO avec phpMyAdmin dans votre base de données Joomla 4-Test.

Utilisez votre modèle sur le site J4-Test

Connectez-vous au backend Joomla, allez dans 'Système' -> 'Styles de modèles de site'

Assurez-vous que SEUL votre modèle est sélectionné comme "Par défaut". Vous devrez peut-être désélectionner le modèle Cassiopée pour y parvenir.

Créez du contenu pour votre site de test J4, comme quelques articles et une structure de menu ressemblant à votre site Web actuel. Cela devrait vous permettre de trouver les problèmes les plus courants dans votre modèle.

MAINTENANT, vous êtes prêt à résoudre tous les problèmes que Joomla 4 pourrait avoir avec votre modèle ! Nous énumérons les problèmes les plus courants et la façon de les résoudre dans la partie suivante… mais vous pourriez rencontrer d'autres problèmes, alors veuillez commenter ci-dessous toutes vos découvertes.

Plugins/frameworks supplémentaires pour votre modèle

Votre modèle peut avoir besoin d'éléments supplémentaires (en dehors du répertoire "templates/YOURTEMPLATE") tels que des bibliothèques ou des plugins. Vous le remarquez si les messages d'erreur que vous voyez ne se réfèrent pas à votre répertoire de modèles, mais à un autre endroit.

Fondamentalement, les étapes pour J4-ifier ces éléments sont similaires à celles de votre modèle

  • copier les répertoires respectifs de votre site J3 vers votre site de test J4
  • recherchez et INSÉREZ les enregistrements de base de données respectifs dans la de '#__extensions' table de base données (aucune autre table de base de données n'est probablement nécessaire)
  • résolvez les problèmes que vous rencontrez de la même manière que vous le faites pour votre modèle (voir les chapitres suivants)

Cadre de comportement introuvable

Cadre de comportement introuvable

Pour corriger cette erreur, regardez dans la « Pile d'appels » la première occurrence de « VOTRE MODÈLE » (quel que soit le nom que vous avez donné à votre modèle bien sûr). Dans notre exemple, il s'agit de « index.php » dans votre répertoire de modèles, et l'erreur se produit à la ligne 12 de ce fichier. Ouvrez ce fichier dans un éditeur de texte brut. Sur la ligne 12, vous trouverez quelque chose comme :

JHtml::_('behavior.framework', true);

Vous pouvez corriger cette erreur de la manière suivante en 'ignorant' cette ligne :

/*** JHtml::_('behavior.framework', true); ***/

Impossible d'accéder à la propriété protégée …. ::$params

Impossible d'accéder à la propriété protégée

Pour corriger cette erreur, regardez la ligne de la ' Call Stack '. Dans notre exemple, il s'agit de « class.menu.php » dans un plugin système appelé « STOOLS » (qui est nécessaire pour le modèle dans notre exemple), et l'erreur se produit à la ligne 65 de ce fichier. Ouvrez ce fichier dans un éditeur de texte brut. Sur la ligne 65, vous trouverez quelque chose comme :

… xyz->params ….

Vous pouvez corriger cette erreur en appelant la fonction 'getParams()' au lieu de la propriété 'params' :

… xyz->getParams()

Classe JSite introuvable

Classe JSite introuvable

Pour corriger cette erreur, regardez la ligne de la ' Call Stack '. Dans notre exemple, il s'agit de « class.menu.php » dans un plugin système appelé « STOOLS » (qui est nécessaire pour le modèle dans notre exemple), et l'erreur se produit à la ligne 170 de ce fichier. Ouvrez ce fichier dans un éditeur de texte brut. Sur la ligne 170, vous trouverez quelque chose comme :

… $router = JSite::getRouter();

Vous pouvez corriger cette erreur en renommant la partie 'JSite' en 'JApplicationSite' :

… $router = JApplicationSite::getRouter();

Appel à la méthode non définie isSite / isAdmin

Call to undefined method Joomla\CMS\Application\SiteApplication::isSite()

Call to undefined method Joomla\CMS\Application\SiteApplication::isAdmin()

Appel à la méthode non définie isAdmin

Pour corriger cette erreur, regardez la ligne de la ' Call Stack '. Dans notre exemple, il s'agit de «  system.php  » dans un cadre de modèle appelé «  WARP  » (qui est nécessaire pour le modèle dans notre exemple), et l'erreur se produit à la ligne 86 de ce fichier. Ouvrez ce fichier dans un éditeur de texte brut. Sur la ligne 86, vous trouverez quelque chose comme : :

… estSite()

… IsAdmin ()

Vous pouvez corriger cette erreur en renommant la partie 'isWhichone()' en 'isClient( ' whichone ' )' :

… isClient('site')

… estClient('administrateur')

Propriété non définie : stdClass::$catslug

Propriété non définie : stdClass catslug

Pour corriger cette erreur, ouvrez le fichier référencé dans le message d'erreur dans un éditeur de texte brut. Sur la ligne référencée dans le message d'erreur, vous trouverez quelque chose comme :

$this->item->catslug…

Vous pouvez corriger cette erreur en renommant la partie 'catslug' en 'catid' :

$this->item->catid…

Copiez vos modifications sur votre site Joomla 3

Une fois que vous êtes suffisamment convaincu que tous les problèmes de Joomla 4 sont résolus dans votre site de test J4, vous pouvez transférer toutes les modifications vers votre vrai site Web.

  1. mettez votre site Web J3 en mode maintenance, voyez ici comment procéder : https://docs.joomla.org/Taking_the_website_temporarily_offline
  2. Assurez-vous que toutes les autres extensions sont compatibles avec Joomla 4 en vérifiant le vérificateur de pré-mise à jour.
  3. IMPORTANT : effectuez une autre sauvegarde complète de votre site Web Joomla 3 ! Les prochaines étapes que vous prendrez pourraient casser votre site (bien que vous ayez bien sûr vérifié vos extensions, mais mieux vaut prévenir que guérir) !
  4. Copiez le répertoire '/templates/YOURTEMPLATE/' de votre site de test J4 vers votre site J3.
  5. Vérifiez votre site Web (puisque vous êtes en mode maintenance, vous devez d'abord vous connecter) pour vous assurer que tout fonctionne correctement. Si non, alors
    trouvez le problème et vous devrez peut-être annuler la modification que vous avez apportée (et ne la refaire que plus tard, lorsque vous migrerez réellement vers Joomla 4).
  6. Basculer le mode maintenance sur OFF

Encore un autre avertissement ici : si votre site Web dépend fortement d'extensions tierces (comme les boutiques en ligne, la réservation d'événements, les outils communautaires et ainsi de suite), votre modèle peut avoir des problèmes similaires en relation avec ces extensions. Gardez donc une trace de ce que vous avez dû modifier dans le modèle, afin d'apporter des modifications similaires à votre modèle concernant ces extensions tierces, une fois que vous avez migré vers Joomla 4.

Vous pouvez maintenant répondre « OUI, probablement » à la question : votre modèle est-il prêt pour Joomla 4 ?

Conclusion

Si votre site Web Joomla est opérationnel depuis plusieurs années maintenant, il est probable que votre modèle actuel ne sera pas compatible avec Joomla 4. Si vous décidez de conserver votre modèle et devez résoudre manuellement les problèmes à venir, j'ai fourni ici des solutions pour un certain nombre de problèmes courants que vous pourriez avoir.

Il peut y avoir un nombre important de problèmes pour Joomla 4 avec votre ancien modèle Joomla 3, mais je pense qu'avec cet article et les compétences de développeur de logiciels pertinentes à votre disposition, la plupart d'entre eux devraient être résolus. En effet, cela nécessitera des ressources, et vous devez vous demander si l'effort est justifié, ou mieux vaut embrasser l'avenir et utiliser un modèle J4 moderne tout de suite.

Une fois que tout sur votre site Web semble prêt pour Joomla 4, vous pouvez planifier la migration réelle de votre site Web vers Joomla 4. Mais en règle générale, vous devez prévoir suffisamment de temps pour résoudre tout autre problème qui pourrait survenir sur votre nouveau site Web Joomla 4 - cette migration est bien plus qu'une simple mise à jour (par exemple de Joomla 3.10.1 vers 3.10.2).

Autres ressources

La plupart des solutions ici ont été trouvées par « recherche Google instruite », mais le blog sur les problèmes de compatibilité descendante de Joomla 4 est également une bonne source :

https://docs.joomla.org/Potential_backward_compatibility_issues_in_Joomla_4

Partagez votre expérience avec nous!

Veuillez également partager vos propres modèle J4ification expériences de avec nous pour améliorer cet article et aider les autres dans leurs défis.

Aucun commentaire