[QuickStart] Thélia – brouillon/prises de notes

Cela fait 3 ans que j’ai quitté Prestashop, et que je m’intéressais à Thélia sans jamais oser l’essayer « pour de vrai ».

Je me suis lancé, et en moins de 10 minutes le nouveau site était en ligne. il m’a quand même fallu une petite demi journée pour me familiariser avec l’interface et être capable de rendre la boutique exploitable (question de configuration des messages, moyens de paiement, etc.).

Je commence cet article sans être vraiment « à l’aise » avec le code mais il me semble à priori beaucoup plus clair et stable que ce que j’ai pu voir avant :) .

Au sommaire

  1. Conclusion sur Thélia
  2. L’installation (à partir de rien, jusqu’à la mise en ligne « basique »)
  3. Adaptation de la Configuration à mes besoins
  4. Personnalisation plus importante

Conclusion

  • +++ installation / opérations de maintenance en ligne de commande
  • +++ Code solide
  • +++++ Symfony2
  • +++++ Utilisation intelligente de Smarty (si vous voyez ici une critique importante de PrestaShop, c’est tout à fait ça :) )
  • +++ fonctions de base (ajout produits/catégories ok)
  • ±±± On ne peut pas ordonner les produits dans chaque catégorie, uniquement la principale, mais ça va changer !!
  • — Mauvaise surprise d’arrondis que paypal refuse… du coup modification du module pour n’envoyer que le total commande. Mais bon c’est un problème présent sur tous les cms d’ecommerce.
  • — rajouter un transporteur n’est pas facile (ou je m’y prends mal)
  • — offrir les frais de ports à partir d’un certain montant n’est pas très simple
  • — les fonctions de bases, ok, mais il manque d’autres fonctions très utiles à un site d’e-commerce (faut que je fasse une liste)
  • — Mise à jour manuelle (pour l’instant … * teasing * )

Les fonctions de bases sont là: produits, catégories, commandes, clients. Il n’y a pas de paillette, l’interface admin est propre.

Les différences avec Prestashop ne sont pas très « visible » (l’essentiel se passe sous le code), mais j’étais surpris de la rapidité avec laquelle une action en back-office était traité (Ajouter un produit, une catégorie, un module, changer une traduction, une config, …).

Coté code source, les fichiers occupent (dépot git uniquement) 109M pour Thélia contre 231M pour PrestaShop , mais le chiffre augmente beaucoup pour Thélia après installation car il se base sur le framework Symfony, PHPUnit et autre librairies, là où prestashop n’utilise rien d’autre que Smarty (et très très mal, mais c’est un autre sujet !).

Thélia propose nativement l’installation en ligne de commande (c’est par là que je vais commencer), utilise une version encore maintenu de PHP, des normes qui respectent les « bonnes pratiques de développement », bref tout pour plaire. Ah, c’est libre aussi !

 

Préparer l’installation (download, dépendances)

suivre les instructions, installer les dépendances, entre les php composer et apt-get install php5-curl ou php5-mcrypt  (au passage je déplore que seul composer soit disponible, en tant que développeur j’aurais préféré un git submodule update –init –recursive )

Installation (génération du sql, config de base)

curl -sS https://getcomposer.org/installer | php
php composer.phar install # download and install EVERYTHING
php Thelia # affiche des erreurs si database.yml existe déjà et est mal configuré
php Thelia thelia:install # me demande d'augmenter "post_max_size" à 20M au moins alors que je suis en ligne de commande
# du coup je le fais pour /etc/php5/cli et /etc/php5/apache2 (droit root requis)
sudo sed -i "s/^post_max_size = .*/post_max_size = 32M/" /etc/php5/cli/php.ini
sudo sed -i "s/^post_max_size = .*/post_max_size = 32M/" /etc/php5/apache2/php.ini
# et ça m'indiquait quelques autres paquets à installer, selon ce que j'avais déjà
apt-get install php5-intl php5-mcrypt php5-md php5-curl
# je peux enfin installer Thélia ! bon, je met user toor sans mot de passe
php Thelia thelia:install --db_host=localhost --db_username=toor --db_name=thelia --db_password=secret_password
# …
# ça marche et y'a plein de message vert dans la console (c'est rassurant, surtout la fin "config file created with success. Your thelia is installed")
# …
php Thelia admin:create # créé un premier administrateur

Voilà pour l’install de base (pas très utilisable avec le logo thélia d’origine et toutes les valeurs par défaut). Voyons voir maintenant ce que je peux personnaliser rapidement sans trop me fatiguer …

Personnalisation minimale

J’ai trouvé tout de suite ce qu’il fallait faire (après avoir longtemps cherché :/ ) d’abord dans l’administration, puis dans les fichiers sur le serveur

Configuration de la boutique (français et euros uniquement)

Version courte: je regarde ce qui est dispo dans la partie « configuration » et je met ce que je veux.

La boutique aura des clients français, je vais donc mettre par défaut la bonne langue, et même désactiver les autres (au pire, je pourrais toujours les remettre j’imagine !)

