1 | Create: site/src/Controller/DisplayController.php | Le contrôleur MVC par défaut pour la partie site. |
2 | Create: site/src/View/Hello/HtmlView.php | L'objet de vue MVC pour la nouvelle page "Hello" (site). |
3 | Create: site/tmpl/hello/default.php | Le template pour la nouvelle page "Hello" (site). |
4 | Update: helloworld.xml | Vous devez ajouter les nouveaux fichiers au manifeste du composant. |
Détail des fichiers
`site/src/Controller/DisplayController.php`
Le contrôleur MVC par défaut dans la partie site. Nous avons un code de base ici pour récupérer et afficher une vue, mais comme précédemment, nous déléguons principalement à la classe parente de Joomla!. Comme il s'agit d'une classe PHP, elle se trouve sous votre espace de noms PHP racine src/, dans l'espace de noms Controller.
<?php
namespace JohnSmith\Component\HelloWorld\Site\View\Hello;
defined('_JEXEC') or die;
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
/**
* @package Joomla.Site
* @subpackage com_helloworld
*
* @copyright Copyright (C) 2020 John Smith. All rights reserved.
* @license GNU General Public License version 3; see LICENSE
*/
/**
* View for the user identity validation form
*/
class HtmlView extends BaseHtmlView {
/**
* Display the view
*
* @param string $template The name of the layout file to parse.
* @return void
*/
public function display($template = null) {
// Call the parent display to display the layout file
parent::display($template);
}
}
site/src/View/Hello/HtmlView.php
La vue MVC pour cette page "Hello World". Comme précédemment, ce fichier se contente de déléguer à l'objet parent pour nous lancer. Comme il s'agit d'une classe PHP, elle se trouve sous src/, dans l'espace de noms View/Hello qui correspond au nom de la vue.
<?php
namespace JohnSmith\Component\HelloWorld\Site\View\Hello;
defined('_JEXEC') or die;
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
/**
* @package Joomla.Site
* @subpackage com_helloworld
*
* @copyright Copyright (C) 2020 John Smith. All rights reserved.
* @license GNU General Public License version 3; see LICENSE
*/
/**
* View for the user identity validation form
*/
class HtmlView extends BaseHtmlView {
/**
* Display the view
*
* @param string $template The name of the layout file to parse.
* @return void
*/
public function display($template = null) {
// Call the parent display to display the layout file
parent::display($template);
}
}
site/tmpl/hello/default.php
Le modèle de page pour notre page "Hello World" dans la partie site. Il est identique au modèle que nous avons utilisé dans la partie administrateur, pour nous lancer. En tant que modèle, il se trouve sous /tmpl dans un dossier qui correspond au nom de la vue.
<?php
/**
* @package Joomla.Administrator
* @subpackage com_helloworld
*
* @copyright Copyright (C) 2020 John Smith. All rights reserved.
* @license GNU General Public License version 3; see LICENSE
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted Access');
?>
<h2>Hello world!</h2>
helloworld.xml
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="4.0" method="upgrade">
<name>Hello World</name>
<!-- The following elements are optional and free of formatting constraints -->
<creationDate>December 2020</creationDate>
<!-- Dummy author, feel free to replace anywhere you see it-->
<author>John Smith</author>
<authorUrl>https://smith.ca</authorUrl>
<copyright>John Smith</copyright>
<license>GPL v3</license>
<!-- The version string is recorded in the components table -->
<version>0.0.2</version>
<!-- The description is optional and defaults to the name -->
<description>
A hello world component!
</description>
<!-- This is the PHP namespace under which the extension's
code is organised. It should follow this format:
Vendor\Component\ComponentName
"Vendor" can be your company or your own name
The "ComponentName" section MUST match the name used
everywhere else for your component. Whatever the name of
this XML file is, the namespace must match (ignoring CamelCase).
-->
<namespace path="src/">JohnSmith\Component\HelloWorld</namespace>
<files folder="site/">
<folder>src</folder>
<folder>tmpl</folder>
</files>
<administration>
<!-- The link that will appear in the Admin panel's "Components" menu -->
<menu link="index.php?option=com_helloworld">Hello World</menu>
<!-- List of files and folders to copy, and where to copy them -->
<files folder="admin/">
<folder>services</folder>
<folder>src</folder>
<folder>tmpl</folder>
</files>
</administration>
</extension>
Mettre à jour l'extension :
Pour tester les modifications apportées à votre extension, suivez ces étapes et installez la nouvelle version :
1. **Créer une archive ZIP :**
Zippez le dossier `com_helloworld` contenant vos modifications. Assurez-vous que l'archive contient les fichiers mis à jour ainsi que le manifeste avec le numéro de version modifié.
2. **Installer la nouvelle version :**
- Ouvrez votre navigateur et accédez au panneau d'administration de votre site Joomla! à l'adresse <votre-joomla>/administrator/. Par exemple : http://localhost/joomla/administrator/.
- Dans le menu de gauche, cliquez sur "System" (Système).
- Sur la carte "Install" (Installer), cliquez sur "Extensions".
- Sur l'onglet "Upload Package File" (Télécharger le fichier du package), sélectionnez le fichier .zip que vous venez de créer.
3. **Vérifier l'installation :**
- Une fois que votre nouvelle version du composant est installée, cliquez à nouveau sur le lien "System" (Système) dans le menu principal.
- Sélectionnez "Extensions" sur la carte "Manage" (Gérer) cette fois-ci.
- Une liste des extensions Joomla! installées devrait apparaître. Tapez "hello" dans la barre de recherche en haut à droite et appuyez sur Entrée.
- Vous devriez voir votre extension "Hello World" répertoriée, maintenant en version 0.0.2.
4. **Tester l'extension :**
- Assurez-vous de tester les fonctionnalités de votre extension pour confirmer que les modifications ont été correctement prises en compte.
- Vérifiez également que la nouvelle version s'affiche correctement dans la liste des extensions installées.
En suivant ces étapes, vous devriez pouvoir installer et tester la nouvelle version de votre extension Joomla! avec les modifications apportées.
Tester la nouvelle page
La nouvelle page n'a pas encore de lien dans le menu (nous l'ajouterons dans le prochain article), donc pour la tester, nous devrons utiliser une URL directe. Allez à <votre-joomla>/index.php?option=com_helloworld&view=hello (pas à l'intérieur du chemin /administrator), et vous devriez voir apparaître votre nouvelle page "Hello World" sur le site.