Extension Magento Connect With Facebook gratuite

En voulant mettre sur un Magento le bouton magique « Connect with Facebook », je suis d’abord tombé, comme la majorité d’entre nous je suppose, sur le plugin : Facebook Connect Magento Module

Je n’ai pas eu l’occasion de tester ce plugin, qui vaut quand même la coquette somme de 99,95$ !

connectfb

En cherchant un peu plus sur le net, je suis tombé sur cette extension GRATUITE qui marche très bien sur un magento 1.3 et 1.4 : Extention Magento Facebook Connect Gratuite, donc servez vous! ;-)

Si vous utilisez PHP 5.3 et que vous souhaitez gagner 2H de débugage, éditez le fichier Inchoo/Facebook/Model/Client.php et remplacer « private » par « public » sur les méthodes __get et __call (ligne 155 et 161).

To be continued…

Magento 1.4 et Jquery

Magento utilise par défaut le framework javascript Prototype, mais il se peut que vous ayez besoin d’utiliser en plus le framework jQuery (vu la quantité de plugins intéressants à utiliser…).

jquery-logo

Pour éviter de réinventer la roue, je vous redirige vers cet excellent tuto sur blog.magentoo.fr qui vous explique la manip à suivre.

To be continued…

Magento – Inscription newsletter dans le header

Astuce Magento 1.4

Pour afficher le bloc d’inscription à la newsletter dans le HEADER de votre boutique Magento, il suffit de modifier deux fichiers :

Dans layout/page.xml de votre thème, rajouter le code ci-dessous :

<block type="page/html_header" name="header" as="header">
...
<!-- Code à ajouter -->
<block type="newsletter/subscribe" name="newsletter" as="newsletter" template="newsletter/subscribe.phtml"/>
<!-- Fin du code à ajouter -->
...
</block>

Ce code va indiquer à votre template « header » que vous pouvez utiliser un nouveau block nommé « newsletter ».

Ensuite il vous faut modifier le template « header », dans template/page/html/header.phtml

<!-- Code à inclure où vous voulez -->
<?php echo $this->getChildHtml('newsletter'); ?>

Le formulaire d’inscription à la newsletter devrait apparaître.

To be continued…

Wordpress jour 1 – wordpress 3.0 fr en local

En lançant un nouveau blog propulsé par le moteur Wordpress, j’ai décidé de retracer toutes les étapes de la mise en place d’un blog, de l’installation, thème, plugin, mise en ligne, promotion, etc…

Installation de wordpress 3.0 en local

Pour commencer, récupérez la dernière version de wordpress à cette adresse : http://www.wordpress-fr.net/.

Décompressez le fichier zip dans votre architecture et ouvrez votre url locale (ex: http://192.168.0.1/monblog ou pour ma part, avec un vhost sous apache http://monblog/ ).

Suivez le processus d’installation de votre blog wordpress.

Connectez vous ensuite à votre tableau de bord (http://192.168.0.1/monblog/wp-admin) et changez votre mot de passe ;-)

Votre blog wordpress 3.0 FR est maintenant installé, enjoy!

wordpress

To be continued…

Comment gérer vos projets extra-professionnels?

Je vais maintenant aborder ici un nouveau thème pour moi : le développement personnel. Non! je ne vais pas vous révéler comment devenir plus heureux ou comment devenir riche ;-) mais tout simplement vous expliquer une de mes techniques (si on peut appeler ça comme ça) pour arriver à bout de vos projets personnels.

Pour vous expliquer ma situation, je suis chef de projet technique dans une agence web et je mène depuis un peu plus d’un an divers projets personnels en extra (sur le web bien sûr). Ces différents projets ont plusieurs objectifs et je ne vous cache pas qu’un intérêt financier sur le long terme se cachent derrière certains. Mais peu importe votre métier actuel, peu importe la nature de vos projets personnels et les objectifs de ceux-ci, la ‘technique’ que je vais vous présenter s’adresse à tout le monde.

Pré-requis: (et oui, on a rien sans rien…)
• Motivation
• Ambition

Le principe est extrêmement simple, il suffit de noter sur un support papier ou sur un petit utilitaire logiciel les différentes taches de vos ou votre projet(s). Les taches doivent être absolument réalisables dans un timing de 20 minutes à 1h grand maximum!! Et le clou du spectacle: vous devez réaliser 1 taches par jour (on va laisser le weekend optionnel ;-) ) et barrez chaque tache que vous avez réalisé! (acte à première vue anodin mais très important!)

Et oui, c’est tout… Je vais maintenant revenir en détail sur toutes les subtilités du principe énoncé ci-dessus:

Sur quel type de support noter mes taches?

