Virtuemart 1.5 est en route – De nouveaux contributeurs sont recherchés

cartComme vous l’avez surement appris par ailleurs, le développement de VirtueMart 1.5, qui devrait être beaucoup plus propre et souple que la version actuelle de VirtueMart est en marche. Je me permet donc de relayer sur ce blog l’appel de la nouvelle équipe.

VirtueMart, la majeure extension de commerce électronique pour Joomla, est maintenant à la recherche de nouveaux talents pour travailler sur la prochaine version VirtueMart v1.5. Nous avons la meilleure intégration entre VirtueMart et Joomla. Maintenant, nous sommes à la recherche d’excellents talents dans des domaines variés pour notre équipe. Si vous avez l’une des compétences suivantes, nous aimerions que vous entrez en contact avec nous :

  • Développement – (avec si possible une expérience du framework de Joomla 1.5)
  • Conception logicielle
  • Assurance qualité et tests
  • Ecriture de documentation
  • Modération de forum
  • Développement d’extensions
Tout niveau d’expérience est susceptible de nous intéresser. Nous vous trouverons une place et vous offrerons l’opportunité de contribuer de façon significative à VirtueMart.
Que pourrez-vous y gagner ? Comme vous le savez, la communauté du logiciel libre propose à tous des programmes, sans distinction de statut ou d’argent. Votre implication dans le projet nous aide à continuer à le faire avancer, et le laisser librement disponible à tout le monde.
De plus, cela sera une expérience que vous pourrez rajouter sur votre CV, ce qui potentiellement pourra vous faire gagner de l’argent..
Faites la différence ! Rejoignez une équipe qui crée une grande communauté et un logiciel génial.

Pour nous rejoindre:

Nous ferons notre possible pour vous trouver le poste qui vous convient le mieux.

Interview de la nouvelle équipe de VirtueMart

Il y a quelques mois maintenant, j’avais voulu interviewer les membres fondateurs de JMart (Rick Glunt, Max Milbers et Roland), un fork de Virtuemart très prometteur. Depuis, l’équipe de JMart a pris la main du projet VirtueMart. JMart est donc devenu en quelque sorte le futur de VirtueMart. Virtuemart 1.5, basé sur VirtueMart 1.2, sera la première version de VirtueMart qui utilisera rééllement l’API de Joomla.

Je vous laisse vous présenter …

Mon nom est Rick Glunt et je suis chef de projet informatique pour une entreprise basée aux États Unis. Je dirige également une petite société de consulting. Depuis 25 ans, j’ai programmé sur de nombreuses plateformes et languages.

Mon nom est Max Milbers, je suis ingénieur, et j’écris des programmes Java pour l’industrie automobile. J’ai écrit une étude pour l’institut Fraunhofer pour montrer les possibilités des GPGPU. Je programme sur de nombreux langages depuis l’âge de 5 ans.

Pourquoi avoir repris la direction de VirtueMart ?

De nombreux développeurs VirtueMart étaient intéressés par une nouvelle version de VirtueMart qui utiliserait le framework de Joomla, et qui utiliserait la structure MVC standard.  Après de nombreuses demandes durant les réunions de l’équipe de développement sur Skype,  les bases théoriques de la structure d’un futur VirtueMart 2.0 commençait à se dessiner.

Après quelques mois, nous avons appris qu’une telle version était déjà en cours de dévelopement, par une compagnie extérieure, grandement intéressée par VirtueMart.

Il nous a semblé que cela risquait d’exclure les développeurs engagés dans Virtuemart du process de décision / de développement. Cela a généré également des questions concernant le futur du statut Open Source de VirtueMart. Il était grand temps de « forker » le projet, de passer au MVC, de s’assurer que le code reste libre, et de laisser aux développeurs le contrôle du projet.

Est-ce votre première contribution à la communauté du logiciel libre  ?

Non. Rick a publié quelques logiciels libres pour Windows par le passé et a contribué à de nombreux projets libres en PHP.
Max faisait partie de l’équipe du projet joxsi sur sourceforge.

Quel type de personnes recherchez-vous pour rejoindre votre équipe ?

Nous recherchons des développeurs PHP qui sont familiers avec le framework de Joomla 1.5 et avec le paradigme MVC. Nous recherchons également des gens pour tester la boutique en ligne.

Avez vous contribué à VirtueMart par le passé ?

Chacun d’entre nous à contribué à VirtueMart par le biais du forum et les membres de l’équipe de développement.

