<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog AppliBox &#187; e-commerce</title>
	<atom:link href="http://www.creation-site-lyon.com/category/e-commerce/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.creation-site-lyon.com</link>
	<description>Création de sites internet à Lyon</description>
	<lastBuildDate>Thu, 12 Jan 2012 14:21:07 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Magento facturer une commande annulée</title>
		<link>http://www.creation-site-lyon.com/2011/09/16/magento-facturer-une-commande-annulee/</link>
		<comments>http://www.creation-site-lyon.com/2011/09/16/magento-facturer-une-commande-annulee/#comments</comments>
		<pubDate>Fri, 16 Sep 2011 09:38:11 +0000</pubDate>
		<dc:creator>Johann</dc:creator>
				<category><![CDATA[développement web]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Commande annulée]]></category>
		<category><![CDATA[Facturer]]></category>

		<guid isPermaLink="false">http://www.creation-site-lyon.com/?p=699</guid>
		<description><![CDATA[Il arrive parfois suite à des des problèmes de liaison avec la banque ou à une erreur du commerçant d&#8217;annuler une commande avant même de l&#8217;avoir facturer. Le problème est qu&#8217;il est impossible de facturer la commande une fois celle-ci annulée. On peut la renouveller, mais si le client à payer par carte bancaire, il]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2011%2F09%2F16%2Fmagento-facturer-une-commande-annulee%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2011%2F09%2F16%2Fmagento-facturer-une-commande-annulee%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Il arrive parfois suite à des des problèmes de liaison avec la banque ou à une erreur du commerçant d&#8217;annuler une commande avant même de l&#8217;avoir facturer.</p>
<p>Le problème est qu&#8217;il est impossible de facturer la commande une fois celle-ci annulée. On peut la renouveller, mais si le client à payer par carte bancaire, il ne sera pas possible de choisir ce même mode de paiement. Voici un bref tutorial pour pouvoir facturer une commande annulée dans Magento.</p>
<p>&nbsp;</p>
<p>Attention, testé sous V 1.4.1.1 (pour les autres versions le raisonnement est sans doute le même)</p>
<p>Premièrement, récupéré l&#8217;ID de la commande. Pour cela allez dans le backoffice, sur la commande en question et vérifier dans l&#8217;url de la page l&#8217;id ex :</p>
<p>http://www.monsite.com/index.php/admin/sales_order/view/order_id/<strong>6646</strong>/key/9f8445f7539e569d1a587c6944a27ebf/</p>
<p>L&#8217;id est représenté en gras.</p>
<p>&nbsp;</p>
<p>Une fois l&#8217;id en main direction la base de données.</p>
<p>Trois tables sont à modifier :</p>
<ul>
<li>sales_flat_order</li>
<li>sales_flat_order_grid</li>
<li>sales_flat_order_item</li>
</ul>
<p>Dans la table <strong>sales_flat_order </strong>vérifier les champs suivants pour l&#8217;id de la commande :</p>
<ul>
<li>state : le modifier en processing</li>
<li>status : le modifier en processing</li>
<li>%_canceled : Tous les champs en canceled doivent être passés à Null</li>
</ul>
<p>Dans la table <strong>sales_flat_order_grid </strong>vérifier les champs suivants pour l&#8217;id de la commande :</p>
<ul>
<li>status : le modifier en processing</li>
</ul>
<div>
<p>Dans la table <strong>sales_flat_order_item </strong>vérifier les champs suivants pour l&#8217;id de la commande:</p>
<ul>
<li>qty_canceled : le passer à Null</li>
</ul>
</div>
<div>Une fois ces opérations réalisées en base, le bouton facturer doit être revenu, et le status de la commande, doit être &laquo;&nbsp;En cours de traitement&nbsp;&raquo;.</div>
<div>En espérant que ce tuto vous sera utile !</div>
]]></content:encoded>
			<wfw:commentRss>http://www.creation-site-lyon.com/2011/09/16/magento-facturer-une-commande-annulee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Import Magento en arrière plan</title>
		<link>http://www.creation-site-lyon.com/2011/03/03/import-magento-en-arriere-plan/</link>
		<comments>http://www.creation-site-lyon.com/2011/03/03/import-magento-en-arriere-plan/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 16:01:10 +0000</pubDate>
		<dc:creator>fabrice</dc:creator>
				<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Magento]]></category>

		<guid isPermaLink="false">http://www.creation-site-lyon.com/?p=651</guid>
		<description><![CDATA[Parfois Magento peut être lent à s&#8217;éxécuter. C&#8217;est d&#8217;ailleurs le cas sur les profils avancés d&#8217;import , export&#8230; Pour palier à cet obstacle voilà un petit script, pouvant être lancé sans être connecté pour lancer l&#8217;import/export indépendamment de l&#8217;application. Attention à la sécurité tout de même&#8230; Pour lancer ce script : http://monsite.fr/monscript.php/?file=NomDuFichier.csv Vous devez avoir]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2011%2F03%2F03%2Fimport-magento-en-arriere-plan%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2011%2F03%2F03%2Fimport-magento-en-arriere-plan%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Parfois Magento peut être <strong>lent</strong> à s&#8217;éxécuter. C&#8217;est d&#8217;ailleurs le cas sur <strong>les profils avancés d&#8217;import</strong> , export&#8230;</p>
<p>Pour palier à cet obstacle voilà un <strong>petit script</strong>, pouvant être lancé sans être connecté pour lancer l&#8217;import/export indépendamment de l&#8217;application. Attention à la sécurité tout de même&#8230;</p>
<p>Pour lancer ce script :</p>
<p>http://monsite.fr/monscript.php/?file=<strong>NomDuFichier.csv</strong></p>
<p><strong>Vous devez avoir au préalable placer votre fichier d&#8217;import dans /var/import/ ou un chemin particulier en fonction de votre profil</strong></p>
<pre>
<div id="_mcePaste">require_once 'app/Mage.php';</div>
<div id="_mcePaste">umask(0);</div>
<div id="_mcePaste">Mage::app();</div>
<div id="_mcePaste">$profileId = 17; <strong>//Insérer ici le profil d'import /export ( Système &gt; Importer/Exporter &gt; Colonne Id )</strong></div>
<div id="_mcePaste">$filename = Mage::app()-&gt;getRequest()-&gt;getParam('files'); // set the filename that is to be imported - file needs to be present in var/import directory</div>
<div id="_mcePaste">if (!isset($filename))  {</div>
<div id="_mcePaste">   die("No file has been set!");</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">$logFileName= $filename.'.log';</div>
<div id="_mcePaste">$recordCount = 0;</div>
<div id="_mcePaste">Mage::log("Import Started",null,$logFileName);</div>
<div id="_mcePaste">$profile = Mage::getModel('dataflow/profile');</div>
<div id="_mcePaste">$userModel = Mage::getModel('admin/user');</div>
<div id="_mcePaste">$userModel-&gt;setUserId(0);</div>
<div id="_mcePaste">Mage::getSingleton('admin/session')-&gt;setUser($userModel);</div>
<div id="_mcePaste">if ($profileId) {</div>
<div id="_mcePaste">    $profile-&gt;load($profileId);</div>
<div id="_mcePaste">    if (!$profile-&gt;getId()) {</div>
<div id="_mcePaste">       Mage::getSingleton('adminhtml/session')-&gt;addError('The profile you are trying to save no longer exists');</div>
<div id="_mcePaste">    }</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">Mage::register('current_convert_profile', $profile);</div>
<div id="_mcePaste">$profile-&gt;run();</div>
<div id="_mcePaste">$batchModel = Mage::getSingleton('dataflow/batch');</div>
<div id="_mcePaste">if ($batchModel-&gt;getId()) {</div>
<div id="_mcePaste">      if ($batchModel-&gt;getAdapter()) {</div>
<div id="_mcePaste">      $batchId = $batchModel-&gt;getId();</div>
<div id="_mcePaste">      $batchImportModel = $batchModel-&gt;getBatchImportModel();</div>
<div id="_mcePaste">      $importIds = $batchImportModel-&gt;getIdCollection();</div>
<div id="_mcePaste">      $batchModel = Mage::getModel('dataflow/batch')-&gt;load($batchId);</div>
<div id="_mcePaste">      $adapter = Mage::getModel($batchModel-&gt;getAdapter());</div>
<div id="_mcePaste">      foreach ($importIds as $importId) {</div>
<div id="_mcePaste">        $recordCount++;</div>
<div id="_mcePaste">        try{</div>
<div id="_mcePaste">            $batchImportModel-&gt;load($importId);</div>
<div id="_mcePaste">            if (!$batchImportModel-&gt;getId()) {</div>
<div id="_mcePaste">                $errors[] = Mage::helper('dataflow')-&gt;__('Skip undefined row');</div>
<div id="_mcePaste">                continue;</div>
<div id="_mcePaste">            }</div>
<div id="_mcePaste">            $importData = $batchImportModel-&gt;getBatchData();</div>
<div id="_mcePaste">            try {</div>
<div id="_mcePaste">                $adapter-&gt;saveRow($importData);</div>
<div id="_mcePaste">            } catch (Exception $e) {</div>
<div id="_mcePaste">            Mage::log($e-&gt;getMessage(),null,$logFileName);</div>
<div id="_mcePaste">            continue;</div>
<div id="_mcePaste">            }</div>
<div id="_mcePaste">            if ($recordCount%20 == 0) {</div>
<div id="_mcePaste">                Mage::log($recordCount . ' - Completed!!',null,$logFileName);</div>
<div id="_mcePaste">            }</div>
<div id="_mcePaste">        } catch(Exception $ex) {</div>
<div id="_mcePaste">        Mage::log('Record# ' . $recordCount . ' - SKU = ' . $importData['sku']. ' - Error - ' . $ex-&gt;getMessage(),null,$logFileName);</div>
<div id="_mcePaste">    }</div>
<div id="_mcePaste">  }</div>
<div id="_mcePaste">        foreach ($profile-&gt;getExceptions() as $e) {</div>
<div id="_mcePaste">            Mage::log($e-&gt;getMessage(),null,$logFileName);</div>
<div id="_mcePaste">        }</div>
<div id="_mcePaste">   }</div>
<div id="_mcePaste">}</div>
</pre>
<p>Voilà pour votre prochain import <img src='http://www.creation-site-lyon.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  <strong>Enjoy</strong> !</p>
<p>Liens <strong>en rapport</strong> avec Magento</p>
<p><a href="http://www.creation-site-lyon.com/tag/magento/">http://www.creation-site-lyon.com/tag/magento/</a></p>
<p>Besoin d&#8217;un <strong>site magento</strong> ?</p>
<p><a title="Site Magento e-commerce ?" href="http://www.applibox.com">http://www.applibox.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.creation-site-lyon.com/2011/03/03/import-magento-en-arriere-plan/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Import groupé d&#8217;abonnés à la newsletter</title>
		<link>http://www.creation-site-lyon.com/2010/12/02/import-groupe-dabonnes-a-la-newsletter/</link>
		<comments>http://www.creation-site-lyon.com/2010/12/02/import-groupe-dabonnes-a-la-newsletter/#comments</comments>
		<pubDate>Thu, 02 Dec 2010 14:39:01 +0000</pubDate>
		<dc:creator>raphael</dc:creator>
				<category><![CDATA[développement web]]></category>
		<category><![CDATA[e-commerce]]></category>

		<guid isPermaLink="false">http://www.creation-site-lyon.com/?p=541</guid>
		<description><![CDATA[Suite au transfert de certaines de nos boutiques Ebox (notre CMS maison) vers Magento, nous avons eu besoin d&#8217;effectuer un import groupé d&#8217;abonnés aux newsletters, voici la marche à suivre : tout d&#8217;abord, copiez le fichier /app/code/core/Mage/Newsletter/Model/Subscriber.php dans le dossier /app/code/local/Mage/Newsletter/Model (que vous aurez précédemment créé). ouvrez ensuite ce fichier et modifiez la fonction subscribe()]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2010%2F12%2F02%2Fimport-groupe-dabonnes-a-la-newsletter%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2010%2F12%2F02%2Fimport-groupe-dabonnes-a-la-newsletter%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Suite au transfert de certaines de nos boutiques Ebox (notre CMS maison) vers Magento, nous avons eu besoin d&#8217;effectuer un import groupé d&#8217;abonnés aux newsletters, voici la marche à suivre :</p>
<ul>
<li>tout d&#8217;abord, copiez le fichier /app/code/<strong>core</strong>/Mage/Newsletter/Model/Subscriber.php dans le dossier /app/code/<strong>local</strong>/Mage/Newsletter/Model (que vous aurez précédemment créé).</li>
<li>ouvrez ensuite ce fichier et modifiez la fonction subscribe() de la manière suivante :
<ul>
<li>ajoutez un paramètre à la fonction : public function subscribe($email) devient public function subscribe($email,$sendConfirm=true)</li>
<li>et remplacez les lignes suivantes :<br />
<span style="color: #339966;"><code>if ($isConfirmNeed) {<br />
$this-&gt;sendConfirmationRequestEmail();<br />
} else {<br />
$this-&gt;sendConfirmationSuccessEmail();<br />
}</code></span><br />
par les lignes suivantes :<br />
<span style="color: #339966;"><code>if ($isConfirmNeed) {<br />
if ($sendConfirm) {<br />
$this-&gt;sendConfirmationRequestEmail();<br />
}<br />
} else {<br />
if ($sendConfirm) {<br />
$this-&gt;sendConfirmationSuccessEmail();<br />
}<br />
}</code></span></li>
<li>Sauvegardez le fichier et envoyez le sur votre serveur.</li>
</ul>
</li>
<li>Ensuite, il vous faut disposer d&#8217;un fichier CSV contenant toutes les adresses mail à insérer (chaque ligne du fichier doit correspondre à une et une seule adresse).</li>
<li>Uploadez ce fichier CSV sur votre serveur dans /var/import par exemple.</li>
<li>Créez ensuite un fichier import_newsletter.php que vous placerez à la racine de votre site et ajoutez-y le code suivant (en prenant soin de remplacer le chemin et le nom de votre fichier)  :<br />
<span style="color: #339966;"><code>&lt;?php<br />
require_once "app/Mage.php";<br />
Mage::app();<br />
$csvfile = "var/import/exportNewsletterRecipient.csv";<br />
$handle = fopen($csvfile,"r");<br />
if($handle == FALSE){<br />
throw new Exception("Unable to open ".$csvfile);<br />
}<br />
while (($subscribers = fgetcsv($handle)) !== FALSE) {<br />
Mage::getModel('newsletter/subscriber')-&gt;subscribe($subscribers[0], false);<br />
}<br />
fclose($handle);<br />
?&gt;<br />
</code><br />
</span></li>
<li>Ainsi ce petit script va importer tous les emails contenus dans votre CSV mais grâce à la petite modification en début de cet article, aucun mail d&#8217;inscription ne sera envoyé .</li>
</ul>
<p>En espérant que ce petit tutoriel vous aura servi, passez une bonne journée.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.creation-site-lyon.com/2010/12/02/import-groupe-dabonnes-a-la-newsletter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mise en ligne de nouveaux sites Magento</title>
		<link>http://www.creation-site-lyon.com/2010/11/29/mise-en-ligne-de-nouveaux-sites-magento/</link>
		<comments>http://www.creation-site-lyon.com/2010/11/29/mise-en-ligne-de-nouveaux-sites-magento/#comments</comments>
		<pubDate>Mon, 29 Nov 2010 10:29:01 +0000</pubDate>
		<dc:creator>raphael</dc:creator>
				<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.creation-site-lyon.com/?p=535</guid>
		<description><![CDATA[Nous avons mis en ligne récemment deux nouveaux sites Magento utilisant la fonctionnalité multisite du CMS : Geovie, une boutique e-commerce de solutions électroniques pour améliorer le bien-être et le quotidient, orientée B2C. Egcomm, un site internet B2B. De plus, une autre boutique e-commerce Magento a été mise en ligne : Leduc Pesage, un site]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2010%2F11%2F29%2Fmise-en-ligne-de-nouveaux-sites-magento%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2010%2F11%2F29%2Fmise-en-ligne-de-nouveaux-sites-magento%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Nous avons mis en ligne récemment deux nouveaux sites Magento utilisant la fonctionnalité multisite du CMS :</p>
<ul>
<li><a href="http://www.geovie.eu/" target="_blank">Geovie, une boutique e-commerce de solutions électroniques pour améliorer le bien-être et le quotidient, orientée B2C</a>.</li>
<li><a href="http://www.egcomm.fr/" target="_blank">Egcomm, un site internet B2B.</a></li>
</ul>
<p>De plus, une autre boutique e-commerce Magento a été mise en ligne :</p>
<ul>
<li><a href="http://www.leduc-pesage.com/" target="_blank">Leduc Pesage, un site de vente en ligne de matériel de pesage.</a></li>
</ul>
<p>N&#8217;hésitez pas à nous faire vos retours sur ces sites, donnez vos impressions, etc&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.creation-site-lyon.com/2010/11/29/mise-en-ligne-de-nouveaux-sites-magento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento Importer les clients avec mots de passe déjà cryptés en MD5</title>
		<link>http://www.creation-site-lyon.com/2010/11/24/magento-importer-les-clients-avec-mots-de-passe-deja-cryptes-en-md5/</link>
		<comments>http://www.creation-site-lyon.com/2010/11/24/magento-importer-les-clients-avec-mots-de-passe-deja-cryptes-en-md5/#comments</comments>
		<pubDate>Wed, 24 Nov 2010 14:24:41 +0000</pubDate>
		<dc:creator>Johann</dc:creator>
				<category><![CDATA[développement web]]></category>
		<category><![CDATA[e-commerce]]></category>

		<guid isPermaLink="false">http://www.creation-site-lyon.com/?p=528</guid>
		<description><![CDATA[Vous voulez migrer votre site ecommerce vers une plateforme Magento ? Et vous vous demandez comment importer vos clients ? L&#8217;idéal est de pouvoir utiliser l&#8217;assistant Import / Export customers déjà prévu dans Magento. Nous avions vu comment créer votre fichier CSV prêt à l&#8217;import via une requête SQL. Cependant cette méthode ne permettait pas]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2010%2F11%2F24%2Fmagento-importer-les-clients-avec-mots-de-passe-deja-cryptes-en-md5%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2010%2F11%2F24%2Fmagento-importer-les-clients-avec-mots-de-passe-deja-cryptes-en-md5%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Vous voulez migrer votre site <a title="Site Ecommerce Lyon" href="http://www.applibox.com/creation-site-ecommerce-lyon" target="_blank">ecommerce</a> vers une plateforme <a title="Site magento Lyon" href="http://www.applibox.com/agence-web-lyon-villefranche-sur-saone/etudes-de-cas" target="_blank">Magento</a> ? Et vous vous demandez comment importer vos clients ?</p>
<p>L&#8217;idéal est de pouvoir utiliser l&#8217;assistant Import / Export customers déjà prévu dans Magento. Nous avions vu comment <a title="Export Client Magento" href="http://www.creation-site-lyon.com/2010/06/16/import-des-clients-dune-plateforme-ecommerce-vers-une-plateforme-magento/" target="_blank">créer votre fichier CSV prêt à l&#8217;import via une requête SQ</a>L.</p>
<p>Cependant cette méthode ne permettait pas de récupérer des mots de passe déjà cryptés en MD5.</p>
<p>Nous avons finalement trouvé une solution toute simple permettant de garder vos mots de passe MD5 et évitant donc de réinitialiser tous les mots de passe !</p>
<p>Voici la solution, il suffit d&#8217;ajouter &laquo;&nbsp;:&nbsp;&raquo; après votre MD5.</p>
<p>Si l&#8217;on reprend notre exemple de requête SQL voici ce qu&#8217;il faut ajouter :</p>
<pre>SELECT
"base" AS website,
old_table_user.user_email AS email,
"Client" AS group_id,
old_table_user.first_name AS firstname,
old_table_user.last_name AS lastname,
<strong>CONCAT_WS(':',old_table_user.password,'')AS password_hash,</strong>
<strong>// aura pour effet d'ajouter ':' à votre md5 (ex : 1f3870be274f6c49b3e31a0c6728957f:)</strong>
old_table_user.first_name AS billing_firstname,
old_table_user.last_name AS billing_lastname,
old_table_user.address_1 AS billing_street_full,
old_table_user.city AS billing_city,
"FR" AS billing_country,
old_table_user.zip AS billing_postcode,
CONCAT_WS(' ',old_table_user.phone_1,old_table_user.phone_2) AS billing_telephone,
old_table_user.company AS billing_company,
old_table_user.fax AS billing_fax,
old_table_user.first_name AS shipping_firstname,
old_table_user.last_name AS shipping_lastname,
old_table_user.address_1 AS shipping_street_full,
old_table_user.city AS shipping_city,
"FR" AS shipping_country,
old_table_user.zip AS shipping_postcode,
CONCAT_WS(' ',old_table_user.phone_1,old_table_user.phone_2) AS shipping_telephone,
old_table_user.company AS shipping_company,4ème étape : Import le fichier CSV dans Magento
old_table_user.fax AS shipping_fax,
"default" AS "created_in",
"Client" AS "group",
old_table_user.newsletter AS "is_subscribed"
FROM old_table_user</pre>
<p>Reprennez ensuite la fin du tutoriel présent à cette adresse : <a href="http://www.creation-site-lyon.com/2010/06/16/import-des-clients-dune-plateforme-ecommerce-vers-une-plateforme-magento/">http://www.creation-site-lyon.com/2010/06/16/import-des-clients-dune-plateforme-ecommerce-vers-une-plateforme-magento/</a></p>
<p>En espérant que celà pourra vous être utile !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.creation-site-lyon.com/2010/11/24/magento-importer-les-clients-avec-mots-de-passe-deja-cryptes-en-md5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Installation, configuration et tests du module Atos sous Magento</title>
		<link>http://www.creation-site-lyon.com/2010/11/12/installation-configuration-et-tests-du-module-atos-sous-magento/</link>
		<comments>http://www.creation-site-lyon.com/2010/11/12/installation-configuration-et-tests-du-module-atos-sous-magento/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 11:01:55 +0000</pubDate>
		<dc:creator>raphael</dc:creator>
				<category><![CDATA[développement web]]></category>
		<category><![CDATA[e-commerce]]></category>

		<guid isPermaLink="false">http://www.creation-site-lyon.com/?p=522</guid>
		<description><![CDATA[Nous venons d&#8217;installer ce module sur une de nos boutiques Magento et nous nous sommes rapidement rendus compte qu&#8217;il s&#8217;agit là d&#8217;un des modules bancaires les plus compliqués à installer et à tester, c&#8217;est pourquoi un petit tutoriel explicatif sera le bienvenue pour tous. N.B. : la mise en place de ce module a été]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2010%2F11%2F12%2Finstallation-configuration-et-tests-du-module-atos-sous-magento%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2010%2F11%2F12%2Finstallation-configuration-et-tests-du-module-atos-sous-magento%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Nous venons d&#8217;installer <a href="http://www.magentocommerce.com/module/981/atos-sips-extension" target="_blank">ce module</a> sur une de <strong><a href="http://www.applibox.com/agence-web-lyon-villefranche-sur-saone/etudes-de-cas" target="_blank">nos boutiques Magento</a></strong> et nous nous sommes rapidement rendus compte qu&#8217;il s&#8217;agit là d&#8217;un des modules bancaires les plus compliqués à installer et à tester, c&#8217;est pourquoi un petit tutoriel explicatif sera le bienvenue pour tous.</p>
<p>N.B. : la mise en place de ce module a été effectuée sur une <strong>boutique Magento 1.4.0.1</strong>, il existe peut-être d&#8217;autres erreurs sur d&#8217;autres versions et inversement, nous avons peut-être rencontrés des erreurs inexistantes sur d&#8217;autres versions.</p>
<h2>Installation de l&#8217;extension</h2>
<p>Première partie, la plus simple, il s&#8217;agit de l&#8217;<strong>installation</strong> du module. Rendez vous sur <strong>http://www.nom_de_votre_site.com/downloader</strong>. Collez la clé suivante : <strong>magento-community/Mage_Atos</strong> puis cliquez sur &laquo;&nbsp;Install&nbsp;&raquo;. L&#8217;installation doit normalement se dérouler sans embuches.</p>
<h2>Récupération des fichiers de banque</h2>
<p>Ca se complique. Ici, deux choix s&#8217;offrent à vous :</p>
<ul>
<li>soit vous utilisez les fichiers de tests.</li>
<li>soit vous utilisez les fichiers fournis par votre banque.</li>
</ul>
<p>Voici notre conseil : en sachant que lors de la création de votre contrat de vente à distance (VAD), <strong>votre interface de paiement est en pré-production</strong>, aucun paiement ne sera débité, il est judicieux de <strong>commencer à travailler directement avec les fichiers fournis par votre banque</strong> afin de ne pas avoir à résoudre deux fois les mêmes problèmes (même si nous espérons que tous vos problèmes se résoudront en lisant ce post). Tant que votre interface de paiement est en pré-production, vous pourrez travailler comme si vous utilisiez les fichiers de test sauf que pour passer en production vous n&#8217;aurez presque rien à faire.</p>
<p>Dans les deux cas, il vous faut télécharger le <strong>kit bancaire</strong>. Dans notre cas, il s&#8217;agissait d&#8217;un contrat avec Sogenactif, le kit correspondant est <a href="http://www.sogenactif.com/index.php?id=46" target="_blank">disponible ici</a>.</p>
<p>Pour les autres (Mercanet,FIA-NET,Sherlocks), la banque envoie au client directement le kit d&#8217;installation.</p>
<p>Dans le kit, vous trouverez :</p>
<ul>
<li>un dossier <strong>bin</strong> contenant 6 fichiers binaires</li>
<li>un dossier <strong>logo</strong> rempli d&#8217;images</li>
<li>un dossier <strong>param</strong> avec les fameux fichiers de tests</li>
<li>un dossier <strong>sample</strong> avec des fichiers PHP et Perl</li>
<li>une note de version</li>
</ul>
<p>De plus, la banque vous envoie normalement une <strong>clé de décryptage</strong> ainsi qu&#8217;un <strong>logiciel</strong> permettant de générer votre <strong>certificat bancaire de production</strong> (équivalent au fichier de test certif.fr.014213245611111) .</p>
<p>Attention, le premier problème que nous avons rencontré a été <strong>la récupération de ce logiciel</strong>. En effet, il s&#8217;agit d&#8217;un fichier en .exe et la plupart des systèmes de messagerie interdise totalement l&#8217;envoi et la réception de ce type de fichier (car 80% des .exe circulant par mails sont des virus). Il vous faut donc fournir à la banque une adresse mail Free, Yahoo ou Hotmail car ce sont les seuls qui permettent encore la réception de ce type de fichier.</p>
<p>Une fois votre fichier <strong>certif généré grâce au logiciel et à la clé de décryptage</strong>, renommez le en <strong>certif.fr.votre_ID_bancaire</strong> (identifiant que vous avez du recevoir avec votre clé de décryptage).</p>
<p>Vous avez maintenant tout ce qu&#8217;il vous faut pour commencer la configuration de votre interface bancaire.</p>
<h2>Transfert des fichiers</h2>
<p>Renommez le fichier <strong>parmcom.XXXXXXXXX</strong> (situé dans le dossier <strong>param</strong> du kit) en <strong>parmcom.votre_ID_bancaire</strong> (comme pour le certif.fr) puis éditez-le.</p>
<ul>
<li>Après <strong>AUTO_RESPONSE_URL!</strong>, rentrez la chaine suivante : <strong>http://www.nom_de_votre_site.com/atos/standard/automatic/!</strong></li>
<li>Après <strong>CANCEL_URL!</strong>, rentrez la chaine suivante :<strong> http://www.nom_de_votre_site.com/atos/standard/cancel/!</strong></li>
<li>Et enfin après <strong>RETURN_URL!</strong>, rentrez : <strong>http://www.nom_de_votre_site.com/atos/standard/normal/!</strong></li>
<li>Vous pouvez également remplacer merchant.gif (juste après LOGO!) par l&#8217;adresse du logo de votre site qui s&#8217;affichera sur l&#8217;interface de paiement.</li>
</ul>
<p>Sauvegardez le tout.</p>
<p>Connectez vous maintenant en FTP à votre site et créez un dossier <strong>/lib/atos</strong>.</p>
<p>Uploadez maintenant votre fichier <strong>certif.fr.</strong><strong>votre_ID_bancaire</strong> (généré à partir du logiciel et de la clé), votre fichier <strong>parmcom.</strong><strong>votre_ID_bancaire</strong> (que vous venez d&#8217;éditer) ainsi que le fichier <strong>parmcom.sogenactif</strong> (ou parmcom.votre_banque) contenu dans le dossier <strong>param</strong> du kit de test.</p>
<p>Uploadez ensuite les fichiers <strong>request</strong> et <strong>response</strong> contenus dans le dossier <strong>bin</strong> du kit de test mais attention, étant donné qu&#8217;il s&#8217;agit de fichiers binaires, il vous faut les <strong>transférer en binaire</strong>. Exemple : dans <strong>FileZilla</strong>, cliquez sur <strong>Transfert &gt; Type de transfert et choisissez Binaire</strong>. N&#8217;oubliez pas de remettre la configuration par défaut une fois le transfert terminé.</p>
<h2>Configuration</h2>
<p>Dans le <strong>Back Office</strong> de votre boutique, rendez vous dans <strong>Système &gt; Configuration &gt; Ventes &gt; Modes de paiement &gt; Atos / Sips</strong>.</p>
<p>Activer le mode de paiement, votre identifiant de marchand doit se trouver dans la liste déroulante ID Marchand.</p>
<p>Pour le champ &laquo;&nbsp;Binaire pour construire la requête&nbsp;&raquo; rentrez le chemin vers le fichier binaire request. Attention il s&#8217;agit là du chemin à partir de la racine du serveur, ex : path/lib/atos/request. Si vous ne le connaissez pas, contactez l&#8217;administrateur de votre serveur. Faîtes de même pour le fichier response avec le champ suivant.</p>
<p>Laissez vide le champ &laquo;&nbsp;Fichier pathfile&nbsp;&raquo;. Laissez la configuration normale pour le reste sauf si vous souhaitez changer les état de commandes etc&#8230;</p>
<p>Sauvegardez la configuration et normalement votre boutique doit être configurée et prête à accepter des paiements.</p>
<h2>Problèmes rencontrés et solutions</h2>
<p>Malheureusement après les étapes précédentes, il est très probable que, comme beaucoup d&#8217;utilisateurs, vous rencontriez une pléthore d&#8217;erreurs.</p>
<p>Voici la liste des principales erreurs et comment les résoudre :</p>
<h3>Impossible to execute binary file &#8211; Set correct chmod</h3>
<p>Vos fichiers binaires <strong>request</strong> et <strong>response</strong> n&#8217;ont pas les droits suffisants pour être exécutés.</p>
<p>Connectez vous en SSH à votre site, rendez vous dans votre dossier <strong>/lib/atos</strong> et effectuez les commandes suivantes :</p>
<pre>chmod 755 request
chmod 755 response</pre>
<h3>Boucle infinie sur la page /atos/standard/redirect/</h3>
<p>4 possibilités :</p>
<ul>
<li>votre serveur est en 64 bits et il faut qu&#8217;il puisse lire les fichiers binaires qui sont 32 bits, il vous faut vous connecter en SSH et exécuter la commande suivante :
<pre>aptitude install ia32-libs</pre>
</li>
<li>vous êtes sous OVH, il vous faut télécharger les fichiers binaires spécial OVH <a href="http://guides.ovh.com/MiseaJourKitAtos" target="_blank">disponibles ici</a></li>
<li>la version de vos fichiers binaires ne correspond pas à votre noyau. Connectez vous en SSH et exécuter la commande :
<pre>uname -r</pre>
<p>Cette commande vous donne la version de votre noyau, il faut ensuite uploadez les fichiers binaires correspondant à cette version (ex: la commande vous donne 2.6.XX, uploadez les fichiers binaires request_2.6.XX et response_2.6.XX) avant des les renommer en response et request.</li>
<li>votre serveur n&#8217;est pas en 64 bits, vos fichiers binaires correspondent à votre kernel et vous n&#8217;êtez pas chez OVH : vérifiez les droits d&#8217;exécution qu&#8217;ont les utilisateurs de votre serveur et quel utilisateur est propriétaire des fichiers binaires. En effet, nous avons rencontré ce problème et l&#8217;utilisateur propriétaire des fichiers binaires n&#8217;avait pas les droits d&#8217;exécution de fichiers binaires.</li>
</ul>
<h3>Vous n&#8217;arrivez pas à accéder au serveur de la banque</h3>
<p>L&#8217;extension génère normalement un fichier pathfile.votre_identifiant_banquaire dans /lib/atos.</p>
<p>Editez-le et en dessous de &laquo;&nbsp;Fichiers des paramètres communs&nbsp;&raquo;, remplacez le chemin après F_DEFAULT! (ex : /var/www/&#8230;) par :</p>
<pre>lib/atos/parmcom.sogenactif! (remplacez sogenactif par le nom de votre banque)</pre>
<h3>Error reading certificate file lors du retour de la banque</h3>
<p>L&#8217;extension génère un second fichier nommé pathfile.parmcom.votre_identifiant_banquaire dans /lib/atos.</p>
<p>Editez-le et, de la même manière que pour le fichier pathfile.votre_ID, remplacez le chemin après F_DEFAULT! par :</p>
<pre> lib/atos/parmcom.sogenactif!</pre>
<h3>Ecran jaune &laquo;&nbsp;Transaction invalide&nbsp;&raquo;</h3>
<p>Si vous obtenez cette page, il est fort possible que l&#8217;URL se termine en /demo/callpayment. Cela signifie que vous utilisez les fichiers de test et pas les fichiers de production, rendez-vous à la partie &laquo;&nbsp;Récupération des fichiers&nbsp;&raquo; en haut de ce post pour résoudre le problème.</p>
<h3>Les notifications de la banque n&#8217;arrivent pas</h3>
<p>Plusieurs solutions :</p>
<ul>
<li>soit les URL indiquées dans le fichier parmcom.votre_ID sont incorrectes.</li>
<li>soit un .htaccess empêche la banque d&#8217;accéder à votre boutique.</li>
</ul>
<h2>Conclusion</h2>
<p>Normalement, vous devriez maintenant pouvoir effectuer des paiements de test avec vos certificats de production en utilisant le module Atos.</p>
<p>Une fois vos tests terminés, il vous suffit d&#8217;envoyer votre PV de recette à votre banque afin qu&#8217;il passe votre interface de paiement en production.</p>
<p>En espérant que cet article vous aidera dans la mise en place du module Atos sous Magento.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.creation-site-lyon.com/2010/11/12/installation-configuration-et-tests-du-module-atos-sous-magento/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Supprimer les commandes de test sur Magento</title>
		<link>http://www.creation-site-lyon.com/2010/10/22/supprimer-les-commandes-de-test-sur-magento/</link>
		<comments>http://www.creation-site-lyon.com/2010/10/22/supprimer-les-commandes-de-test-sur-magento/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 12:01:56 +0000</pubDate>
		<dc:creator>raphael</dc:creator>
				<category><![CDATA[développement web]]></category>
		<category><![CDATA[e-commerce]]></category>

		<guid isPermaLink="false">http://www.creation-site-lyon.com/?p=479</guid>
		<description><![CDATA[Il arrive souvent, une fois que votre site internet est terminé, vos modules installés et votre design intégré, qu&#8217;avant de mettre en ligne, vous souhaitiez disposer d&#8217;un site propre, sans commandes, clients, ni aucune autre trace des tests que vous auriez pu effectuer. En cherchant un peu (et vous avez chercher puisque vous êtes arriver]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2010%2F10%2F22%2Fsupprimer-les-commandes-de-test-sur-magento%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2010%2F10%2F22%2Fsupprimer-les-commandes-de-test-sur-magento%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Il arrive souvent, une fois que <a href="http://www.applibox.com/creation-site-internet-lyon" target="_blank"><strong>votre site internet </strong></a>est terminé, vos <strong>modules installés</strong> et votre <a href="http://www.applibox.com/l-agence/nos-competences" target="_blank"><strong>design intégré</strong></a>, qu&#8217;avant de mettre en ligne, vous souhaitiez disposer d&#8217;un site propre, sans commandes, clients, ni aucune autre trace des tests que vous auriez pu effectuer.</p>
<p>En cherchant un peu (et vous avez chercher puisque vous êtes arriver ici <img src='http://www.creation-site-lyon.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ), vous avez pu tomber sur <strong>de multiples méthodes</strong> permettant de supprimer ces fameuses commandes de test (installation de module, scripts SQL tous différents les uns des autres).</p>
<p>Afin d&#8217;éclaircir un peu les choses, voici les <strong>scripts qui nous permettent de supprimer toutes traces de nos tests</strong> avant une mise en ligne. Attention cependant, depuis la version 1.4.1.0 de <strong>Magento</strong>, la structure de la base de données à changer, veillez donc à bien choisir le <strong>script adapté à votre version de Magento</strong>.</p>
<p>Avant toute chose, pensez à <strong>faire une sauvegarde de votre base de données</strong>. En effet, même si nous avons testé ces scripts, il vaut mieux prévenir que guérir, une sauvegarde de votre base ne vous prendra que 5 minutes et pourrait vous faire gagner des heures si une erreur survient.</p>
<p>Rendez vous donc dans votre <strong>interface de gestion de base de données</strong> (PhpMyAdmin &amp; Co), selectionnez votre base, <strong>faîtes en une sauvegarde</strong> (soit par un export SQL, soit par une copie dans une autre base à vous de choisir) puis cliquez sur &laquo;&nbsp;SQL&nbsp;&raquo;. Choisissez ensuite le script adapté ci-dessous et exécutez le.</p>
<h3>Magento 1.4.1.X (testé en 1.4.1.1) :</h3>
<p><span style="color: #339966;"><code>-- Reset Magento TEST Data<br />
SET FOREIGN_KEY_CHECKS=0;<br />
-- reset dashboard search queries<br />
TRUNCATE `catalogsearch_query`;<br />
ALTER TABLE `catalogsearch_query` AUTO_INCREMENT=1;<br />
-- reset sales order info<br />
TRUNCATE `sales_flat_creditmemo`;<br />
TRUNCATE `sales_flat_creditmemo_comment`;<br />
TRUNCATE `sales_flat_creditmemo_grid`;<br />
TRUNCATE `sales_flat_creditmemo_item`;<br />
TRUNCATE `sales_flat_invoice`;<br />
TRUNCATE `sales_flat_invoice_comment`;<br />
TRUNCATE `sales_flat_invoice_grid`;<br />
TRUNCATE `sales_flat_invoice_item`;<br />
TRUNCATE `sales_flat_order`;<br />
TRUNCATE `sales_flat_order_address`;<br />
TRUNCATE `sales_flat_order_grid`;<br />
TRUNCATE `sales_flat_order_item`;<br />
TRUNCATE `sales_flat_order_payment`;<br />
TRUNCATE `sales_flat_order_status_history`;<br />
TRUNCATE `sales_flat_quote`;<br />
TRUNCATE `sales_flat_quote_address`;<br />
TRUNCATE `sales_flat_quote_address_item`;<br />
TRUNCATE `sales_flat_quote_item`;<br />
TRUNCATE `sales_flat_quote_item_option`;<br />
TRUNCATE `sales_flat_quote_payment`;<br />
TRUNCATE `sales_flat_quote_shipping_rate`;<br />
TRUNCATE `sales_flat_shipment`;<br />
TRUNCATE `sales_flat_shipment_comment`;<br />
TRUNCATE `sales_flat_shipment_grid`;<br />
TRUNCATE `sales_flat_shipment_item`;<br />
TRUNCATE `sales_flat_shipment_track`;<br />
TRUNCATE `sales_invoiced_aggregated`;<br />
TRUNCATE `sales_invoiced_aggregated_order`;<br />
TRUNCATE `sales_order_aggregated_created`;<br />
TRUNCATE `sendfriend_log`;<br />
TRUNCATE `tag`;<br />
TRUNCATE `tag_relation`;<br />
TRUNCATE `tag_summary`;<br />
TRUNCATE `wishlist`;<br />
TRUNCATE `log_quote`;<br />
TRUNCATE `report_event`;<br />
ALTER TABLE `sales_flat_creditmemo` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_creditmemo_comment` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_creditmemo_grid` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_creditmemo_item` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_invoice` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_invoice_comment` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_invoice_grid` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_invoice_item` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_order` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_order_address` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_order_grid` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_order_payment` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_order_status_history` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_quote_payment` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_quote_shipping_rate` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_shipment` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_shipment_comment` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_shipment_grid` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_shipment_item` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_shipment_track` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_invoiced_aggregated` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_invoiced_aggregated_order` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_order_aggregated_created` AUTO_INCREMENT=1;<br />
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1;<br />
ALTER TABLE `tag` AUTO_INCREMENT=1;<br />
ALTER TABLE `tag_relation` AUTO_INCREMENT=1;<br />
ALTER TABLE `tag_summary` AUTO_INCREMENT=1;<br />
ALTER TABLE `wishlist` AUTO_INCREMENT=1;<br />
ALTER TABLE `log_quote` AUTO_INCREMENT=1;<br />
ALTER TABLE `report_event` AUTO_INCREMENT=1;<br />
SET FOREIGN_KEY_CHECKS=1;</code></span></p>
<h3>Magento 1.4.0.X (testé) et 1.3.X.X (en théorie, non testé) :</h3>
<p><span style="color: #339966;"><code>SET FOREIGN_KEY_CHECKS=0;</code></span></p>
<p><span style="color: #339966;">TRUNCATE `sales_order`;<br />
TRUNCATE `sales_order_datetime`;<br />
TRUNCATE `sales_order_decimal`;<br />
TRUNCATE `sales_order_entity`;<br />
TRUNCATE `sales_order_entity_datetime`;<br />
TRUNCATE `sales_order_entity_decimal`;<br />
TRUNCATE `sales_order_entity_int`;<br />
TRUNCATE `sales_order_entity_text`;<br />
TRUNCATE `sales_order_entity_varchar`;<br />
TRUNCATE `sales_order_int`;<br />
TRUNCATE `sales_order_text`;<br />
TRUNCATE `sales_order_varchar`;<br />
TRUNCATE `sales_flat_quote`;<br />
TRUNCATE `sales_flat_quote_address`;<br />
TRUNCATE `sales_flat_quote_address_item`;<br />
TRUNCATE `sales_flat_quote_item`;<br />
TRUNCATE `sales_flat_quote_item_option`;<br />
TRUNCATE `sales_flat_order_item`;<br />
TRUNCATE `sendfriend_log`;<br />
TRUNCATE `tag`;<br />
TRUNCATE `tag_relation`;<br />
TRUNCATE `tag_summary`;<br />
TRUNCATE `wishlist`;<br />
TRUNCATE `log_quote`;<br />
TRUNCATE `report_event`;</span></p>
<p><span style="color: #339966;">ALTER TABLE `sales_order` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_order_datetime` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_order_decimal` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_order_entity` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_order_entity_datetime` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_order_entity_decimal` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_order_entity_int` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_order_entity_text` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_order_entity_varchar` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_order_int` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_order_text` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_order_varchar` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1;<br />
ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1;<br />
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1;<br />
ALTER TABLE `tag` AUTO_INCREMENT=1;<br />
ALTER TABLE `tag_relation` AUTO_INCREMENT=1;<br />
ALTER TABLE `tag_summary` AUTO_INCREMENT=1;<br />
ALTER TABLE `wishlist` AUTO_INCREMENT=1;<br />
ALTER TABLE `log_quote` AUTO_INCREMENT=1;<br />
ALTER TABLE `report_event` AUTO_INCREMENT=1;</span></p>
<p><span style="color: #339966;">&#8211; reset customers<br />
TRUNCATE `customer_address_entity`;<br />
TRUNCATE `customer_address_entity_datetime`;<br />
TRUNCATE `customer_address_entity_decimal`;<br />
TRUNCATE `customer_address_entity_int`;<br />
TRUNCATE `customer_address_entity_text`;<br />
TRUNCATE `customer_address_entity_varchar`;<br />
TRUNCATE `customer_entity`;<br />
TRUNCATE `customer_entity_datetime`;<br />
TRUNCATE `customer_entity_decimal`;<br />
TRUNCATE `customer_entity_int`;<br />
TRUNCATE `customer_entity_text`;<br />
TRUNCATE `customer_entity_varchar`;<br />
TRUNCATE `log_customer`;<br />
TRUNCATE `log_visitor`;<br />
TRUNCATE `log_visitor_info`;</span></p>
<p><span style="color: #339966;">ALTER TABLE `customer_address_entity` AUTO_INCREMENT=1;<br />
ALTER TABLE `customer_address_entity_datetime` AUTO_INCREMENT=1;<br />
ALTER TABLE `customer_address_entity_decimal` AUTO_INCREMENT=1;<br />
ALTER TABLE `customer_address_entity_int` AUTO_INCREMENT=1;<br />
ALTER TABLE `customer_address_entity_text` AUTO_INCREMENT=1;<br />
ALTER TABLE `customer_address_entity_varchar` AUTO_INCREMENT=1;<br />
ALTER TABLE `customer_entity` AUTO_INCREMENT=1;<br />
ALTER TABLE `customer_entity_datetime` AUTO_INCREMENT=1;<br />
ALTER TABLE `customer_entity_decimal` AUTO_INCREMENT=1;<br />
ALTER TABLE `customer_entity_int` AUTO_INCREMENT=1;<br />
ALTER TABLE `customer_entity_text` AUTO_INCREMENT=1;<br />
ALTER TABLE `customer_entity_varchar` AUTO_INCREMENT=1;<br />
ALTER TABLE `log_customer` AUTO_INCREMENT=1;<br />
ALTER TABLE `log_visitor` AUTO_INCREMENT=1;<br />
ALTER TABLE `log_visitor_info` AUTO_INCREMENT=1;</span></p>
<p><span style="color: #339966;">&#8211; Reset all ID counters<br />
TRUNCATE `eav_entity_store`;<br />
ALTER TABLE  `eav_entity_store` AUTO_INCREMENT=1;</span></p>
<p><span style="color: #339966;">SET FOREIGN_KEY_CHECKS=1;</span></p>
<p>Si vous rencontrez des problèmes pour exécuter ces commandes, <strong>supprimez les lignes de commentaires</strong>.</p>
<p>En espérant que ce petit tutoriel vous aura aider pour la <a href="http://www.applibox.com/creation-site-ecommerce-lyon" target="_blank"><strong>création de votre site ecommerce</strong></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.creation-site-lyon.com/2010/10/22/supprimer-les-commandes-de-test-sur-magento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Résoudre les problèmes de compatibilité entre Spplus &amp; Magento 1.4</title>
		<link>http://www.creation-site-lyon.com/2010/09/27/resoudre-les-problemes-de-compatibilite-entre-spplus-magento-1-4/</link>
		<comments>http://www.creation-site-lyon.com/2010/09/27/resoudre-les-problemes-de-compatibilite-entre-spplus-magento-1-4/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 12:03:30 +0000</pubDate>
		<dc:creator>raphael</dc:creator>
				<category><![CDATA[développement web]]></category>
		<category><![CDATA[e-commerce]]></category>

		<guid isPermaLink="false">http://www.creation-site-lyon.com/?p=451</guid>
		<description><![CDATA[Comme certains d&#8217;entre vous se sont déjà rendus compte, le module banquaire de la Caisse d&#8217;Epargne Spplus n&#8217;est pas encore compatible avec les versions 1.4 de Magento (notamment les 1.4.1.X). Afin de résoudre les problèmes assez importants causés par cette incompatibilité (notifications qui n&#8217;arrivent pas, facturation automatique qui n&#8217;envoie pas de mails&#8230;), nous avions au]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2010%2F09%2F27%2Fresoudre-les-problemes-de-compatibilite-entre-spplus-magento-1-4%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2010%2F09%2F27%2Fresoudre-les-problemes-de-compatibilite-entre-spplus-magento-1-4%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Comme certains d&#8217;entre vous se sont déjà rendus compte, le <a href="http://www.magentocommerce.com/magento-connect/SeL/extension/151/spplus-extension" target="_blank">module banquaire de la Caisse d&#8217;Epargne Spplus</a> n&#8217;est <strong>pas encore compatible avec les versions 1.4 de Magento</strong> (notamment les 1.4.1.X).</p>
<p>Afin de résoudre les problèmes assez importants causés par cette incompatibilité (notifications qui n&#8217;arrivent pas, facturation automatique qui n&#8217;envoie pas de mails&#8230;), nous avions au départ prévu de faire un développement pour mettre le module Spplus à jour afin qu&#8217;il soit compatible avec les versions 1.4 de Magento.</p>
<p>Cependant, nous avons finalement réussi à trouver <strong>les manipulations à faire pour résoudre les bugs</strong> :</p>
<ul>
<li>tout d&#8217;abord, depuis le 12 septembre 2010, <strong>les serveurs de notification Spplus ont changé</strong>, il faut donc autoriser ces nouveaux serveurs à accéder à votre site. Pour ce faire, ouvrer le fichier <strong>/app/code/community/Mage/Spplus/etc/config.xml</strong> et trouvez les lignes suivantes (lignes 276/277 environ) :</li>
<p><code><br />
<span style="color: #339966;">&lt;authorized_ip&gt;<br />
&lt;value&gt;<br />
</span></code></p>
<p><span style="color: #333333;">E</span>n dessous de ces deux balises se trouve une longue liste d&#8217;adresses IP qui correspondent en fait aux adresses IP qui sont autorisées par Spplus à accéder à votre site. Rajoutez les deux <strong>nouvelles adresses IP des serveurs de notifications</strong> à la suite de cette liste : <strong>91.135.180.215 et 91.135.184.215</strong>. Suivant votre version de Spplus, il est possible qu&#8217;une de ces deux adresses soit déjà dans la liste.</p>
<li> Cependant, même si les serveurs de notifications sont désormais autorisés, la manipulation ne s&#8217;arrête pas là! En effet, pour nous ne savons quelle raison, il faut, <strong>pour faire fonctionner Spplus avec Magento 1.4</strong>, créer le fichier <strong>/var/log/spplus.log</strong> (vous pouvez aussi tout simplement <strong>activer les logs dans Système &gt; Configuration &gt; Avancé &gt; Développeur &gt; Paramètres de log</strong>). Une fois ce fichier créé, et comme par magie, Spplus fonctionnera de nouveau avec votre boutique en ligne.</li>
</ul>
<p>Un second problème rencontré lors de l&#8217;utilisation de SPPLUS avec Magento 1.4 est l&#8217;erreur &laquo;&nbsp;Problème lors du paiement, le champ est incorrect&nbsp;&raquo; lors de l&#8217;arrivée sur la page de Spplus. Tout d&#8217;abord, commencez par vérifier les valeurs de tous les champs en activant le mode Test de Spplus. De notre côté, l&#8217;erreur venait du champ &laquo;&nbsp;Devise&nbsp;&raquo; qui avait pour valeur &laquo;&nbsp;Pas trouvé&nbsp;&raquo;. Pour résoudre cette erreur, ouvrez le fichier <strong>/app/code/community/Mage/Spplus/Model/Method/Spplus.php</strong> et modifiez la fonction getDevise() (lignes  368 à 377). Remplacez le ‘return &laquo;&nbsp;Pas trouvé&nbsp;&raquo; ‘ par ‘return &laquo;&nbsp;978″ ‘ (qui correspond au code de l&#8217;Euro) et c&#8217;est terminé !</p>
<p>En espérant que ce petit tuto vous aura servi à remettre en route votre <a href="http://www.applibox.com/creation-site-ecommerce-lyon" target="_blank"><strong>boutique e-commerce Magento</strong></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.creation-site-lyon.com/2010/09/27/resoudre-les-problemes-de-compatibilite-entre-spplus-magento-1-4/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Encore plus de vitesse sous Magento !</title>
		<link>http://www.creation-site-lyon.com/2010/09/08/encore-plus-de-vitesse-sous-magento/</link>
		<comments>http://www.creation-site-lyon.com/2010/09/08/encore-plus-de-vitesse-sous-magento/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 12:21:23 +0000</pubDate>
		<dc:creator>raphael</dc:creator>
				<category><![CDATA[développement web]]></category>
		<category><![CDATA[e-commerce]]></category>

		<guid isPermaLink="false">http://www.creation-site-lyon.com/?p=414</guid>
		<description><![CDATA[Suite à notre article concernant la vitesse sous Magento, nous avons approfondi notre travail sur l&#8217;optimisation des sites Magento dans le but d&#8217;améliorer encore la vitesse de chargement de nos boutiques e-commerce. Voici donc la liste des optimisations possibles pour améliorer la vitesse : Tout d&#8217;abord, nous vous conseillons d&#8217;installer l&#8217;extension Fooman Speedster. Ce module]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2010%2F09%2F08%2Fencore-plus-de-vitesse-sous-magento%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2010%2F09%2F08%2Fencore-plus-de-vitesse-sous-magento%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Suite à notre article concernant <a href="http://www.creation-site-lyon.com/2010/05/12/besoin-de-vitesse-sous-magento/" target="_blank">la vitesse sous Magento</a>, nous avons approfondi notre travail sur l&#8217;<strong>optimisation des sites Magento</strong> dans le but d&#8217;améliorer encore la vitesse de chargement de nos boutiques e-commerce.</p>
<p>Voici donc la liste des optimisations possibles pour améliorer la vitesse :</p>
<ol>
<li>Tout d&#8217;abord, nous vous conseillons d&#8217;installer l&#8217;extension <a href="http://www.magentocommerce.com/magento-connect/FOOMAN/extension/457/fooman-speedster" target="_blank">Fooman Speedster</a>. Ce module va vous permettre de <strong>compresser vos CSS et vos JS</strong> afin d&#8217;améliorer le temps de chargement de vos pages. Pour installer cette extension, il vous suffit de suivre les instructions indiquées sur la page de l&#8217;extension. Ces instructions sont en anglais mais si vous avez besoin d&#8217;aide n&#8217;hésitez pas à nous contacter, nous serons ravis de vous donner un coup de main.</li>
<li>Ensuite, vous pouvez <strong>activer le module Expires d&#8217;Apache</strong>, qui permet de définir la date d&#8217;expiration du contrôle de cache dans les entête HTTP de réponse du serveur. Pour se faire, ouvrez le fichier <strong>.htaccess</strong> à la racine de votre site Magento et cherchez les lignes suivantes :<code> </code><code><span style="color: #888888;">&lt;<span style="color: #339966;">IfModule mod_expires.c&gt;<br />
</span></span> </code><span style="color: #339966;"><code>############################################<br />
## Add default Expires header<br />
## http://developer.yahoo.com/performance/rules.html#expires</code></span><span style="color: #339966;"><code>ExpiresDefault "access plus 1 year"</code></span></p>
<p><span style="color: #339966;"><code>&lt;/IfModule&gt;</code></span></p>
<p>Remplacez les par :</p>
<p><span style="color: #339966;"><code>&lt;IfModule mod_expires.c&gt;</code></span></p>
<p><span style="color: #339966;"><code>############################################<br />
## Add default Expires header<br />
## http://developer.yahoo.com/performance/rules.html#expires</code></span></p>
<p><span style="color: #339966;"><code>ExpiresActive "On"<br />
ExpiresDefault "access plus 1 month"</code></span></p>
<p><code><span style="color: #339966;">&lt;/IfModule&gt;</span><br />
</code></li>
<li>Pour améliorer la vitesse d&#8217;exécution de PHP, vous pouvez <strong>utiliser un accélérateur PHP</strong> comme APC. Si APC est activé sur votre serveur, ouvrez votre fichier <strong>app/etc/local.xml</strong>. Entre les balises &lt;global&gt; et &lt;/global&gt; ajoutez le code suivant :<span style="color: #339966;"><code>&lt;cache&gt;<br />
&lt;backend&gt;apc&lt;/backend&gt;<br />
&lt;prefix&gt;MAGE_&lt;/prefix&gt;<br />
&lt;/cache&gt;</code></span></p>
<p>Après modification, n&#8217;oubliez pas de rafraîchir votre cache Magento pour que les modifications soient prises en compte. D&#8217;après certains utilisateurs de Magento, eAccelerator serait plus performant que APC mais nous n&#8217;avons pas encore eu l&#8217;occasion de le tester, nous vous tiendrons au courant dès que nous aurons plus d&#8217;informations.</li>
<li>Par ailleurs, du côté serveur, vous pouvez <strong>mettre en place le cache des requêtes. </strong>Vérifiez d&#8217;abord si le cache des requêtes est activé en exécutant la requête suivante sur votre base de données :<span style="color: #339966;"><code>SHOW VARIABLES LIKE 'have_query_cache';</code></span>Si le résultat est &laquo;&nbsp;ON&nbsp;&raquo; ou &laquo;&nbsp;YES&nbsp;&raquo;, c&#8217;est bon, vous pouvez alors exécuter la requête suivante :<code> </code><code><span style="color: #339966;">SHOW VARIABLES LIKE 'query_cache_size';</span></code>Le chiffre obtenu correspond à une taille : 1 million = 1 MB. Un cache d&#8217;environ 64 MB est déjà amplement suffisant.<br />
Si vous souhaitez modifier les paramètres de ce cache de requêtes, contactez votre hébergeur pour qu&#8217;il effectue les modifications pour vous.</li>
<li>Vous pouvez ensuite <strong>vérifier que les Keep Alives d&#8217;Apache sont activés</strong> . Il s&#8217;agit d&#8217;une configuration du serveur qui autorise les connexions permanentes. Ces sessions à haute durée de vie permettent de gérer plusieurs requêtes à travers la même connexion TCP/IP et des résultats ont montrés qu&#8217;un gain de 50% de temps peut être obtenu sur des pages HTML avec beaucoup d&#8217;images. Cette configuration est géré dans le fichier httpd.conf ou apache2.conf de votre serveur, c&#8217;est pourquoi il est préférable de demander à votre hébergeur d&#8217;activer ce service si il ne l&#8217;est pas. Une configuration des Keep Alive par exemple peut être la suivante :<code> </code><code><span style="color: #339966;">KeepAlive On<br />
KeepAliveTimeout 2</span></code></p>
<p>Cependant, il faut désactiver ce service si vous utilisez mod_php :</p>
<p><code><span style="color: #339966;">KeepAlive Off</span><br />
</code></li>
<li>Pour améliorer encore le cache Magento, vous pouvez <strong>mettre en cache certains blocks de Magento</strong> dont le temps de chargement est long (de gros menus ou de longues listes de produits par exemple). Vous pouvez mettre en place ces caches manuellement en consultant <a href="http://www.magentocommerce.com/wiki/5_-_modules_and_development/block_cache_and_html_ouput" target="_blank">cette page du wiki Magento</a> mais également installer certaines extensions qui mettent en place ces caches comme le <a href="http://www.magentocommerce.com/magento-connect/paulborsky/extension/3971/paulborsky_categorycache" target="_blank">cache pour les catégories</a> ou le <a href="http://www.magentocommerce.com/magento-connect/netresearch/extension/2138/catalogcache" target="_blank">cache pour les produits</a>. Attention cependant, la mise en place de ces caches très spécifiques est complexe et peut ne pas vous apporter totale satisfaction, c&#8217;est pourquoi n&#8217;installez ces extensions que si vous avez tester leur fonctionnement et que vous ne rencontrez aucun problème.</li>
<li>Enfin, il semblerait que l&#8217;<strong>activation de la compilation </strong>(dans Système&gt;Outils&gt;Compilation) améliore également les performances de Magento. Cependant, faîtes attention, notamment avec l&#8217;installation des extensions : avant de vous connecter au Magento Connect Manager, pensez à désactiver la compilation sinon vous risquez d&#8217;obtenir des erreurs ou une page blanche. De plus, le compilateur rencontre des problèmes de comptabilité avec certaines extensions (notamment celles qui ajoutent des caches) donc désactivez le si vous voyez qu&#8217;il génére des erreurs sur votre site.</li>
<li>Il existe évidemment d&#8217;autres moyens d&#8217;accélérer votre site Magento, comme par exemple <strong>réduire la taille de vos images et les compresser</strong> avant de les uploader plutôt que de laisser Magento les réduire lors du chargement de votre page, <strong>utiliser un CDN </strong>(Content Distribution Network) <strong>pour stocker vos contenus statiques</strong> (images, CSS, JS) plutôt que votre webroot ou encore <strong>stocker vos contenus dynamiques</strong> (var/cache et var/session) <strong>sur un système de fichier basé sur la mémoire comme les RAMdisks ou les tmpfs</strong>.</li>
<li>Enfin, une fois toutes ces modifications en place, il vous faut <strong>générer le cache</strong>. En effet, pour que la mise en cache soit efficace, il faut que les pages visitées soient déjà en cache. Comme il peut être long et ennuyeux de visiter chaque page de votre site pour que celle-ci soit mise en cache, vous pouvez <strong>automatiser</strong> ceci en vous connectant en SSH à votre serveur et en passant la commande suivante :<br />
<span style="color: #339966;"><code>wget http://www.votresitewebmagento.com -r --delete-after -nd --reject png,jpeg,jpg,gif<br />
</code></span><span style="color: #339966;"></span>Cette commande va télécharger (wget) récursivement (-r) tous les contenus de votre site (http://www.votresitewebmagento.com) en prenant soin de ne pas garder les contenus sur votre disque dur (&#8211;delete-after), de ne pas créer de nouveaux dossiers (-nd ) et de ne pas télécharger toutes les images (&#8211;reject png,jpeg,jpg,gif). Ainsi <strong>votre cache sera générer pour la totalité de votre site</strong>.</li>
</ol>
<p>En espérant que ces modifications vous auront aidé à améliorer les performances de votre site Magento.</p>
<hr />
<h3>Optimisation via Zend_Cache pour l&#8217;extension <strong>AheadWorks_Advancedmenu</strong></h3>
<p><strong> </strong><strong><span style="font-weight: normal;">Il y a deux choses à faire dans le fichier Menu.php ( Class AW_Advancedmenu_Block_Menu ) &#8211; présent dans code/Local/AW/Advancedmenu/Block :</span></strong></p>
<ol>
<li><strong><span style="font-weight: normal;"> </span></strong>Ajouter au constructeur la fonction addData</li>
</ol>
<pre>$this-&gt;addData(array('cache_lifetime' =&gt; 999999,'cache_key' =&gt; $this-&gt;getCacheKey()));</pre>
<p>Cet appel permet de dire à Magento que nous allons ajouter des données au cache.</p>
<p><strong>cache_lifetime</strong> définit le temps en minute de durée des fichiers avant regénération.</p>
<p><strong>cache_key</strong> définit l&#8217;identifiant de chaque block qui est mis en cache.</p>
<p>2.  Ecraser la méthode getCacheKey en l&#8217;insérant dans ce même fichier (Menu.php) :</p>
<p>Pour cela vous devez donner un identifiant à chaque menu différent. Dans l&#8217;exemple de notre site, <a href="http://egcomm.appli-box.com/geovie" target="_blank">Geovie</a>, il y a un total de quatres menus. C&#8217;est pourquoi il faudra identifier chacun de ces menus avec un identifiant unique.</p>
<pre>public function getCacheKey(){

<span style="color: #0000ff;">//On utilise une variable de post pour différencier les différents appels à la fonction</span>

<span style="color: #0000ff;">//On a plusieurs appels car il y a plusieurs menu</span>s

<span style="color: #0000ff;">//Il s'agit d'une astuce intéressante car dans notre cas on appelle au minimum six fois la fonction getCacheKey</span>

if(!isset($_POST['cacheKey'])){
    $_POST['cacheKey'] = 1;
}else{
    $_POST['cacheKey'] += 1;
}

//echo "\n Passage: ".$_POST['cacheKey'];

<span style="color: #0000ff;">//On différencie les cas</span>
<span style="color: #0000ff;">//Premier : dans la page des produits</span>
if (Mage::registry('current_product'))
{
<span style="color: #0000ff;">//Pour les valeurs 1,2,3 de cacheKey, on s'occupe du menu du haut contenant toutes les catégories</span>

      if(isset($_POST['cacheKey']) &amp;&amp; ( $_POST['cacheKey'] == 3  || $_POST['cacheKey'] == 2 || $_POST['cacheKey'] == 1) ){
      return Mage::app()-&gt;getStore()-&gt;getId()."page";
      }<span style="color: #0000ff;">//On s'occupe maintenant des menus de gauches</span>

<span style="color: #0000ff;">      //On met le même identifiant car on créé le menu en fonction de l'endroit où l'on se trouve</span>
<span style="color: #0000ff;">     </span><span style="color: #0000ff;">//donc du category_id</span>
     elseif(isset($_POST['cacheKey']) &amp;&amp; ( $_POST['cacheKey'] == 4) ){
          return Mage::app()-&gt;getStore()-&gt;getId()."categoryLeft_".$this-&gt;_currentCategoryId;
     }elseif(isset($_POST['cacheKey']) &amp;&amp; ( $_POST['cacheKey'] == 5) ){
          return Mage::app()-&gt;getStore()-&gt;getId()."categoryLeft_".$this-&gt;_currentCategoryId;
     }elseif(isset($_POST['cacheKey']) &amp;&amp; ( $_POST['cacheKey'] == 6) ){
          return Mage::app()-&gt;getStore()-&gt;getId()."categoryLeft_".$this-&gt;_currentCategoryId;
     }<span style="color: #0000ff;">//On met au cas où un fonctionnement par défaut</span>
      else{
          return Mage::app()-&gt;getStore()-&gt;getId()."categoryLeftDefault".$this-&gt;_currentCategoryId;
     }

}<span style="color: #0000ff;">//Deuxième cas : page de la liste des produits</span>
<span style="color: #0000ff;">//Même fonctionnement que la condition avec des produits</span>
elseif (Mage::registry('current_category'))
{<span style="color: #0000ff;">//On ajoute le numéro de catégorie pour différencier les pages</span>
       if(isset($_POST['cacheKey']) &amp;&amp; ( $_POST['cacheKey'] == 3  || $_POST['cacheKey'] == 2 || $_POST['cacheKey'] == 1) ){
<span style="color: #0000ff;">         </span><span style="color: #0000ff;">//Menu de haut par défaut</span>
         return Mage::app()-&gt;getStore()-&gt;getId()."page";
       }elseif(isset($_POST['cacheKey']) &amp;&amp; ( $_POST['cacheKey'] == 4) ){
         return Mage::app()-&gt;getStore()-&gt;getId()."categoryLeft_".$this-&gt;_currentCategoryId;
       }elseif(isset($_POST['cacheKey']) &amp;&amp; ( $_POST['cacheKey'] == 5) ){
         return Mage::app()-&gt;getStore()-&gt;getId()."categoryLeft_".$this-&gt;_currentCategoryId;
       }elseif(isset($_POST['cacheKey']) &amp;&amp; ( $_POST['cacheKey'] == 6) ){
         return Mage::app()-&gt;getStore()-&gt;getId()."categoryLeft_".$this-&gt;_currentCategoryId;
       }else{
         return Mage::app()-&gt;getStore()-&gt;getId()."categoryLeftDefault".$this-&gt;_currentCategoryId;
       }

}<span style="color: #0000ff;">//Dans le cas où l'on se trouve sur la première page, on ne traite que le menu du haut</span>
<span style="color: #0000ff;">//Donc il faut renvoyer la même clef que sur les pages intérieures pour ce même menu</span>
elseif( Mage::getSingleton('cms/page')-&gt;getIdentifier() == Mage::getStoreConfig('web/default/cms_home_page') )
{
<span style="color: #0000ff;">    </span><span style="color: #0000ff;">//Menu de haut par défaut</span>

    return Mage::app()-&gt;getStore()-&gt;getId()."page";

}<span style="color: #0000ff;">//Dans les autres pages (recherche, panier, compte) on affiche uniquement le menu du haut donc on prend la même clef</span>

else{

<span style="color: #0000ff;">     //Menu de haut par défaut</span>

     return Mage::app()-&gt;getStore()-&gt;getId()."page";

}

}</pre>
<p>Evidemment, ce code est très spécifique mais nous espérons  qu&#8217;il vous permettra, après adaptation, de <strong>mettre en cache l&#8217;advanced Menu de aheadWorks</strong> afin de gagner de précieuses secondes de chargement.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.creation-site-lyon.com/2010/09/08/encore-plus-de-vitesse-sous-magento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento : redirection des nouveautés &amp; tri des produits groupés</title>
		<link>http://www.creation-site-lyon.com/2010/06/28/magento-redirection-des-nouveautes-tri-des-produits-groupes/</link>
		<comments>http://www.creation-site-lyon.com/2010/06/28/magento-redirection-des-nouveautes-tri-des-produits-groupes/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 09:04:13 +0000</pubDate>
		<dc:creator>raphael</dc:creator>
				<category><![CDATA[développement web]]></category>
		<category><![CDATA[e-commerce]]></category>

		<guid isPermaLink="false">http://www.creation-site-lyon.com/?p=320</guid>
		<description><![CDATA[Dans la continuité du développement d&#8217;un de nos sites e-commerce sous Magento, nous avons du répondre aux besoin suivants : rediriger l&#8217;utilisateur lorsqu&#8217;il clique sur un produit affiché en tant que nouveauté sur la page d&#8217;accueil vers la catégorie parente de ce produit. résoudre un bug de Magento qui change constamment l&#8217;ordre de la liste]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2010%2F06%2F28%2Fmagento-redirection-des-nouveautes-tri-des-produits-groupes%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.creation-site-lyon.com%2F2010%2F06%2F28%2Fmagento-redirection-des-nouveautes-tri-des-produits-groupes%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Dans la continuité du développement d&#8217;un de nos <a href="http://www.applibox.com/agence-web-lyon-villefranche-sur-saone/etudes-de-cas" target="_blank">sites e-commerce sous Magento</a>, nous avons du répondre aux besoin suivants :</p>
<ul>
<li>rediriger l&#8217;utilisateur lorsqu&#8217;il clique sur un produit affiché en tant que nouveauté sur la page d&#8217;accueil vers la catégorie parente de ce produit.</li>
<li>résoudre un bug de Magento qui change constamment l&#8217;ordre de la liste des produits simples contenus dans un produit groupé.</li>
</ul>
<h3>Redirection :</h3>
<ul>
<li>Comme vous le savez peut-être déjà, la gestion de nouveaux produits sur la page d&#8217;accueil se fait par le template <strong>/app/design/frontend/votre_interface/votre_theme/template/catalog/product/new.phtml</strong></li>
<li>Ouvrez donc ce fichier et placez vous juste après la ligne suivante : <code>&lt;?php $i=0; foreach ($_products-&gt;getItems() as $_product): ?&gt;</code></li>
<li>Ce code représente la boucle sur les nouveaux produits, ajoutez donc le code suivant :<code><br />
&lt;?php<br />
/**<br />
* On récupère les catégories du produit sur lequel on est focalisé<br />
*/<br />
$_categories = $_product-&gt;getCategoryIds();<br />
/**<br />
* Parmi ces catégories, on récupère la première<br />
*/<br />
$_category = Mage::getModel('catalog/category')-&gt;load($_categories[0]);</code><code><br />
</code><code>/**<br />
* Il nous faut ensuite trouver la catégorie parente<br />
*/</code><br />
<code> $parentCategory = Mage::getModel('catalog/category')-&gt;load($_category-&gt;getParentId());<br />
</code><code>/**<br />
* Ainsi que l'id<br />
*/</code><br />
<code> $this_id = $_category-&gt;getId();<br />
</code><code>/**<br />
* On crée ensuite l'url qui correspondra à URL_de_la_catégorie_parente.?cat=numéro_de_la_catégorie_du_produit<br />
*/</code><br />
<code> $url = $parentCategory-&gt;getUrl()."?cat=".$this_id;<br />
?&gt;</code></li>
<li>Si vous souhaitez que la redirection soit effectuée lorsque vous cliquez sur le titre du produit par exemple, il vous suffit de trouver le div ayant pour classes <strong>padtop10 </strong>et<strong> padbotlistinghome </strong>et de remplacer l&#8217;url du produit par : <code>&lt;a href="&lt;?php echo $url ?&gt;"</code></li>
<li>Vos produits en page d&#8217;accueil redirige désormais vos utilisateurs vers la catégorie parente du produit.</li>
</ul>
<p>N.B. : Certains d&#8217;entre vous nous feront sûrement remarquer la possibilité d&#8217;utiliser simplement le code suivant :<br />
<code>$_category = Mage::getModel('catalog/category')-&gt;load($_categories[0]);<br />
$url = $_category-&gt;getURL();</code></p>
<p>Seulement le problème est que, dans le cas de sous-sous-catégorie, cette URL nous fournit bien la liste des produits de la catégorie mais la page affichée ne contient pas le bloc &laquo;&nbsp;Filtrer par&nbsp;&raquo; qui permet la navigation entre les catégories, ce qui est assez embêtant et laisse un vide assez conséquent dans la page.</p>
<h3>Résolution de bug :</h3>
<p>Peut-être que vous avez déjà rencontrer le problème suivant : sous Magento, dans la page produit d&#8217;un produit groupé, les produits ne sont pas triés, c&#8217;est-à-dire que deux produits groupés totalement identiques (avec des sku et des noms différents) afficheront une liste de produits dans un ordre différent.</p>
<p>Un bug qui paraît anodin mais qui, peut parfois devenir déconcertant pour un client : imaginez une boutique de vente en ligne de CD sous la forme de produit groupé contenant un CD physique et un CD téléchargeable. Un utilisateur qui n&#8217;acheterait que des CD téléchargeables souhaiterait pouvoir savoir où se trouvent le produit téléchargeable dans la liste et toujours choisir le 1er ou le 2ème produit de la liste sans avoir à vérifier à chaque achat !</p>
<p>Pour résoudre ce bug, rien de plus simple :</p>
<ul>
<li>Copiez le fichier <strong>app/code/<span style="text-decoration: underline;"><em>core</em></span>/Mage/Catalog/Model/Product/Type/Grouped.php</strong></li>
<li>Créez l&#8217;arborescence suivante : <strong>app/code/<span style="text-decoration: underline;"><em>local</em></span>/Mage/Catalog/Model/Product/Type </strong>et copiez y votre fichier <strong>Grouped.php</strong></li>
<li>Ouvrez le et trouvez les lignes suivantes dans la fonction <strong>getAssociatedProducts </strong>vers la ligne 117 du fichier:<br />
<code>$collection = $this-&gt;getAssociatedProductCollection($product)<br />
-&gt;addAttributeToSelect('*')<br />
-&gt;addFilterByRequiredOptions()<br />
-&gt;setPositionOrder()<br />
-&gt;addStoreFilter($this-&gt;getStoreFilter($product))<br />
-&gt;addAttributeToFilter('status', array('in' =&gt; $this-&gt;getStatusFilters($product)));</code></li>
<li>Ces lignes représentent l&#8217;ensemble des produits associés à un produit groupé, afin de trier ces produits (par nom, par prix, etc&#8230;), il vous suffit de modifier ces lignes de la façon suivante (pour le tri par nom de produit dans notre cas ) :<br />
<code>$collection = $this-&gt;getAssociatedProductCollection($product)<br />
<strong>-&gt;addAttributeToSort('name')</strong><br />
-&gt;addAttributeToSelect('*')<br />
-&gt;addFilterByRequiredOptions()<br />
-&gt;setPositionOrder()<br />
-&gt;addStoreFilter($this-&gt;getStoreFilter($product))<br />
-&gt;addAttributeToFilter('status', array('in' =&gt; $this-&gt;getStatusFilters($product)));</code></li>
<li>Le tri sera désormais activé sur tous vos produits groupés.</li>
</ul>
<p>C&#8217;est terminé pour aujourd&#8217;hui, j&#8217;espère qu&#8217;<strong><a href="http://www.applibox.com" target="_blank">AppliBox</a></strong> vous aura aidé à améliorer l&#8217;ergonomie de votre site.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.creation-site-lyon.com/2010/06/28/magento-redirection-des-nouveautes-tri-des-produits-groupes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

