Divers

Magento Comment créer une boutique en mode multiboutique

Je suppose que l’installation de Magento est terminée, et qu’il y a déjà la boutique de base. On va ajouter une nouvelle boutique.

Pour être plus précis, Magento fait la distinction entre le site web, la boutique et la vue. Pourquoi une telle distinction? C’est pour répondre à toutes les événtualités, tous les besoins, car Magento veut brosser large et être la solution pour beaucoup de commerçants.

{image magento multiboutique}

 

Créer le site web

System > Manage Stores, puis on va supposer que l’on va faire la totale, c’est à dire créer un site web, une boutique et une vue. Donc créer une site web, puis créez un Store, et enfin créez une vue.

ensuite la méthode rcommandée est de modificer le .htaccess et ajouter les lignes suivante :

SetEnvIf Host electronic\.domaine\.fr MAGE_RUN_CODE=electronic
SetEnvIf Host electronic\.domaine\.fr MAGE_RUN_TYPE=website

Ensuite allez dans la configuration de Magento, choisissez le scope dans la liste déroulante, une fois sur votre boutique nouvellement créée, General puis Web, changez l’url avec l’url dans Secure et Unsecure, par http://electronic.domaine.fr et https://electronic.domaine.fr.

 

Il vous faut créer un virtualhost dans le fichier de configuration d votre serveur (pour Apache c’est dnas httpd.conf).

Ensuite, par défaut il n’y a aucun produit dans votre nouvelle boutique, il faut brosser manuellement les produit que vous voulez voir figurer dnas votre nouvelle boutique, allez dans le produit, dans l’onglet website, cochez la case correspondant à votre boutique.

Comment régler des prix différents d’une boutique à l’autre dans Magento

PAr défaut les prix des produtis sont gérés de façon globalde. Pour gérer au niveau site, et permetre d’avoir des prix différents par site web, aller dans Configuration > Catalog > Price, mettre le Scope à website.

Comment cacher des catégories sans article dans le multiboutique?

Aller dans la catégorie pour la boutique en question, et mettre isActive à No.

 

 

magento

Magento comment mettre des catégories sur la Homepage

A la différence des autres logiciels de ecommerce, avec Magento vous allez avoir du mal à mettre votre produit en page d’accueil, sans faire une manipulation bien particulière.

Afficher des produits d’une catégorie sur la page d’accueil

Allez sur la catégorie qui vous intéresse et regardez son ID vous en aurez besoin pour la suite.

Allez dans CMS > Pages > Home

Allez dans l’onglet Content et collez le bout de code suivant :

{{block  type="catalog/product_list" category_id="4"  template="catalog/product/list.phtml"}}

Update  !

Due à une mise à jour de sécurité, vous ne pouvez plus adopter cette méthode (plus exactement la SUPEE-6788), il faut toucher au xml du layout directement, donc dans la section Design de la page CMS, vous collez le bout de code suivant :

<reference name="content">
<block type="catalog/product_list" name="home.catalog.product.list" category_id="7" template="catalog/product/list.phtml" />
</reference>

Il faut mettre ce code dans la page CMS de la HomePage, dans la section design.

Magento désinstaller un module manuellement

Il existe peu d’information pour désinstaller un module dans Magento, or il est préférable de la faire proprement.

Désintaller un module consiste à désactiver dans un premier temps le module et ensuite effacer les fichiers php, et les tables qui sont créée s’il y en a.

Commencez par désactiver le module

Regardez s’il n’a pas un script de création de table (il existe alors un répertoire sql au même niveau que /Helper ou /controllers)

Enlevez donc les tables correspondantes

la table Magento native core_resource peut contenir des informations des modules.

Effacer les fichiers dans app/code et app/design, /skin, /js

 

Par rapport à Prestashop, c’est vraiment pas top, Prestashop permet de désinstaller programmatiquement, inutile de s’emmerder avec toutes ces manipulations.

Magento installer un module manuellement

Il y a deux façons d’installer un module magento, via la console d’aministration avec Magento Connect (il vous faudra créer un compte), copier l’url à coller dans votre console, et procéder à l’installation.

Mais si cela semble facile, en réalité on peut être confronté à beaucoup de cas d’échec.

Magento SSL Connector error