Bug dans l’API VirtueMart

Attention, si vous développez sur VirtueMart, il est très important de ne jamais démarrer les requêtes SQLs passés à ps_DB par un espace.

Je viens de perdre un peu de temps à cause de cela.

Le coupable est la méthode query de la classe ps_DB dont voici un extrait :

    if (strtoupper(substr( $this->_sql , 0, 6 )) == "SELECT"
    || strtoupper(substr( $this->_sql , 0, 4 ))=='SHOW'
    || strtoupper(substr( $this->_sql , 0, 7 ))=='EXPLAIN'
    || strtoupper(substr( $this->_sql , 0, 8 ))=='DESCRIBE'
    ) {
        //(...)
      }

Si la requête commence par un blanc, VirtueMart ne détecte pas qu’un résultat est attendu, et un tableau d’une ligne est renvoyé.

Ce qui est navrant, c’est que j’avoue ne pas avoir compris l’intérêt d’avoir dupliqué l’API Joomla dans VirtueMart. Cela augmente les sources de bugs, et complexifie la maintenance de VirtueMart par la communauté.

Sortie du guide officiel Joomla / Virtuemart


Le guide officiel Virtuemart

Le guide officiel Joomla Virtuemart sortira officiellement le 26 juin 2009.

Ce guide officiel explique comment planifier, installer et configurer correctement le logiciel, ainsi que son utilisation pratique. Il apprend aussi les règles applicables en tant que commerçant en ligne, et les possibilités en matière de marketing et d’assurance qualité.  Les principaux points abordés dans cet ouvrage sont :

  • Planifier : installer soi-même ou opter pour une offre « tout compris » ?
  • Installer, configurer et tester : prêt à se lancer ?
  • Administrer : l’interface de gestion de VirtueMart en détail
  • Proposer des articles : utiliser les types et catégories d’articles
  • Administrer les clients : travailler avec des groupes de clients
  • Gérer les commandes : déroulement et états
  • Marketing : actions promotionnelles, bons cadeaux et réductions
  • Juridique : agir en conformité avec la loi, éviter les ennuis

Le projet VirtueMart recevra un euro pour chaque vente de ce livre.

Sommaire

  1. VirtueMart
  2. Planification et réalisation de votre boutique en ligne
  3. Testez votre boutique en ligne
  4. Votre travail quotidien avec VirtueMart
  5. Thèmes
  6. Administration
  7. Votre boutique
  8. Articles
  9. Clients
  10. Commandes
  11. Fournisseur
  12. Rapports
  13. Taxes
  14. Coûts d’expédition
  15. Bons d’achats
  16. Fabricants
  17. Assistance
  18. Modules pour VirtueMart
  19. Extensions Joomla! pour VirtueMart
  20. Lettre d’informations
  21. CSV-Improved (CSVI)
  22. JoomlaPack

Ce livre est bien entendu disponible sur Amazon.

Présentation du livre ‘Joomla! E-Commerce with VirtueMart’

Description du livre
Construisez des boutiques riches en fonctionnalités avec Joomla 1.0/1.5 et VirtueMart 1.1.X.
  • Construisez votre propre site web e-commerce de zéro en ajoutant des fonctionnalités étapes par étapes à une boutique exemple
  • Configurer la boutique, construisez le catalogue produit, paramétrer l’inscription des utilisateurs
  • Gérer les clients, les commandes et différentes devises pour fournir le meilleur service client possible
  • Gérer la livraison dans toutes les situations et traites les régles de taxes
  • Couvre la personnalisation de l’apparence du site et la localisation de VirtueMart

Dans le détail
VirtueMart est un composant fréquemment utilisé pour ajouter des fonctionnalités e-commerce aux sites Joomla!. VirtueMart couvre tous les aspects du e-commerce facilement, et permet aux administrateurs de paramètrer la boutique (méthode de paiement, de livraison, produits…). Il a aussi de nombreuses autres fonctionnalités tels que la gestion des clients et de leurs commandes.

