Adapter une extension pour la version 3.0.0

Développement d'extensions tierces
Avatar de l’utilisateur
all-maps-welcome
Modérateur
Messages : 82
Inscription : 13 Sep 2008 01:14

Adapter une extension pour la version 3.0.0

Messagepar all-maps-welcome » 19 Nov 2012 22:55

Bonjour,

Il y a un fil intéressant sur le forum anglais avec des conseils pour adapter une extension pour qu'elle soit compatible avec la version 3.0.0 de Contao.

Je vais essayer de faire un fil identique sur ce forum qui reprend les informations du fil sur le forum anglais ainsi que le feedback de mes tentatives personnelles pour adapter mes extensions.

1-- Déplacer les fichiers de modules dans un nouveau dossier "modules".
2-- Déplacer les fichiers de classes dans un nouveau dossier "classes".
3-- Déplacer les fichiers des éléments de contenu dans un nouveau dossier "elements". Si vous avez d'autres fichiers spécifiques, ils sont aussi à déplacer dans de nouveaux dossiers "forms", "pages", "widgets".

4-- Déplacer les icônes, les fichiers CSS et tous les fichiers publics dans un nouveau dossier "assets". Attention à créer dans ce dossier un fichier .htaccess avec les lignes

Code : Tout sélectionner

order deny,allow
allow from all

pour rendre les fichiers accessibles.

5-- Dans le fichier "config/config.php", vous devrez changer le chemin vers l'icône de votre module de back-office (car l'icône se trouve maintenant dans le dossier "assets").

6-- Le fichier "config/database.sql" va disparaître, les informations pour la création de votre table sont à passer dans votre fichier DCA.
C'est beaucoup plus simple si vous regardez un exemple dans le fichier "dca/tl_news.php" de l'extension "news", mais en deux mots :
• Les clés s'ajoutent dans la section "config".
• Ensuite, dans la section "fields", il faut modifier chaque champ pour ajouter l'information pour la création du champ.
• Aussi ajouter des champs supplémentaires pour les champs qui ne se trouvaient que dans le fichier "database.sql" jusqu'à maintenant, c'est-à-dire par ex. id ou tstamp.

7-- Ajouter l'espace de nom Contao partout dans les classes, modules, etc. et dériver les classes avec \

8-- Certaines classes sont maintenant statiques, comme Input, adapter comme ceci :

Code : Tout sélectionner

$this->Input->get()

devient

Code : Tout sélectionner

\Input::get()


9-- Les chemins des images et fichiers de l'explorateur sont maintenant stockés sous forme d'une ID dans la base de données.
Pour récupérer le chemin d'une image dans un module, faire par exemple :

Code : Tout sélectionner

$objModel = \FilesModel::findByPk($objPhotos->singleSRC);
$chemin = $objModel->path;


10-- Finalement, vous pouvez lancer l'autoloader dans le menu du back-office pour générer les fichiers "autoloader.ini" et "autoloader.php".

Ce ne sont que quelques conseils pour commencer, mais qui m'ont bien servi et qui j'espère pourront servir à d'autres.

N'hésitez pas à me dire si j'ai mal formulé quelque chose et je vous invite également à publier vos conseils en répondant à ce fil.

Avatar de l’utilisateur
KlausGrenoble
Membre
Messages : 261
Inscription : 27 Jan 2013 00:11
Localisation : Grenoble

Re: Adapter une extension pour la version 3.0.0

Messagepar KlausGrenoble » 15 Fév 2013 17:41

Justement, j'aimerais utiliser l'extension mailusername dans ma version 3.0.3 mais elle n'est pas compatible. J'ai essayé, mais ça me sort des messages d'erreurs. J'ai vite désinstallé. Normalement j'attends, jusqu'à le développeur (Andreas Schempp) aura adapté cette extension. N'est-ce pas risqué de vouloir adapter soi-même une extension ?

Avatar de l’utilisateur
all-maps-welcome
Modérateur
Messages : 82
Inscription : 13 Sep 2008 01:14

Re: Adapter une extension pour la version 3.0.0

Messagepar all-maps-welcome » 15 Fév 2013 21:08

KlausGrenoble a écrit :Justement, j'aimerais utiliser l'extension mailusername dans ma version 3.0.3 mais elle n'est pas compatible. J'ai essayé, mais ça me sort des messages d'erreurs. J'ai vite désinstallé. Normalement j'attends, jusqu'à le développeur (Andreas Schempp) aura adapté cette extension. N'est-ce pas risqué de vouloir adapter soi-même une extension ?


Je parle d'adapter une extension que tu as créé toi-même. Il y a des changements obligatoires à faire pour passer à la version 3.

Pour les extensions disponibles dans le gestionnaire, il faut effectivement attendre que le développeur ait mis à jour l'extension.

azer
Membre
Messages : 45
Inscription : 31 Juil 2008 20:50

Re: Adapter une extension pour la version 3.0.0

Messagepar azer » 12 Juil 2013 08:52

Bonjour,

Je galère pour faire fonctionner mes modules customs. J'ai généré les autoload .php et .ini, mais le module ne s'affiche pas dans la liste déroulante quand je veux créer un module sur le backend.

J'ai donc refais un module ultra simplifié pour avoir la méthode à suivre, mais idem, je n'y arrive pas.
Le code de mon module:

modules/ModuleCopyright.php :

Code : Tout sélectionner

<?php

/**
 * Contao Open Source CMS
 *
 * @package copyright
 */


/**
 * Run in a custom namespace, so the class can be replaced
 */
namespace Contao;


/**
 * Class ModuleCopyright
 *
 * @package    Copyright
 */
class ModuleCopyright extends \Module
{

        /**
         * Template
         * @var string
         */
        protected $strTemplate = 'copyright';

        /**
         * Generate the module
         */
        protected function compile()
        {
                $date = date("Y");
                $this->Template->copy = $date;
        }
}


mon modèle:
templates/copyright/copyright.html5 :

Code : Tout sélectionner

<div id="copyright">TEST Tous droits réservés © copyright 2011-<?php echo $this->copy; ?></div>


Et le fichier config/config.php:

Code : Tout sélectionner

<?php if (!defined('TL_ROOT')) die('You cannot access this file directly!');

// Back end modules
// none

// Front end module
$GLOBALS['FE_MOD']['testdemodule']['copyright'] = 'ModuleCopyright';


Je fais quelque chose de mal ?

Avatar de l’utilisateur
cyril
Site Admin
Messages : 171
Inscription : 14 Avr 2008 20:20
Localisation : Valence (Drôme)

Re: Adapter une extension pour la version 3.0.0

Messagepar cyril » 12 Juil 2013 15:12

Contao 3 possède une gestion de cache plus performante. Les fichiers dca, config... sont mis en cache.
Il faut donc aller dans la maintenance du système et "Purger le cache interne".
Le temps du dév il est possible de contourner le cache avec l'option "Contourner le cache interne" dans la configuration.
Cordialement,

Cyril

azer
Membre
Messages : 45
Inscription : 31 Juil 2008 20:50

Re: Adapter une extension pour la version 3.0.0

Messagepar azer » 13 Juil 2013 11:37

Ah ben oui. C'était donc ça .... impeccable :) Merci !!


Revenir vers « Développement d'extensions »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 20 invités