Archive pour la catégorie ‘Développement Web’

Magento – Inscription newsletter dans le header

Vendredi 13 août 2010

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

Jeudi 29 juillet 2010

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…

Symfony Doctrine NestedSet getTree + useResultCache

Jeudi 17 juin 2010

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

Mardi 8 juin 2010

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

Lundi 7 juin 2010

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

Vendredi 4 juin 2010

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

Samedi 24 avril 2010

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…


Actualités du moment

Samedi 27 février 2010

Comme vous avez pu le constater, mon blog est très peu actualisé ces temps ci. Mes favoris par contre ne dé-remplissent pas de sujets croustillants qu’il faudrait que je partage ;-) .

Mon temps est actuellement partagé entre mon travail en tant que chef de projet technique à l’agence web Kangourouge et mes projets personnels.

Ces derniers me prennent un temps considérable et mon objectif de cette année est de tous les clôturer!

Un de ceux-ci devrait voir le jour d’ici peu… Il s’agit de Keldeco : un site de mise en relation / communautaire sur la décoration d’intérieur.

keldeco_logo


Vous pouvez vous rendre dès à présent sur la page d’attente de keldeco : www.keldeco.fr

Si vous connaissez des professionnels de la décoration (architectes d’intérieur, coach décorateur, home staging, …) n’hésitez pas à leurs faire découvrir le site.

Le site est en cours de finalisation et en BETA TEST, il sera disponible dans les prochaines semaines.

To be continued…


Cartes intelligentes pour google Maps

Jeudi 31 décembre 2009

Voici une solution innovante sur laquelle je suis tombé aujourd’hui permettant d’améliorer la représentation des cartes Google Maps de manière intelligente.

Avant :

Capture d’écran 2009-12-31 à 13.23.06

Après :

Capture d’écran 2009-12-31 à 13.23.24

Je vous laisse découvrir ce service plus en détail sur le site officiel.

To be continued…

xCSS – Framework CSS Orienté Objet

Samedi 14 novembre 2009

J’ai découvert récemment un Framework CSS permettant de créer et gérer ses feuilles de styles plus rapidement, plus proprement et surtout apporter une stabilité dans vos fichiers CSS.

xCSS ou comment reprendre goût à l’intégration propre et structurée

Ce framework a été écrit en PHP5. Il parse un fichier source .xcss et génère à la volée le fichier .css.

xcss_logo

Que nous propose ce framework ?

Des variables ? dans le css ??!

Et le rêve devient réalité…

vars {
  $path = ../img/tmpl1/png;
  $color1 = #FF00FF;
  $border = border-top: 1px solid $color1;
}
.selector {
  background-image: url($path/head_bg.png);
  background-color: $color1;
  $border;
}

Structure hierarchique

Certainement, une des plus belle choses de ce framework…


//Source
.selector {
  a { display: block; }
  strong { color: blue; }
}
// Cela génère le code suivant :
.selector a {
  display: block;
}
.selector strong { color: blue; }

L’héritage object CSS

//source
.basicClass {
  padding: 20px;
  background-color: #FF0000;
}
.specialClass extends .basicClass {}
// Cela génère le code suivant :
.specialClass, .basicClass {
  padding: 20px;
  background-color: #FF0000;
}

Et également d’autres features à découvrir

Nouveau système de commentaire, opérations mathématiques…

Rendez vous sur xCSS Framework pour découvrir plus en profondeur ce framework absolument indispensable!

To be continued…