Importer du contenu dans Drupal à partir de feuilles Excel est parfait pour faire correspondre les colonnes aux champs, spécialement pour des clients non techniques. Mais et si vous avez des milliers de lignes à importer ?
Sur Drupal 7 au moins, vous serez probablement bloqué par une limite de nombre de lignes, ou une lenteur affreuse de l'import. Aujourd'hui, j'ai du améliorer un outil d'import afin de le rendre capable de traiter plus de 8000 lignes de contenu. Il était extrêmement lent et s'arrêtait au bout de 200 lignes.
Voici Spreadsheet Parser. Cette librarie de parsing Excel haute-performance (pour PHP) est conçue pour traiter de gros fichiers. Et il y a même un module Drupal pour l'interfacer à l'un des outils majeurs d'importation, Feeds : Feeds Spreadsheet.
Mais... ce module oblige à installer le module Composer Manager (et tout ce qu'il y a derrière). Impossible bien souvent et surtout dans le cas concret que j'avais à traiter : une usine de sites d'un grand groupe, sous Drupal 7, mais qui n'est pas conçue avec Composer. Voici donc ma solution, qui consiste à dégager les dépendances sur Composer Manager et à faire un module patché aux petits ognons, à la main, prêt à être mis en production.
C'est très simple :
Sur une machine développement :
- Récupérer l'archive du module et l'extraire dans sites/all/modules/patched/feeds_spreadsheet
- Dans le .info du module, enlever / commenter la dépendance à composer_manager (dependencies[] = composer_manager)
- Ouvrir un terminal dans le répertoire du module et lancer un "composer install" pour récupérer les librairies
- Dans le .module, inclure l'autoload : require_once 'vendor/autoload.php';
Une fois testé en local, il n'y a plus qu'à mettre sur le serveur de recette / production sites/all/modules/patched/feeds_spreadsheet, et voilà !
Ajouter un commentaire