Ce livre montre la création d’une boutique en ligne basée sur VirtueMart. Il s’attarde principalement sur le e-commerce et VirtueMart. Il explique les différentes étapes de création d’un site e-commerce à partir d’une installation basique de Joomla! et VirtueMart, jusqu’au déploiement du site.
Le livre commence avec une introduction à VirtueMart et une explication sur ces fonctionnalités, et comment vous pourrez en tirer partir pour gagner de l’argent avec votre site Joomla! C’est suivi par l’incontournable installation pour mettre en place les fondations de votre site web.  Le livre explique ensuite la configuration de votre boutique VirtueMart, y compris les méthodes de paiement / de livraison, la configuration des zones et des devises.
Le livre aborde le sujet de la gestion des produits, des clients, des commanndes, de la personnalisation de l’apparence du site. ll aborde alors, exemples à l’appui, des fonctionnalités plus avancées telles que la localisation et l’import/export massif de produits vers votre boutique VirtueMart. Les sujets de la maintenance, la résolution de problèmes et la sécurité, qui sont essentiels, sont aussi abordés. Il y a également une annexe dédiée à la configuration des modules de paiement et de livraison.

Ce que vous apprendrez avec ce livre

  • Installer / Désinstaller des composants plugins et modules Joomla! ; installer le composant VirtueMart et ses modules pour commencer à créer votre boutique.
  • Configurer la boutique, créer et utiliser des zones et des devises, paramétrer des méthodes de paiement, de livraison, et les taxes
  • Gérér les clients, les vendeurs, les produits, les catégories de produits
  • Configurer l’inscription des utilisateurs, gérer les utilisateurs et les groupes, créer et utiliser des statuts de commande, étudier les statistiques de commande et les détails de commande, mettre à jour les commandes et gérer l’inventaire,
  • Installer et configurer de nouveaux thèmes, personnaliser le template Joomla!, personnaliser l’apparence de VirtueMart et la réécriture d’URL pour attirer d’avantage d’internautes
  • Utiliser les fonctionnalités « marketing »  de Joomla/VirtueMart tels ue les bannières, les promotions, les newsletter qui sont d’importants facteurs de réussite
  • Apprendre à enrichir les fonctionnalités de VirtueMart avec des extensions tierces pour permettre la saisie simultanée de plusieurs informations produits via Ajax, l’affichage d’un diaporama avec les images de produits pour rendre votre site plus attrayant
  • Apprendre à mettre votre boutique en ligne, sauvegarder et restaure vos fichiers et votre base de données. Gérer les problèmatiques de maintenance, de sécurité…

Approche

Il s’agit d’un guide de type tutoriel pas à pas, qui enseigne comment créer un site e-commerce au travers d’un exemple pratique complet.

Pour qui ce livre a été écrit?

Si vous êtes un utilisateur de Joomla! qui souhaite construire sa boutique e-commerce, alors ce livre est fait pour vous. Les pré-requis sont faibles : il est juste nécessaire de savoir construire un site avec Joomla, et avoir des notions de CSS, d’HTML et de PHP.

Ce site est notamment disponible sur Amazon.

Templates Joomla gratuits et payants

Joomlart

65 templates Joomla y sont disponibles, dont certains sont destinés à être utilisés sur des boutiques VirtueMart. Des thèmes Magento commencent aussi à apparaître au rythme d’un template par mois. Différentes offres sont proposées.

Pour 59€, il est possible de télécharger librement les templates Joomla pendant 3 mois, et de les installer sur un site. Il existe également des offres destinées aux professionnels. Pour 499€, il est permis de télécharger librement les templates pendant un an, d’enlever le « copyright », et de les installer sur un nombre illimité de sites.

Des templates Joomla gratuits sont également disponibles. C’est d’ailleurs JoomlArt qui est l’auteur de JA Purity, le template qui est maintenant distribué avec Joomla 1.5. Ils sont également les auteurs du template JA Larix qui est fourni avec VirtueMart. Peut-être sans le savoir, vous utilisez donc probablement déjà des templates Joomlart.

JoomlaBamboo

bamboo

JoomlaBamboo proposent 42 templates Joomla relativement épurés. Quelques (rares) templates VirtueMart sont proposés. Pour 40$, il est il possible de télécharger librement les templates Joomla pendant 3 mois, et de les installer sur un site (les templates sont donc un peu moins cher que sur Joomlart).

Pour les professionnels, il est possible moyennant 125$ d’avoir un accès libre à l’ensemble des templates pendant 6 mois, et pouvoir les installer sur un nombre illimité de domaine, en enlevant le copyright.

Rocket Theme


Rocket Theme propose plus de 80 templates Joomla.

Pour les boutiques Virtuemart orientées technologies, le template Joomla 1.5 VirtueMart « Mynxx » impressionne de par ses nombreux effets DHTMLs (cf vidéo) ! Très pro !

Acheter un template Joomla pour son site Internet revient à 50$.

