Skip to content

Posts tagged ‘magento’

8
août

[Magento] Ajout d’attribut au compte client

Bonjour aux développeurs ! Et oui, à nouveau les autres visiteurs peuvent passer leur chemin car je doute que ce billet les intéresse.

Ce billet a pour but de vous permettre d’ajouter des attributs clients. Lire la suiteRead more

9
fév

Magento : Nouvelles versions Community 1.5, Enterprise 1.10 & Professional 1.10

« Magento Inc » vient d’annoncer la sortie d’une nouvelle mouture de Magento.

Je ne vais pas lister ici les changements mais je vous invite à les découvrir ici: http://www.magentocommerce.com/download/release_notes#Release Notes – Magento 1.5.0.0 stable (February 8, 2010)

Par contre, je vous invite à ne pas utiliser cette version X.0 en production tout de suite. Tous les intégrateurs Magento ont eu de très mauvaises surprises avec les précédentes version X.0 et je préfère laisser mes collègues rencontrer les problèmes avant de m’y lancer. Quelle lâcheté !!

7
fév
livre

Livres : quelques sorties « Magento, Social eCommerce, Marketing, CMS, Développement … »

Bonjour,

N’ayant pas une minute à consacrer au Blog ces dernières semaines, je poste ici quelques sorties de livres en rapport avec le web et l’ecommerce : Lire la suiteRead more

17
jan

Maximiser les performances et la robustesse de Magento Enterprise 1.9

Magento Inc (Nouveau nom de l’anciennement Varien, éditeur de Magento) a publié ce week-end un livre blanc sur les performances de Magento Enterprise 1.9 à destination des partenaires, développeurs afin de décrire les meilleurs pratiques qui permettront de tirer profit du maximum de la solution. Lire la suiteRead more

21
déc

Nouvelle version 1.5 de Magento

La toute nouvelle mouture de Magento vient d’être mis à disposition.
N’y touchez surtout pas hormis pour du test car il s’agit de la première alpha. Autant dire que si vous désirez mettre votre commerce dans le mur, foncez sur cette version. Je conseille d’ailleurs de ne pas non plus utiliser la 1.5.0 une fois sortie en stable. Ceux qui utilisent Magento depuis le début savent de quoi je parle.

Bref, ce qui nous intéressent ici est la liste des nouveautés. La sortie de la 1.4.0 avait fait son effet et est considérée aujourd’hui comme la « véritable » version stable de Magento. Lire la suiteRead more

29
oct

Magento : la cron – intérêts et fonctions du core

Comme vous le savez surement si vous avez déjà mis en place un Magento, une « cron » ou en français « tâche planifiée » doit être programmée lors de la mise en place de votre ecommerce Magento. Si vous avec un Magento mais ne connaissez pas l’existence de cette tâche, inquiétez-vous et renseignez vous sur ce point avec votre hébergeur ou responsable du développement.

En effet, cette cron est indispensable au bon fonctionnement de votre plateforme ecommerce. Non seulement elle va vous permettre de mettre en place des scripts automatiques (gestion de stock externalisée, envoi de mailing) spécifiques à vos besoins mais surtout elle va exécuter différentes fonctions déjà présentes dans le core de Magento. Le but de ce billet est justement de présenter les impacts précis de cette tâche sur votre plateforme Magento. Nous savons qu’il faut exécuter le fichier ‘cron.php’ à intervalle régulier (toutes les 15 minutes semble une bonne base) mais il est toujours intéressant d’en connaître les implications.

Le fichier « cron.php » de Magento ne va donc pas servir uniquement à une fonction précise. Il va en fait utiliser la configuration de votre plateforme (via les fichiers « config.xml »), lire les informations contenues dans les noeuds et exécuter le script demandé. Rien de mieux qu’un exemple pour expliquer le principe.

Prenons le cas de l’envoie de newsletter via Magento. Dans le fichier « app/code/core/Mage/Newsletter/etc/config.xml », vous pouvez trouver cet ensemble de noeud :

<crontab>
  <jobs>
    <newsletter_send_all>
      <schedule>
        <cron_expr>*/5 * * * *</cron_expr>
      </schedule>
      <run>
        <model>newsletter/observer::scheduledSend</model>
      </run>
    </newsletter_send_all>
  </jobs>
</crontab>

