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.