Pour les professionnels, il est possible moyennant 300$ de télécharger librement les templates pendant un an, et de les installer sur un nombre illimité de sites.

Rendre Virtuemart utilisable en mode offline

Les dernières versions de VirtueMart font appel à des webservices convertisseurs de devises.

Ces webservices ne peuvent malheureusement pas à ma connaissance être désactivés.

De ce fait, lorsque l’on utilise VirtueMart en étant non connectés à Internet (pour développer ou faire une présentation), des messages d’erreurs peuvent s’afficher (ie : « Error: Failed to retrieve the Currency Converter XML document »).

Pour éviter ces désagréments, mais également éventuellement pour supprimer les appels à ces webservices qui peuvent être inutiles et ralentir inutilement le site, il faut créer un fichier dans le répertoire /administrator/components/com_virtuemart/classes/currency/

Appelez le par exemple « convertNOP.php ».

Voici le code source nécessaire :

<?php

if(

!defined( '_VALID_MOS' )

&&

!defined( '_JEXEC' ) )

die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );

class convertNOP {
  function convert( $amountA, $currA='', $currB='' ) {
    return $amountA;
  }
}

?>

Par la suite, il faut activer ce fichier en allant dans le back-office VirtueMart dans « Configuration » > « Configuration générale » > « Paramètres principaux » > « Sélectionner un module convertisseur de devises ».

Présentation de SOLR

Open Source Entreprise Search Server basé sur Lucene SOLR est un serveur de recherche Open Source basé sur Lucene. C’est un logiciel libre réalisé en Java soutenu par la Fondation Apache.

Il permet d’indexer une base de données via Lucene, sans qu’il soit nécessaire de programmer une seule ligne de code.

Il est possible de communiquer avec SOLR via un ensemble de webservices. Il est donc tout à fait possible d’indexer du contenu ou d’effectuer des recherches depuis une application PHP telle que VirtueMart ou Joomla.

Bien entendu, les performances de ce type de moteur de recherche n’ont rien à voir avec celles des moteurs de recherche de Joomla et de VirtueMart.

En outre, SOLR supporte le « faceting » aussi appelé « faceted search », que l’on peut trouver sur de gros sites e-commerce tel que Amazon.

Le « faceting » vous propose de préciser votre recherche en ajoutant des critères supplémentaires, parmis les résultats retournés. Le nombre de résultats correspondant à chaque critère étant ajouté.

facetting_amazon
La navigation par facette sur Amazon

Par exemple, lorsque sur Amazon, vous recherchez « logiciel libre », Amazon affiche une zone vous permettant de naviguer parmi les résultats en précisant votre recherche :

SOLR permet d’implémenter ce genre de filtres sur des champs variés. Il est par exemple tout à fait envisageable de faire un filtre par gamme de prix, couleur et taille.

Le livre Solr 1.4 Enterprise Search Server peut permettre aux développeurs de découvrir SOLR efficacement.

Dans un prochain article, je montrerais qu’il est très facile de faire un lien entre VirtueMart et SOLR, si un système de plugin est mis en place sur VirtueMart.

Améliorer les performances de VirtueMart : Proposition d’une nouvelle table

Voici une proposition permettant d’améliorer le parcours de l’arborescence catégorie de VirtueMart, au détriment de la vitesse d’écriture. Ce billet fait directement suite à mon article « Améliorer les performances de VirtueMart« .

Cette méthode nécessite de créer une nouvelle table que nous appellerons #__{vm}_category_tree, dont voici le schéma :

  • category_id : identifiant de la catégorie
  • category_path : fil d’ariane de la catégorie sous forme d’un liste dénormalisée d’identifiant de catégorie séparée par « , »
  • level : niveau de profondeur de la catégorie étudiée

Par exemple, une catégorie ayant un « fil d’ariane » ayant pour valeur « ,1,6,184, » serait de niveau 4 (étant donné qu’il existe trois niveaux de catégories parentes). Sa catégorie parente serait la catégorie « 184 » qui aurait elle même comme parent « 6 » qui aurait elle même comme parent « 1 » qui n’aurait pas de catégorie parente.

Le choix du séparateur « , » permettra d’utiliser au besoin la colonne presque directement dans une requête SQL via le mot clé « in » si besoin.

Voici le SQL permettant de créer cette table :