Ceci correspond à la définition ou plutôt à la configuration d’exécution du script générant le plan de site XML.

  1. « newsletter_send_all » est le nom de la tâche à exécuter.
  2. Pour cette tâche, « schedule » va indiquer à quel moment cette tâche doit être accompli.
    Dans cet exemple, l’intervalle de temps est toutes les 5 minutes (se reporter à la définition d’une crontab pour connaître la syntaxe du planning d’une tâche).
  3. L’élement « run » indique  le script qui devra être appelé lorsque l’intervalle de temps sera atteint.

Donc si vous créez un nouveau module qui se charge par exemple de supprimer des clients de façon totalement aléatoire ( prenez une bonne assurance RC Pro auparavant tout de même, car on ne sait jamais, votre client pourrait ne pas trop apprécier ), il vous suffira de rajouter ce type de noeud « crontab » dans la configuration XML de votre module.

Revenons à nos moutons. Quels sont les scripts éxécuter « par défaut » via la cron Magento ?

Ils sont au nombre de 12 (version Magento 1.4.0.1) :

  1. Rafraichissement des rapports concernant les coupons de promotions : salesrule/observer::aggregateSalesReportCouponsData
  2. Mise à jour des règles de prix catalogue : catalogrule/observer::dailyCatalogUpdate
  3. Connexion à Paypal et vérification des états de commande : paypal/observer::fetchReports
  4. Met à jour les statistiques sur les taxes pour la journée J-1 : tax/observer::aggregateSalesReportTaxData
  5. Ré-indexation des prix en fonction du type de produit, groupe client, taxes … : catalog/product_indexer_price::reindexAll
  6. Envoi des newsletter : newsletter/observer::scheduledSend
  7. Efface les paniers expirés : sales/observer::cleanExpiredQuotes
  8. Gère les statistiques de commande : sales/observer::aggregateSalesReportOrderData
  9. Gère les statistiques d’expédition : sales/observer::aggregateSalesReportShipmentData
  10. Gère les statistiques de facturation : sales/observer::aggregateSalesReportInvoicedData
  11. Gère les statistiques d’avoirs : sales/observer::aggregateSalesReportRefundedData
  12. Gère les statistiques sur les meilleurs ventes … : sales/observer::aggregateSalesReportBestsellersData

L’explication pourrait aller beaucoup plus loin. sachez que la cron crée un planning d’éxécution. Le calcul sur le timing n’est pas fait à chaque fois. De temps en temps (définissable en administration), la cron va créer un planning des exécutions de ces scripts, ce qui permettra de rapidement appelé chaque script sans avoir à recalculer les intervalles …

29
oct

Magento : afficher des promotions en page d’accueil

Voici comment afficher simplement les produits en promotions (promos spéciales) sur la page d’accueil (ou tout autre page CMS magento).

Tout d’abord, créer un block PHP qui se chargera de sélectionner les produits en promotions spéciales. Bien sûr, il suffit d’adapter le code pour changer la sélection.

Créez le fichier « app/code/local/GeorgesAbitbol/Catalog/Block/Product/Promotions.php ».

<?php
/**
 * Display Promotions PHP Block
 *
 * @author Georges@Bibtol <contact@georgesabitbol.net>
 */
class GeorgesAbitbol_Catalog_Block_Product_Promotions extends Mage_Catalog_Block_Product_Abstract
{
    protected $_productsCount = null;
    const DEFAULT_PRODUCTS_COUNT = 5;
    /**
     * Prepare collection with new products and applied page limits.
     *
     * return Mage_Catalog_Block_Product_New
     */
    protected function _beforeToHtml()
    {
        $todayDate  = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
        $collection = Mage::getResourceModel('catalog/product_collection');
        $collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());
        $collection = $this->_addProductAttributesAndPrices($collection)
            ->addStoreFilter()
            ->addAttributeToFilter('special_from_date', array('date' => true, 'to' => $todayDate))
            ->addAttributeToFilter('special_to_date', array('or'=> array(
                0 => array('date' => true, 'from' => $todayDate),
                1 => array('is' => new Zend_Db_Expr('null')))
            ), 'left')
            ->addAttributeToSort('special_from_date', 'desc')
            ->setPageSize($this->getProductsCount())
            ->setCurPage(1)
        ;
        $this->setProductCollection($collection);
        return parent::_beforeToHtml();
    }
    /**
     * Set how much product should be displayed at once.
     *
     * @param $count
     * @return Mage_Catalog_Block_Product_New
     */
    public function setProductsCount($count)
    {
        $this->_productsCount = $count;
        return $this;
    }
    /**
     * Get how much products should be displayed at once.
     *
     * @return int
     */
    public function getProductsCount()
    {
        if (null === $this->_productsCount) {
            $this->_productsCount = self::DEFAULT_PRODUCTS_COUNT;
        }
        return $this->_productsCount;
    }
}

