web-dev-qa-db-fra.com

Structure minimale / de base pour un composant Joomla frontal sans utiliser Joomla MVC

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.

1
jamesgarrett

Voici ma suggestion que j'installerais en utilisant discovery.

  • N'inclut aucun contrôle d'accès Joomla
  • N'autorise aucune substitution de modèle
  • Ne permet pas les urls non-sef
  • Ne permet aucune route construite avec JHtml

=============================================== =

Manifeste

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>

=============================================== =

Fichier d'entrée

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>";

=============================================== =

Routeur

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;
    }
}

=============================================== =

Élément de menu par défaut

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>
2
jamesgarrett