Ceci est du à une version de SSL sur certaine distributions de Linux. Vous êtes sans doute en sslv3 au lieu de tlsv1. vous ne pouvez donc pas tout simplement installer via la console. Mais pas de panique, il existe un site qui vous permet de télécharger le module sous forme zippée et de l’installer manuellement.

Aller sur http://freegento.com/ddl-magento-extension.php et collez-y la clé d’installation du module récupéré sur MagentoConnect.

 

Magento Downloader 1.9.2 unknown cipher list

Magento utilise Curl pour télécharger le module, il y a une ligne qui va setter le protocole de chiffrage, le fichier downloader/lib/Mage/HTTP/Client/Curl.php à la ligne 377 pour magento 1.9.2,

 //$this->curlOption(CURLOPT_SSL_CIPHER_LIST, 'TLSv1')

Commenter la ligne ci-dessus et c’est bon.

En fait vous allez voir cette erreur avant la première, qui résulte de la mise en commentaire de la ligne 377.

Magento module invisible après installation

Si vous n’avez pas désactivé les caches (il y en a plusieur dans Magneto), votre module peut être invisible, donc nettoyez les caches et reloadez la page d’administration. Pour activer/désactiver les modules allez dans Système / Configuration / Avancé en bas de la page.

magento

Magento : enlever le index.php de l’url

Par défaut, si lors de l’installation de Magento, vous n’avez pas coché l’option rewrite_url, vos urls auront « index.php » juste après le nom de domaine. Pour l’enlever, car ce n’est pas très beau, il faut au préalable que mod_rewrite (un module Apache pour réécrire les urls) soit installé.

Une fois ce prérequis rempli, vous allez dans System > Configuration, puis sous General > Web, dans la section Search Engine Optimization, pour la dropdown list mettez sur ‘Yes’. Rafraichissez votre page administration et frontend.

Les bloc statiques dans Magento

Les blocs statiques ne sont rien d’autre que des bout de code HTML qui sont utiles pour des bannières temporaires, des bloc promotion, politique de retoure, table de tailles entre autres.

 

Comment créer un bloc statique dans Magento

Dans l’onglet CMS > Static Blocks tous les blocs sont listés ici, mais les modules ou thèmes que vous installez peuvent en ajouter d’autres.

Donnez un nom évocateur, un identifiant qui doit respecter les guidelines de Magento nom_du_block, choisir la vue à laquelle le block appartient. Vous pouvez laisser l’association à toutes les vues. setter le statut à Enabled.

Dans l’éditeur WYSIWYG ou source, mettez votre code.

 

Comment faire fonctionner votre bloc statique méthode XML?

Coller le code d’insertion directement dans le fichier xml de thème. app > design > frontend > default > your_theme > layout ,

Magento méthode getModel()

La méthode getModel() est abondamment utilisée dans le code Magento, et surtout dans les modules customs.

Utiliser getModel pour lire des information d’entité

 

Elle est une des méthode statique de l’objet Mage, défini dans le fichier Mage.php, dans la classe Mage.

Elle est utile pour lire des données des entités telles customer, sales, catalog.

Par exemple, pour lire les données du client N° 88, on fera :

$customer = Mage->getModel(‘customer/customer’);

$result = $customer->load($id);

var_dump($result);

 

Différence entre getSingleton() et getModel()

 

getSingleton() regarde si un modèle est déjà créé; si oui il va retourner le modèle déjà instancié, sinon il va créer une nouvelle instance de la classe et le retourne.

getModel() va dans toutes les situation vous retouner une nouvelle instance.

Magento les thèmes de base,default et RWD c’est quoi?

Dans le répertoire Design de l’installation Magento, il ya 3 paquets de thèmes différents, à quoi servent-ils?

Terminologie des paquet de thème dans Magento

Un paquet (package en anglais) regroupe plusieurs thèmes, donc il ne représente pas un thème à lui tout seul, les thèmes sont dans dans un niveau en dessous.

D’ailleurs dans le panneau d’administration, il y a la page Design, le premier block est Package et en dessous il y a le bloc Thème, il vous faut changer un des deux ou les deux pour changer de thème.

Le thème Magento Base

Ce thème est vriament le Core, il ne faut pas y toucher.

 

Le package Magento Default

C’est le thème par défaut de Magento non responsif.