Ah.. et en fait je vais carrément supprimer les autres langues, car apparemment on ne peux pas juste les désactiver :/ (Au passage au lieu de « Langues et URLs » j’aurais plutôt mis « Langues et Domaines »

Devises, je ne veux que des euros.

Informations sur la boutique, je sais quoi mettre (adresse, téléphone, email, …)

Administrateur: je créé un 2eme compte admin pour un pote qui n’est pas dev (car la boutique c’est pour lui, et en plus il me fait des retours pertinents sur ce qui ne marche pas ou ce qui n’est pas clair).

Le logo de la boutique

version courte : sautez ce paragraphe, c’est même pas du reverse engineering…

Apparemment les développeurs ne se sont pas fatigué à faire une fonction pour changer facilement de logo. C’est une position qui se défend, mais du coup, ça demande un minimum de connaissance technique, ou d’avoir en main une documentation qui indique comment faire (ce que je n’ai pas trouvé) (pour l’instant).

C’est pas grave, je me débrouille (clic droit, regarder la source, hop je navigue sur le serveur, et je change le logo à la main qui se trouve dans /assets/frontOffice/default/template-assets/assets/dist/img/9d31666.gif ). Je verrai plus tard (apparemment il y a du cache :) )

Page d’accueil (config basique)

Version courte: je veux les « nouveaux produits », je coche la case « c’est un nouveau produit » dans leur fiche.

Bon comme je ne sais pas trop ce que je veux, je vais juste activer le module « nouveau produits » (j’en ai déjà créé 2, ils devraient apparaitre). Rien ne s’affiche, je cherche longtemps (je vide les cache avec php Thelia cache:clear  (et perd du coup mon logo, zut, je refais la manip précédente), mais rien ne marche.. Je pose la question sur twitter, et je trouve juste après une case à cocher « ceci est un nouveau produit » dans la fiche produit, donc j’efface ma question :)

Un thème perso

Version courte: je copie celui par défaut / j’édite la configuration des variables / je met mon logo / j’édite le layout.tpl

Je ne vais pas me lancer dans le fait de faire un thème perso compliqué. Mais je cherche comment faire pour le savoir pour plus tard. Et puis c’est facile, ça doit être dans templates/ . Plus précisément pour l’instant je m’intéresse qu’au look extérieur, donc le frontOffice. Facile !

cp -r templates/frontOffice/default templates/frontOffice/perso
sed -i "s/domain='fo.default'/domain='fo.perso'" templates/frontOffice/perso/layout.tpl templates/frontOffice/perso/ajax/order-delivery-module-list.html templates/frontOffice/perso/includes/addedToCart.html

(La 2eme ligne permet de corriger le problème de traduction que j’ai eu dans le paragraphe suivant)

Je vais en suite sur le back office de ma boutique pour changer la variable concernée dans http://localhost/admin/configuration/variables ( active-front-template )

Thélia est mal traduit (ah non, c’est encore ma faute)

Premier test d’achat de produit (en activant le module chèque), j’ai trouvé pas mal de termes qui sont en anglais (donc la traduction manque?). Ça m’étonne je croyais que Thélia était plutôt sérieux. Tant pis, je cherche. Pour le coup, le système de traduction est assez proche de celui de PrestaShop (je ne me sens pas très dépaysé), et donc je dois modifier la config php pour autoriser au minimum 1100 champs dans un envoi post (au moins Thélia me prévient, c’est gentil :) , mais je me dit qu’un truc en ajax pour sauver les champs que l’on modifie un par un pourrait être une contribution future plutôt utile de ma part ).

Bref, je cherche d’abord à changer « Derniers produits » en « Dernières parutions » (oui, je préfère ça pour la boutique que je prépare). Et j’en profite pour traduire les termes qui me manque… et qui sont en fait déjà traduit ! Je ne comprends pas trop donc qu’un bug aussi énorme (c’est traduit dans le BO, mais ça reste en anglais) soit dans une version pourtant stable..

En fait, (apparemment) le thème par défaut contenait {default_translation_domain domain='fo.default'} et il y avait un problème (quelque part, je sais pas où) entre le fait d’utilisé le thème nommé « perso » et les traductions de « default »

Configuration module de paiement

La encore je ne suis pas dépaysé, on dirait encore du PrestaShop, mais plus beau, plus rapide et avec moins de bug :)

 

 

tester l’envoi de mail depuis linux

Une des rares choses plus facile à faire sous windows que sous linux, c’est l’envoi de mail avec un serveur apache/php depuis son poste local.

Pour rappel sous windows il suffit de donner les bonnes valeurs aux paramètres SMTP et smtp_port du fichier php.ini.

Mais revenons à nos moutons !

Donc, sous linux, ça ne marche pas comme ça.

Voici donc une solution simple, inspirée par ce blog :

1) (piqué du lien précédent) : Installer esmtp : en un clic apt://esmtp ou dans la console :

$ sudo apt-get install esmtp

2) Utiliser le nouveau logiciel plutôt que celui par défaut (sendmail) :

$ sudo sed -i "s#;\? \?sendmail_path =.*#sendmail_path = /usr/bin/esmtp -t -i#" /etc/php5/apache2/php.ini

FirePHP

Bonjour à tous,

En PHP, la manière la plus simple de trouver une erreur dans un script ou de vérifier la valeur d’une variable (tant que c’est pas une erreur de syntaxe !) c’est d’envoyer quelquechose vers l’affichage (print_r, echo, var_dump). Seulement ça fait vachement moche, les informations sont incomplètes, le plus souvent tout s’affiche en haut de la page et on met beaucoup de temps à retrouver l’erreur.
Continuer la lecture de « FirePHP »