Alors pour ça, c’est vous qui voyez… Idéalement, il faut que vous ayez toujours cette liste avec vous. Vous pouvez utiliser un petit bloc note papier, une application de prise de note sur votre téléphone ou un utilitaire de tache sur votre ordinateur. Pour ma part, j’utilise une petite application sur iPad : taska. Elle existe aussi sur iPhone. L’avantage de cette application: on peut facilement gérer les taches par projet! Si vous en avez d’autres a faire partager, n’hésitez a me les soumettre par commentaire, je me ferais un plaisir de centraliser tout cela.

Pourquoi découper mon projet en petites taches?

D’une part, vous dire que vous avez une montagne de chose a faire est souvent synonyme de baisse de motivation, alors que la, vous savez exactement vos prochaines taches et vous savez que chacune d’elles ne prendra pas plus d’une heure. D’autre part, vous devez réaliser une tache par jour, il est plus facile de prendre des petits laps de temps dans la journée pour faire votre tache que de bloquer des journées entières pour faire avancer votre projet!

Quand vais-je trouver le temps de faire cette tache?

Étant donné que les taches sont réalisable en 30 minutes (en moyenne) pour ma part. Il suffit de prendre le temps pour faire votre tache.
• Le matin en arrivant un peu plus tôt à votre travail.
• Le midi pendant votre pause déjeuner.
• Le soir. (Pas immédiatement en rentrant du travail parce qu’il faut faire une coupure avec son environnement professionnel et la notion de travail)

Pourquoi dois-je réaliser une tache par jour?

Pour de multiples raisons. Vous serez déjà certain que vos projets personnels avanceront, qu’un petit peu c’est sûr, mais au moins ils avanceront. Après, si vous avez plus de temps dans la journée, rien ne vous empêche d’en réaliser une deuxième ou une troisième… Ensuite, en prenant l’habitude, cette « corvée » deviendra un automatisme et vous ne pourrez plus vous en passer.

Pourquoi est-ce important de barrez/clôturer les taches?

Savoir ou vous en êtes d’une part et d’autre part c’est un moment que vous apprécierez tout particulièrement:
• Vous avez fait avancer votre projet.
• Vous avez atteint votre objectifs de la journée.
• Que vous ayez passé une bonne journée ou une « journée de merde », vous finirez la journée par un moment de satisfaction dans tous les cas.

Retours d’expériences

J’utilise cette technique depuis plus d’un mois et pour vous avouer, mes projets n’ont jamais avancé aussi vite ;-) J’ai présenté cette technique a deux amis qui l’ont mis en pratique depuis quelques semaines, et idem pour eux, les bénéfices sont notables très rapidement.

Toutes vos remarques, idées, retours d’expériences sont les bienvenus.

To be continued…

Symfony Doctrine NestedSet getTree + useResultCache

Pour un besoin d’un site Internet développé sous Symfony, j’ai décidé d’utiliser le behavior NestedSet pour gérer des catégories d’un catalogue produit sous la forme d’un arbre.

Un des inconvénients des arbres avec Doctrine NestedSet, c’est le nombre important de requêtes exécutées pour récupérer la totalité de l’arbre. Je vais vous montrer comment j’ai mis en place le cache Doctrine (useResultCache) avec le behavior NestedSet.

Tout d’abord, dans config/ProjectConfiguration.class.php, vérifiez que vous avez bien activé le cache Doctrine:

public function configureDoctrine(Doctrine_Manager $manager)
{
  /* Initialisation du cache Doctrine APC */
  $cacheDriver = new Doctrine_Cache_Apc();
  $manager->setAttribute(Doctrine::ATTR_QUERY_CACHE, $cacheDriver);
  $manager->setAttribute(Doctrine::ATTR_QUERY_CACHE_LIFESPAN, sfConfig::get('app_cache_lifetime')); //mettre cette variable dans app.yml
  $manager->setAttribute(Doctrine::ATTR_RESULT_CACHE, $cacheDriver);
  $manager->setAttribute(Doctrine::ATTR_RESULT_CACHE_LIFESPAN, sfConfig::get('app_cache_lifetime'));
}

Ensuite au niveau de votre action ou component, pour récupérer la totalité de votre arbre avec le cache d’activé :

$this->categories = Doctrine::getTable('category')->getTree();
$q = Doctrine::getTable('category')->createQuery()->useResultCache();
$this->categories->setBaseQuery($q);
$this->categories = $this->categories->fetchTree();

Et enfin, au niveau du template, voici le code pour afficher correctement votre arbre sous la forme de menu par exemple :

<h2>Catégories</h2>
<ul>
  <?php foreach ($categories as $node) : ?>

    <?php if($node['level'] == 0) continue; ?> //ici on affiche pas la catégorie ROOT
    <?php if($node['level'] == '1'): ?>
    <li>
      <span><a href="#"><?php echo $node['label'] ?></a></span>
      <?php if($node->getNode()->hasChildren()): ?>
        <ul id="child_<?php echo $node['id']; ?>">
        <?php foreach($node->getNode()->getChildren() as $child): ?>
          <li><a href="<?php echo url_for('category', $child); ?>"><?php echo $child->getLabel(); ?></a></li>
        <?php endforeach; ?>
        </ul>
      <?php endif; ?>
    </li>
    <?php endif;?>

  <?php endforeach; ?>