Le package Magento RWD

C’est aussi le thème par défaut de Magento mais il est plus récent historiquement, il est responsif (Responsive Web Design).

 

Magento charger des données du client

Charger les données du client (customer) avec getSingleton()

$customer = Mage::getSingleton(‘customer/customer’)->load($idclient);

Lire l’email du client :

getData() permet de lire une propriété d’un objet.

$email = $customer->getData(’email’)

 

Méthode magique (en utilisant __call de Php)

 

$email = $customer->getEmail();

$entity_id = $customer->getEntityId();

dans les méthodes magiques, on passe en CamelCase pour le nom du getter.

 

Charger les données du client (customer) avec getModel()

 

$customer = Mage::getModel(‘customer/customer’)->load($idclient);

Ensuite même topo avec getData() que ci-dessus.

Magento Rendre visible un produit dans le front

venant de Prestashop, je suis toujours perturbé par la lourdeur de Magento, et la difficulté à faire la moindre tâche, comme rendre un produit visible sur la homepage de Magento. C’est pas automatique et c’est bien dommage.

 

Sachez que dans une installation tout fraiche de Magento avec aucune extension installé, il vous faut créer d’abord une catégorie. Et là

 

 

Chaque fois que vous ajoutez un produit il faut vider le cache sinon vous ne verrez pas votre produit.

De plus (et heureusement vous etes averti dans le back office, il faut régénérer l’index des produits !

Pour être visible un produit doit :

-être marqué Instock

-ne pas être hors stock quantité différent de 0

-être marqué Enabled

 

Création de produit configurable (produits à déclinaison)

Ce genre de produit est un peu touchy à configurer. Imaginons que vous ayez à ajouter des produits Tshirt avec 3 tailles : small, medium, et large, pour simplifier une seule couleur.

Concrètement vous aurez dans votre stock ces  » types de produits.

Dans le backend vous allez en fait ajouter un quatrième produit (qui n’est pas un produit concret), que j’appelle meta produit, qui sera en liaison avec les 3 produits concrets que vous allez ajouter (les 3 tailles de tshirt).

Nous avons une déclinaison sur la taille du produit, que nous allons appeler « Size ». Il vous faudra créer un attribut Size, qui a les propriété suivante pour pouvoir être éligible à la liaison vers un meta produit.

En efffet lorsque ous allez créer le meta produit, vous allez choisir les attributs qui vont le caractériser (Size), je dis « les » car vous pouvez créer un produti configurable selon plusieur attribut (size,color) par exemple.

Donc cet attribut doit avoir une portée globale, input type = dropdown (une liste déroulante avec les différentes déclinaisons), et être éligible à la création de produit configurable (Use To Create Configurable Product = Yes). Vous aurez une erreur lors de la création de produit configurable si l’attribut sélectionné ne correspond pas à ces 3 critères.

 

Ce qui est important à retenir :

-un meta produit en liaison avec les 3 produits concrets

-les 3 produits concrets à ajouter

-avoir un attribut éligible à la création de produit configurable

Chacun des 3 produits concret ne doit pas être visible individuellement !

Création du meta produit :

Par contre le meta produit a une visibilité normale (catalog, search),

le meta produit doit être Instock, en ce qui concerne l’inventaire

Une fois le meta produit créé, il vous faudra créer les produits concrets ! Si vous imaginiez que créer un produit à déclinaison était simple c’est raté. En fait créer un produit configurable est plus compliquéque la création d’un produit simple quoique plus rapide.

Création des produits concrets :

Maintenant que vous avez un produit meta, créer les produits concrets est plus rapide, vous rester dans l’édition du meta produit, dans l’onglet « Produits associés », il y a une section création de produit rapide.

 

C’est après que ça va devenir pratique, car les déclinaisons du produit configurable, sont très liées programmatiquement. Vous vous en apercevrez dans la création de produit rapide. En effet vous pouvez moduler le prix en fonction de la déclinaison individuellement pour chaque produit. Dans l’onglet produit associés, mette 1 dans la taille medium et 2 dans la taille large, n’oubliez pas de toujours vider le cache, voire réindexer les produits, puis allez sur le front de la boutique, et jouez avec la drop down liste.

Cette structuration a une influence directe sur la façon dont les produits s’affichent et se cherchent dans la boutique.

 

 

 

Notes aide mémoire pour Magento

Afficher les message d’erreur de Mgento.

Par défaut lorsque Magento vous affiche une erreur, il vous donne un nombre, mais vous pouvez fficher le message d’erreur sur la page web en spécifiant un paramètre.

 

 

Modifier le chemin dans la table core_config_data :

Trouver les enregistrements

select * from core_config_data where path like ‘%base%url%’;

inspiré de cette page :

 

updater les enregistrements :

update core_config_data set value = 'http://domainname/' where path = 'web/unsecure/base_url'; update core_config_data set value = 'http://domainname/' where path = 'web/secure/base_url';



Si Magento refait une redirection vers un vieux site Magento et ce malgré reboot serveur et changement url dans core_config_data, penser à nettoyer le cache dans var/cache !

Exit Mandrill voici Mailgun !

Mandrill a donc décidé de basculer Mandrill en payant après une période d’expérimentation,

mon compte a été désactivé. Mandrill ne propose pas de plan tarifaire adapté à mes usages

personnels.

J’ai vu sur Twitter que Mailgun était l’alternative freemium idéale pour remplacer Mandrill.

J’ai donc créé un compte, sur Mailgun.com, et j’ai paramétré mon domaine pour pouvoir envoyer des emails de façoon programmatique.

Attention ici je ne parle pas d’envois massifs d’email, mais d’envois d’email individuel, qu’on appelle email transactionnel. Mon utilisation consiste en l’envoi d’un mot de passe sur demande.

Pourquoi ne pas utilise la fonction mail() de php me direz vous? He bien pour des raison de délivrabilité tout simplement. Avec mail(), vous avez de grandes chances de voir votre email se retrouver dans la boite de SPAM.

Donc à partir de maintenant, je vous en conjure, procédez avec une méthode beaucoup plus professionnelle pour l’envoi de vos email que ce soit massif ou transactionnel.

Paramétrage de Mailgun

Après la créationd e votre compte, vous ajoutez votre nom de domaine à partir duquel vous indiquez

envoyer vos emails, car bien sûr c’est Mailgun qui envoit vos email et non votre domaine. Il faut donc entrer quelques informations indiquant que votre onm de domaine et Mailgun sont liés.

 

  1. Entrez votre nom de domaine
  2. paramétrer les deux DNS type TXT pour activer l’envoi d’email
  3. (optionnel) paramétrer le CNAME pour tracker les ouvertures de email, click et désinscription
  4. (optionnel) paramétrer les champs MX pour recevoir les email, mais là c’est vraiment optionnel

 

Il vous faudra attendre un moment (heures ou jours) pour que Mailgun prennen en compte ce paramétrage s’il est bien fait), voussserez prévenus par email.