CREATE TABLE IF NOT EXISTS `#__{vm}_category_tree` (
`category_id` INT(11) NOT NULL,
`category_path` VARCHAR(255) NOT NULL,
`level` INT(11) NOT NULL,
KEY `category_id` (`category_id`),
KEY `category_path` (`category_path`),
KEY `level` (`level`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Pour alimenter cette table, il faut d’abord executer une fois la requete suivante :

INSERT INTO
`#__{vm}_category_tree`
(category_id,category_path,level)
SELECT
`#__{vm}_category.category_id`,
",",
1
FROM
`#__{vm}_category`
INNER JOIN
`#__{vm}_category_xref`
ON
`#__{vm}_category_xref`.category_child_id=`#__{vm}_category`.category_id
WHERE
`#__{vm}_category`.category_publish="Y"
AND
`#__{vm}_category_xref`.category_parent_id=0;

Il faut ensuite exécuter pour chaque niveau :

INSERT INTO
`#__{vm}_category_tree`
(category_id,category_path,level)
SELECT
`#__{vm}_category`.category_id,
concat(IFNULL(parent_leaf.category_path,""),`#__{vm}_category_xref`.category_parent_id,";"),
IFNULL(parent_leaf.level+1,0)
FROM
`#__{vm}_category`
INNER JOIN
`#__{vm}_category_xref`
ON
`#__{vm}_category_xref`.category_child_id=`#__{vm}_category`.category_id
LEFT OUTER JOIN
`#__{vm}_category_tree` parent_leaf
ON
parent_leaf.category_id=`#__{vm}_category_xref`.category_parent_id
WHERE
`#__{vm}_category`.category_publish="Y"
AND
`#__{vm}_category_xref`.category_parent_id IN (SELECT
category_id FROM `#__{vm}_category_tree` WHERE level=?)

Le remplissage « au fil de l’eau » de cette table, fera l’objet d’autres billets.

Maintenant pour connaître tous les enfants directs et indirects d’une catégorie (« 5 » par exemple), il suffit d’éxécuter la requête suivante:

SELECT category_id, level

FROM `#__{vm}_category_tree`

WHERE category_path LIKE ',5,%';

Une sacré économie de requetes SQL. Le résultat peut-être placée en cache si cela est possible. Il est également possible de complexifier cette requête en y rajoutant par exemple une jointure avec la table #__{vm}_category.

Si vous êtes intéressé par cette modification, merci d’appuyer ma demande sur le forum.

Améliorer les performance de Virtuemart : Constat

Dans le cadre professionnel, il m’est arrivé à moi et à mes collèges de créer des boutiques en ligne, basées sur Joomla / VirtueMart, proposant plus de 15000 produits.

Après avoir réalisé des modifications nous permettant de tenir un tel catalogue, nous avons voulu les proposer à la communauté via le forum officiel de VirtueMart. Malheureusement, étonnement, notre demande a été ignorée pendant plusieurs mois.

L’un des problèmes majeurs, était le nombre de requêtes SQL nécessaires aux parcours de l’arborescence VirtueMart.

L’arborescence produit est stocké dans la table #__vm_category_xref dont voici le schéma simplifié :

  • category_parent_id : identifiant de la catégorie parent
  • category_child_id : identifiant de la catégorie enfant

Imaginons que votre site soit découpé en catégories de la manière suivante :

  1. CMS
    1. Joomla
      1. Joomla 1.0
      2. Joomla 1.5
      3. Joomla 1.6
    2. Drupal
    3. EZ Publish
    4. Typo 3
  2. E-Commerce
    1. VirtueMart
    2. Magento
    3. OS Commerce

Ce découpage est bien en dessous de l’arborescence que nous avons à gérer pour nos sites e-commerce.

Pour récupérer, l’arborescence et l’afficher il nous faut d’abord récupérer les catégories sans enfants (« CMS » et « E-Commerce »). Pour chacune de ces catégories, il faut voir si ces dernières ont des enfants et les afficher. Cet algorithme continue de manière itérative…

On voit bien que le nombre de requêtes SQL nécessaire est exponentiel. Certes, il y a le cache, mais ce dernier n’est pas toujours utilisable (ie : en back office).

Pire, imaginons que la page affichant la catégorie « CMS » doivent afficher l’ensemble des produits contenus dans la catégorie « CMS » et dans ces enfants directs et indirects, le tout trié par prix.

Ce problème explique en partie la lourdeur de l’arborescence du back-office par défaut de VirtueMart , lorsque le catalogue produit est volumineux.

J’expliquerais en détail la méthode que nous souhaitons soumettre à la communauté dans un prochain billet.