web-dev-qa-db-fra.com

Joomla! Composant CMS avec Joomla! Cadre?

Je suis curieux de savoir comment construire des composants CMS sur Joomla! Cadre principalement parce que je voudrais que mes composants fonctionnent comme des applications autonomes.

Est-ce faisable sans piratage? Sinon, y a-t-il une meilleure façon d'aborder cela?

7
Nestor Ledon

Il est impossible de répondre de manière concluante à cette question, mais je pense qu'il vaut la peine d'essayer certaines des pièces les plus courantes qui pourraient vous tromper en matière de portage de code (et il y en aura assez).

Avant d’entrer dans les détails, tout cela pourrait être considéré comme un hack, selon votre point de vue. Le CMS et Framework sont très différents du point de vue d'un composant. Le CMS définit la structure exacte à utiliser. La structure est conçue pour vous permettre de personnaliser le fonctionnement et l’interaction de votre application. Le Framework peut certainement être conçu pour exécuter des composants à partir du CMS, mais à un moment donné, il ne vous reste plus qu'à recréer le CMS, ce qui semble inutile.

Tout d’abord, la réponse la plus courte et la plus simple: chaque fois que votre composant interagit avec le CMS doit être refait, vous devrez ajouter un routeur et vous devrez probablement ajouter des espaces de noms ou un nouvel autochargeur.

Commençons par la seconde moitié de ceci. Il y a de fortes chances que vous utilisiez composer avec le framework Joomla, de sorte que vous puissiez compter sur le chargement automatique des classes par le compositeur, selon vos besoins). ainsi votre composant ne sera pas chargé automatiquement (je suppose, alors s'il y a un meilleur moyen, commentez s'il vous plaît.) Cela signifie que vous devez soit ajouter votre propre autochargeur pour les classes MVC, soit les réécrire dans un espace de noms. .

Deuxièmement, vous devrez ajouter votre propre fichier de routeur à l'application. Comme vous n'avez plus le gestionnaire de menus, vous devrez le recréer à l'aide de la classe Router. Il est en fait assez simple de mapper les URL sur un contrôleur, mais vous devez vous assurer que cela se trouve dans l'application.

Enfin, vous devez prendre en charge toute fonctionnalité de CMS que vous utilisez dans le composant. Le plus important qui me vienne à l’esprit est JFactory. Tout script qui appelle cette classe pour obtenir la session, la base de données ou le document ne fonctionnera pas. (Sauf si vous portez cette classe et redéfinissez ses crochets en fonction de votre application.

Appelez-vous JComponentHelper quelque part? Vous devrez ajouter un soutien pour cela. Est-ce que vous appelez un autre assistant pour une extension principale telle que com_content ou com_users? Cela ne fonctionnera plus non plus.

Vous pourriez obtenir de simples extensions fonctionnant facilement sur le framework. Ceux qui sont connectés au CMS de nombreuses façons peuvent nécessiter essentiellement une reconstruction du CMS pour effectuer toutes les tâches. Cette partie dépend vraiment de l'extension.


En conclusion, à ce stade, cela impliquera très probablement un type de piratage ou de copier/coller du code du système de gestion de contenu au cadre dont vous avez besoin.

Je pense que le CMS deviendra plus conforme à la structure du cadre (c’est-à-dire utilise composeur, utilise des espaces de noms, etc.), ce qui facilitera la tâche. À l'heure actuelle, la tâche est toutefois ardue.

5
David Fritsch