En ce qui me concernent c’est chez mon registrar que j’ai rentré tous ces champs.

Envoi d’un email

Envoyer avec Mailgun un mail transactionnel se fait en quelques lignes, voici le tuto ici, ce qu’il faut faire c’est installer avec Composer (le gestionnaire de packages de Php) les librairies pour faire aussi simple.

Il y a deux façons d’envoyer un email, soit via l’API de Mailgun, soit en SMTP, ce dernier étant plus rapide et pour l’envoi en volume mensuel plus grand. L’API me convient car je n’ai pas de gros volumes.

Configuration de Jenkins pour lancer un job

Installer Ant

configurer le path dans Windows, Jenkins, et project !

le build file est téléchargé depuis Git !

fichier de configuration build.xml

Faire essais des outils de QA en ligne de commande un par un pour voir de quoi il retourne.

Affiner le fichier build.

Pour débugger le build cliquer dans le lien du build et cliquer sur console output

Integration continue avec Jenkins

L’intégration continue est le processus d’automatisation des tâches de build appelé  « Job » (le build ce sont toutes les étapes entre le code et la mise à disposition du logiciel pour la production.

 

Jenkins est un programme écrit en java qui va effectuer ces tâches.

Il suffit de télécharger l’archive .war de le mettre dans un répertoire et de le démarrer :

$ java -jar jenkins.war

 

Pour télécharger c’est ici.

Une fois télécharger il démarrer, vous pourrez y accéder au port 8080 de votre localhost

localhost:8080

La première chose à faire est de créer un projet et de configurer Jenkins.

Installer Git

Je suppose que vous avez déjà installé Gitbash, sinon allez le chercher sur Github.com.

Je suppose qu’on travaille avec Git et qu’on est sous Windows.

Jenkins vient avec des plugins, et Git n’est pas installé par défaut. Installez le en allant vers Jenkins > Administrer Jenkins > Gestions des plugins, puis sur l’onglet Disponible, cocher Git OAuth. Choisissez t élécharger et installer au prochain démarrage. Cochez la case redémarrer après download.

Sinon vous devrez redémarrer manuellement. (CTRL + C)

Ensuite aller dans Jenkins > Administrer Jenkins > Configuration du système, et mettez le chemin COMPLET vers git.exe.

Puis dans la partie projet, configurez Git en mettant le repository que vous pouvez copier coller dans votre compte github.com, entrez les login et mot de passe, normalement vous n’aurez pas de messsage. (il y a beaucoup de question sur cette étape, et j’avoue que j’ai un peu nagé, ce que je peux vous dire, c’est dans un premier temps de*’éviter de lancer Jenkins en tant que service Windows).

 

Ce que fait Jenkins c’est qu’à chque build il va télécharger depuis Github.com vos fichiers.

 

Liens utiles :

http://jenkins-php.org/  Vous dit quels logiciels à installer pour mettre dans Jenkins. Jenkins se configure avec un fichier xml appelé template. Un exemple de template est misà disposition pour un projet php typique.

 

 

Note: Pour lancer un programme php de partout sous Windows, il faut mettre le répertoire ou

se trouve le fivhier bat correspondant dans la variable $PATH.

Vider le cache de Firefox

La méthode ultime pour vider le cache DNS de Firefox !

Les webmasters ont besoin lors de leur migration de voir où en est le pointage des DNS.

Souvent on est confronté depuis son ordinateur de travail à l’ancienne version de son site après avoir pointé les DNS vers un nouveau serveur DNS.

Vous shootez une demande de soutien à votre hébergeur, la réponse est toujours du type attendez 24 à 48 heures.

Dans la plupart du temps, on n’a pas besoin d’attendre 24 heures que les DNS se propagent, c’est quelques heures.

Alors pourquoi en dépit de cela après 48 heurs, on est toujours sur l’ancienne version? voire une page d’erreur du nouveau serveur d’hébergement?

La solution ultime pour vider le cache DNS de Firefox

Si vous travaillez avec Firefox, cet explorateur possède un petit cache qu’on appelle cache DNS, qui mémorise l’information du DNS. C’est ce cahce qui pose problème, pour résoudre ce problème de cache, on vous conseille souvent de faire about:config dans la barre d’adresse, solution classique, (  faites une recherche dans Google, on vous expliquera ça) mais cela ne marche pas toujours !

Même en remettant network.dnsCacheEntries à 0 et network.dnsCacheExpiration à 0 aussi, cela ne marche pas !

J’en ai fait l’expérience, et j’ai dû pour résoudre ce problème en vidant l’historique de Firefox.

Allez dans Historique > supprimer historique récent, vous aurez une fenêtre pour cocher les élément à supprimer, vous pouvez laisser cookie et connexion active (cela vous évitera de vous relogger dansles services web, dans le cas échéant, videz tout !).

 

Et c’est une solution qui garantit de marcher !

Equivalent de Explode en javascript

Javascript Split et Join

 

Explode et Implode en PHP sont deux fonctions bien pratiques, qui permettent de transformer une chaine de caractères en tableau et vice et versa.

En javascript il existe des équivalents, split() et join() .

Leur usage est tout simple:

var str = "item1,item2,item3,item34";
str.split(',');

 

Ce qui va engendrer un tableau de type :

Array(item1, item2,item3,item4);

Et pour le cas de join() la syntaxe est la suivante

array tab = new Array(item1,item2);

var str = tab.join('.');

 

et on aura un string de type « item1.item2 »

 

serveur web apache php

Différence entre une zone et un domaine

Une zone est une portion d’un domaine.

Relation entre une zone et son parent : Par exemple sousdomaine.example.com a pour parent example.com

http://stackoverflow.com/questions/22440582/difference-between-a-dns-zone-and-dns-domain

Retour en haut