Qu'est-ce qu'une structure squelette de base/minimale sur laquelle construire un composant sans étendre les classes Joomla MVC? Le squelette doit installer et désinstaller, ne générer aucune erreur et être pratiquement utilisable comme point de départ du développement. Les sous-questions comprennent: quels changements de J4 peuvent affecter un tel squelette? & quelles caractéristiques perd-on, par ex. modèle remplace.
Avertissement: Vous ne devez pas adopter une telle approche à moins de savoir ce que vous faites. Cette approche est particulièrement mal adaptée aux applications conçues pour la distribution. Si vous êtes débutant, il est préférable de suivre le didacticiel des composants dans la documentation, puis d’utiliser le créateur de composants ou une autre approche pour accélérer le développement et suivre les meilleures pratiques, etc.
Voici ma suggestion que j'installerais en utilisant discovery.
=============================================== =
Description: Bien que cela fonctionne pour inclure le manifeste dans le frontend, s’il n’existe pas de structure de fichier d’administration, cela provoque des erreurs lors de la désinstallation, aussi j’y inclue un fichier index.html dans le seul but de le garder en bonne compagnie.
Emplacement: /administator/components/com_minimal/minimal.xml
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.7.0" method="upgrade">
<name>Minimal</name>
<version>0.0.1</version>
<description>Testing Only</description>
<author>Minimal</author>
<creationDate>Dec 2017</creationDate>
<files folder="site">
<filename>minimal.php</filename>
<filename>router.php</filename>
<folder>views</folder>
</files>
<administration>
<files folder="admin">
<filename>index.html</filename>
</files>
</administration>
</extension>
=============================================== =
Emplacement: /components/com_minimal/minimal.php
Description: récupère jusqu’à 5 segments d’URL sur le routeur. On injectera probablement ce que vous voulez de joomla dans votre propre code ici
<?php
defined('_JEXEC') or die;
$max_segments = 5;
$jinput = JFactory::getApplication()->input;
$segments = [];
for($i=0;$i<$max_segments;$i++){
$segments[] = $jinput->get('segment'.$i,'','CMD');
}
// load your own custom php application here
echo "<pre>" . print_r($segments,1) . "</pre>";
=============================================== =
Emplacement: /components/com_minimal/router.php
Description: divise les segments d'URL en variables d'entrée à partir de l'élément de menu de base du composant, c.-à-d./menu-item/{segment0}/{segment1} etc. La méthode de construction doit exister, mais n'est pas utilisée.
<?php
Class MinimalRouter extends JComponentRouterBase
{
public function build(&$query)
{
return;
}
public function parse(&$segments)
{
$vars = [];
foreach($segments as $i => $s){
$vars['segment' . $i] = $s;
}
return $vars;
}
}
=============================================== =
Emplacement: /components/com_minimal/views/minimal/tmpl/default.xml
Description: fournit un type d'élément de menu pour pointer vers le composant.
<?xml version="1.0" encoding="utf-8"?>
<metadata><fields name="params"></fields></metadata>