Ensuite, le code suivant doit être contenu dans le fichier « app/design/frontend/default/default/template/georges_abitbol/promotions.phtml »

<?php
if (($oProducts = $this->getProductCollection()) &amp;&amp; $oProducts->getSize()):
    foreach ($aProducts as $oProduct): ?>
        <a href="<?php echo $oProduct->getProductUrl() ?>" title="<?php echo $this->htmlEscape($oProduct->getName()) ?>">
            <img class="product-image" src="<?php echo $this->helper('catalog/image')->init($oProduct, 'small_image')->resize(195, 195); ?>" width="195" height="195" alt="<?php echo $this->htmlEscape($oProduct->getName()) ?>" />
        </a>
        <h5><a class="product-name" href="<?php echo $oProduct->getProductUrl() ?>" title="<?php echo $this->htmlEscape($oProduct->getName()) ?>"><?php echo $this->htmlEscape($oProduct->getName()) ?></a></h5>
        <?php echo $this->getPriceHtml($oProduct, true);
        echo $this->getReviewsSummaryHtml($oProduct, 'short');
        unset($aProduct);
        unset($oProduct);
    endforeach;
    unset($oProducts);
endif;
?>

Il faut maintenant déclarer le module. Pour cela, ajoutez le fichier « app/etc/modules/GeorgesAbitbol_Catalog.xml » avec le contenu suivant :

<?xml version="1.0"?>
<config>
    <modules>
        <GeorgesAbitbol_Catalog>
            <active>true</active>
            <codePool>local</codePool>
        </GeorgesAbitbol_Catalog>
    </modules>
</config>

Après avoir activer le module, il faut déclarer le rewrite du block qui permettra d’appeler le block depuis la gestion du CMS
Fichier « app/code/local/GeorgesAbitbol/Catalog/etc/config.xml » :

<?xml version="1.0"?>
<config>
    <modules>
        <GeorgesAbitbol_Catalog>
            <version>1.0</version>
        </GeorgesAbitbol_Catalog>
    </modules>
    <global>
        <blocks>
            <catalog>
                <rewrite>
                    <product_promotions>GeorgesAbitbol_Catalog_Block_Product_Promotions</product_promotions>
                </rewrite>
            </catalog>
        </blocks>
    </global>
</config>

Ensuite, il ne vous reste plus qu’à ajouter cette ligne d’appel dans la page CMS de la home via l’administration

{{block type="catalog/product_promotions" template="georges_abitbol/promotions.phtml"}}

27
sept
731px-Nginx-battleship-alt.svg

Optimisations de Magento : NginX

Magento est gourmand en ressources !!!! Bon, ce n’est pas la grande nouvelle de ce début de semaine et je ne vous apprends rien si vous avez eu l’occasion de « jouer » avec cette plateforme.
Plusieurs raisons à cela : il existe des goulots d’étranglements dans le code et/ou vous pourriez en créer en codant/installant des modules. La base de données est conséquente, et ses besoins vont augmenter de manière exponentielle si vous rentrez des milliers de produits.  Je ne vais pas faire un billet sur toutes les raisons mais l’hébergement est un point primordial pour le succès de votre boutique. Il serait tout de même « embêtant » de perdre des ventes, du référencement (et donc des ventes) … car vous vouliez économiser 200 euros par an sur l’hébergement. Lire la suiteRead more

20
sept
bargento2_1983

Bargento 5 : n’oubliez pas le 8 Novembre 2010

Et oui, déjà la 5ème édition du Bargento et cela approche à grand pas.

17 conférences sont prévues et 31 exposants vous accueilleront. Les conférences seront séparées en 3 thèmes :

  1. Fonctionnel, Ergonomie, SEO / SEM / SMO
  2. Développement, M-commerce, performances
  3. Témoignages d’utilisateurs et découverte du produit

Lire la suiteRead more

Page optimized by WP Minify WordPress Plugin