</ul>

Voilà, votre arbre est maintenant mis en cache!

To be continued…

Magento jour 3 – Magento 1.4 menu et catégories

C’est reparti pour un petit tour sur Magento 1.4! Le jour n°3 (ou plutôt soir.. ;-) ).

Je vais maintenant regarder comment afficher le menu avec les catégories et sous catégories de produits.

Les catégories dans Magento 1.4

Cela se passe dans le backoffice dans Catalogue > Gérer les catégories.

Je créé donc mes catégories:

- Catégorie 1
— sous catégorie 1
— sous catégorie 2

- Catégorie 2
- Catégorie 3

C’est avec plein d’espoir que je retourne sur le front, actualise et… rien ne se passe… :-(

Le menu Magento ne s’affiche pas ?!

Dans ce cas là, plusieurs solutions (heureusement ;-) ).

  • - Vérifiez que vous avez bien activé vos catégories
  • - Il faut rattacher vos catégories parentes à la catégorie « Default category » (mon problème venait de là)
  • - Vérifier que dans Système > Gérer les magasins il y a bien la catégorie « Default category » dans catégorie racine
  • - Penser à rafraichir le cache, si celui-ci est activé

magento-categorie

Vous pouvez retrouver en détail l’intégralité de ces solutions (en anglais) sur ce blog.

Et voici le rendu sur la boutique :

magento-categorie-front

Voilà une bonne chose de faite! La suite au prochain épisode.

To be continued…

Magento jour 2 – Magento 1.4 et les thèmes

Nouvelle immersion aujourd’hui dans le merveilleux monde de Magento : à la conquète des templates!

Je vous conseille fortement de lire les 4 pages de ce site pour vous familiariser au vocabulaire des templates Magento : Guide du designer Magento

designer_guide_land2

Pour commencer votre propre thème Magento, je vous conseille de partir du theme Blank. Vous aurez ainsi plus de facilités à faire un template sur mesure par la suite.

Petit conseil pour éviter de perdre du temps inutilement… vérifiez dans votre backoffice dans Système > Configuration > Habillage, que vous avez bien renseigné le nom de votre thème dans Gabarits / Habillage (Images / CSS) / Agencement.

To be continued…

Magento jour 1 – Magento 1.4 en local

C’est décidé! Je me lance dans le développement Magento!

logo_magento

Pour rappel, Magento est une plateforme open source de commerce electronique : wikipedia, site officiel.

Installation locale

Après avoir télécharger la version 1.4 de Magento, je procède à son installation sur mon serveur local sur l’adresse : http://magento/.

Une fois l’installation terminée, impossible de se connecter sur le backoffice… en parcourant un peu le web je découvre que Magento n’aime pas trop les installations locales avec des noms de domaines comme ci-dessus (à cause de cookies notamment).

La première astuce consiste à commenter quelques lignes du core de Magento comme sur l’article suivant : lien (solution pas très propre…).

Deuxième solution, changer le nom de mon hosts pour avoir la forme d’une adresse web normale. Du coup, ma nouvelle url est : http://mon-projet-magento.com.

Magento 1.4 en français

Étape suivante de mon installation, passer Magento en français. Pour cela, il faut utiliser la plateforme Magento Connect pour trouver des extensions.

Voici le lien de l’extension du pack de langue FR.

Pour installer une extension, cela se passe dans le back office de votre boutique Magento : > system > magento connect.

Et là, deuxième surprise de mon parcours, un message d’erreur avec un problème de droits sur des fichiers & dossier pour pouvoir utiliser Magento Connect : Error: Please check for sufficient write file permissions

Voici un lien qui explique une solution à ce problème : lien

Une fois connecté sur Magento Connect, il suffit de copier/coller l’EXTENSION KEY récupérable sur la page du plugin souhaité et de lancer l’installation.

Sélectionnez ensuite, dans la liste déroulante tout en bas à gauche de votre backoffice, la version Française. Votre boutique et votre backoffice sont désormais en français.

C’est tout pour aujourd’hui, le prochain article traitera de ce que je découvrirai et apprendrai de nouveau sur Magento ;-)

To be continued…

Banques d’images gratuites et payantes

Voici une sélection de banques d’images gratuites et payantes qui vous permettront de trouver des visuels de qualités pour vos sites web et  vos présentations.

Banques d’images payantes

Banques d’images gratuites

J’espère que vous trouverez votre bonheur dans ces banques d’images. Si vous avez d’autres banques d’images intéressantes sous la main, n’hésitez pas à me les communiquer.

To be continued…