Archive for the ‘développement web’ Category

Magento : redirection des nouveautés & tri des produits groupés

Lundi, juin 28th, 2010

Dans la continuité du développement d’un de nos sites e-commerce sous Magento, nous avons du répondre aux besoin suivants :

  • rediriger l’utilisateur lorsqu’il clique sur un produit affiché en tant que nouveauté sur la page d’accueil vers la catégorie parente de ce produit.
  • résoudre un bug de Magento qui change constamment l’ordre de la liste des produits simples contenus dans un produit groupé.

Redirection :

  • Comme vous le savez peut-être déjà, la gestion de nouveaux produits sur la page d’accueil se fait par le template /app/design/frontend/votre_interface/votre_theme/template/catalog/product/new.phtml
  • Ouvrez donc ce fichier et placez vous juste après la ligne suivante : <?php $i=0; foreach ($_products->getItems() as $_product): ?>
  • Ce code représente la boucle sur les nouveaux produits, ajoutez donc le code suivant :
    <?php
    /**
    * On récupère les catégories du produit sur lequel on est focalisé
    */
    $_categories = $_product->getCategoryIds();
    /**
    * Parmi ces catégories, on récupère la première
    */
    $_category = Mage::getModel('catalog/category')->load($_categories[0]);

    /**
    * Il nous faut ensuite trouver la catégorie parente
    */

    $parentCategory = Mage::getModel('catalog/category')->load($_category->getParentId());
    /**
    * Ainsi que l'id
    */

    $this_id = $_category->getId();
    /**
    * On crée ensuite l'url qui correspondra à URL_de_la_catégorie_parente.?cat=numéro_de_la_catégorie_du_produit
    */

    $url = $parentCategory->getUrl()."?cat=".$this_id;
    ?>
  • 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 padtop10 et padbotlistinghome et de remplacer l’url du produit par : <a href="<?php echo $url ?>"
  • Vos produits en page d’accueil redirige désormais vos utilisateurs vers la catégorie parente du produit.

N.B. : Certains d’entre vous nous feront sûrement remarquer la possibilité d’utiliser simplement le code suivant :
$_category = Mage::getModel('catalog/category')->load($_categories[0]);
$url = $_category->getURL();

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 « Filtrer par » qui permet la navigation entre les catégories, ce qui est assez embêtant et laisse un vide assez conséquent dans la page.

Résolution de bug :

Peut-être que vous avez déjà rencontrer le problème suivant : sous Magento, dans la page produit d’un produit groupé, les produits ne sont pas triés, c’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.

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’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 !

Pour résoudre ce bug, rien de plus simple :

  • Copiez le fichier app/code/core/Mage/Catalog/Model/Product/Type/Grouped.php
  • Créez l’arborescence suivante : app/code/local/Mage/Catalog/Model/Product/Type et copiez y votre fichier Grouped.php
  • Ouvrez le et trouvez les lignes suivantes dans la fonction getAssociatedProducts vers la ligne 117 du fichier:
    $collection = $this->getAssociatedProductCollection($product)
    ->addAttributeToSelect('*')
    ->addFilterByRequiredOptions()
    ->setPositionOrder()
    ->addStoreFilter($this->getStoreFilter($product))
    ->addAttributeToFilter('status', array('in' => $this->getStatusFilters($product)));
  • Ces lignes représentent l’ensemble des produits associés à un produit groupé, afin de trier ces produits (par nom, par prix, etc…), il vous suffit de modifier ces lignes de la façon suivante (pour le tri par nom de produit dans notre cas ) :
    $collection = $this->getAssociatedProductCollection($product)
    ->addAttributeToSort('name')
    ->addAttributeToSelect('*')
    ->addFilterByRequiredOptions()
    ->setPositionOrder()
    ->addStoreFilter($this->getStoreFilter($product))
    ->addAttributeToFilter('status', array('in' => $this->getStatusFilters($product)));
  • Le tri sera désormais activé sur tous vos produits groupés.

C’est terminé pour aujourd’hui, j’espère qu’AppliBox vous aura aidé à améliorer l’ergonomie de votre site.

Ajout de boutons « Précédent » et « Suivant » sur la fiche produit Magento

Jeudi, juin 24th, 2010

Une fonctionnalité très utile mais qui manque à la version Community de Magento est la possibilité d’ajouter des boutons de navigation « Précédent » et « Suivant » entre les produits d’une même catégorie.
Il existe évidemment des extensions qui permettent d’implémenter cette possibilité mais elles sont payantes, c’est pourquoi voici une méthode simple et surtout gratuite pour mettre en place ce système.

  1. En premier lieu, ouvrez le fichier ./app/design/frontend/votre_interface/votre_theme/template/catalog/product/view.phtml
  2. Ajoutez le code suivant juste après les commentaires Magento :
    <?php
    $_helper = $this->helper('catalog/output');
    $_product = $this->getProduct();
    /**
    * Determine les liens précédents/suivants et le lien vers la categorie parente
    */
    $_ccats = $this->helper('catalog/data')->getProduct()->getCategoryIds();
    $_ccat = Mage::getModel('catalog/category')->load($_ccats[0]);
    $ppos = $_ccat->getProductsPosition();
    arsort($ppos);
    $current_pid  = $this->helper('catalog/data')->getProduct()->getId();
    // Déclaration d'un tableau contenant les positions
    $plist = array();
    foreach ($ppos as $pid => $pos) {
    $plist[] = $pid;
    }
    sort($plist);
    $curpos   = array_search($current_pid, $plist);
    // Obtenir le lien du produit suivant
    $previd   = isset($plist[$curpos+1])? $plist[$curpos+1] : $current_pid;
    $product  = Mage::getModel('catalog/product')->load($previd);
    $prevpos  = $curpos;
    while (!$product->isVisibleInSiteVisibility()) {
    $prevpos += 1;
    $nextid   = isset($plist[$prevpos])? $plist[$prevpos] : $current_pid;
    $product  = Mage::getModel('catalog/product')->load($nextid);
    }
    $next_url = $product->getProductUrl();
    // Obtenir le lien du produit précédent
    $nextid   = isset($plist[$curpos-1])? $plist[$curpos-1] : $current_pid;
    $product  = Mage::getModel('catalog/product')->load($nextid);
    $nextpos  = $curpos;
    while (!$product->isVisibleInSiteVisibility()) {
    $nextpos -= 1;
    $nextid   = isset($plist[$nextpos])? $plist[$nextpos] : $current_pid;
    $product  = Mage::getModel('catalog/product')->load($nextid);
    }
    $prev_url = $product->getProductUrl();
    // Obtenir le lien de la catégorie
    $more_url = $_ccat->getUrl();
    ?>
  3. Une fois ce code ajouté, trouvez les lignes suivants :
    <div>
    <input type="hidden" name="product" value="<?php echo $_product->getId() ?>" />
    <input type="hidden" name="related_product" id="related-products-field" value="" />
    </div>

    Et ajoutez le code suivant en dessous de celles-ci :
    <div>
    <table cellspacing="0" border="0" width="100%">
    <tr>
    <td style="text-align:left;"> <a href="<?= $prev_url; ?>"><?php if ("http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] <> $prev_url) echo $this->__('←  Précedent') ?></a></td>
    <td style="text-align:center;"> <a href="<?= $more_url; ?>"><?php echo $this->__('Catégorie') ?></a></td>
    <td style="text-align:right;"> <a href="<?= $next_url; ?>"><?php if ("http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] <> $next_url) echo $this->__('Suivant →') ?></a></td>
    </tr>
    </table>
    </div>
  4. Vous disposez désormais de trois liens vous permettant de naviguer à travers les produits d’une même catégorie.

Voici un petit exemple du résultat obtenu sur le site e-commerce Magento Médias Aviron (NB : le lien vers la catégorie parente a été désactivée sur ce site) :

  • Si vous vous trouvez au premier (dernier) produit d’une catégorie, le lien « Précédent » (« Suivant ») n’apparaît pas :
  • Sinon, les deux apparaissent :

En espérant que ce petit tutoriel vous servira pour améliorer votre site e-commerce Magento.

Import des clients d’une plateforme ecommerce vers une plateforme Magento

Mercredi, juin 16th, 2010

Voici une technique utilisée lors du transfert de l’un de nos clients d’une plateforme ecommerce vers une plateforme magento. Elle vous donnera peut être une piste si vous avez besoin d’importer des clients existants dans une base Magento. Attention tout de même cette technique est à adapter en fonction des besoins.

Pour cette opération vous aurez besoin de :

  • Votre ancienne base de données avec Phpmyadmin installé
  • Le nouveau Magento installé avec l’accès à l’administration et notamment l’accès à l’interface Importer/Exporter

Le but de l’opération est de créer un fichier csv à l’aide de Phpmyadmin prêt pour l’import dans Magento. Cette technique implique le fait que votre base de données existante doit avoir un minimum de points communs avec le fichier d’import magento. Elle évite aussi de passer par un script PHP intermédiaire.

1ère étape : Récupérer la liste des champs disponibles dans le fichier d’export Magento

  • Allez sur le BackOffice de votre Magento
  • Menu Système / Importer Exporter / Profils
  • Par défaut un profil est créer « Export Customers ». Exécuter le afin de récupérer le CSV avec tous les noms des champs.
  • Voici donc la liste des champs disponibles et à compléter lors de l’import des clients dans Magento : website    email    group_id    prefix    firstname    middlename    lastname    suffix    password_hash    taxvat    billing_prefix    billing_firstname    billing_middlename    billing_lastname    billing_suffix    billing_street_full    billing_city    billing_region    billing_country    billing_postcode    billing_telephone    billing_company    billing_fax    shipping_prefix    shipping_firstname    shipping_middlename    shipping_lastname    shipping_suffix    shipping_street_full    shipping_city    shipping_region    shipping_country    shipping_postcode    shipping_telephone    shipping_company    shipping_fax    created_in    is_subscribed    group

2ème étape : Créer la requête SQL qui permettra d’exporter un fichier CSV des clients prêt à l’import dans Magento

Dans notre cas tous les champs ne sont pas forcémment complétés dans l’ancien système. Notre requête ne reprendra donc pas l’ensemble des champs.

Voici la requête une fois terminée :

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,
"motdepasseachanger" AS password_hash,
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

L’astuce est donc de récupérer le champ désiré et de renommer la colonne avec l’instruction AS de Mysql. Exemple :

old_table_user.user_email AS email,

Si vous n’avez pas l’information dans votre base existante vous pouvez la créer, exemple avec le champ requis website :

"base" AS website,

Mysql dispose de fonctions très intéressantes, notamment CONCAT_WS qui permet de concaténer des valeurs. Exemple ci-dessous avec la concaténation de 2 valeurs dans le futur champ billing_telephone (Sous Magento un seul champ téléphone est prévu d’où cette concaténation).

CONCAT_WS(' ',old_table_user.phone_1,old_table_user.phone_2) AS billing_telephone,

3ème étape : Exporter le fichier des clients

Exécutez votre requête puis exportez le résultat en CSV à l’aide de PhpMyAdmin avec les paramètres suivants:

Champs terminés par : ,
Champs entourés par :  »
Caractère spécial : \
Lignes terminées par : AUTO

N’oubliez pas de cocher la case « Afficher les noms de champ en première ligne ».

Voilà votre CSV est prêt !

4ème étape : Importer le fichier CSV des clients dans Magento

  • Allez sur le BackOffice de votre Magento
  • Menu Système / Importer Exporter / Profils
  • Utiliser le profil créer par défaut « Import Customers ».
  • Vérifier que les paramètres correspondent bien aux paramètres précisés au moment de l’export de PhpMyadmin
  • Importer le fichier via l’assistant.

Vos clients sont importés !

Résoudre l’erreur de permissions sur Magento Connect

Mercredi, mai 26th, 2010

Sous Magento, il arrive parfois que lorsque vous souhaitez installer une extension ou mettre à jour vos extensions actuelles, que vous rencontriez l’erreur suivante :

Ce problème est récurrent et sans l’installation d’extensions, Magento perd tous ses avantages, mais heureusement pour nous, il est très simple à résoudre.

Avant de vous expliquer le « comment », je vais vous expliquer le « pourquoi » : Magento Connect a besoin de certaines permissions d’écriture sur certains dossiers et fichiers du webroot de votre site Magento dans le but d’installer de nouvelles extensions ou même lorsqu’il s’agit de mettre à jour votre logiciel vers une nouvelle version.

Nous allons donc changer les permissions de certains dossiers afin de résoudre le problème. Pour ce faire, utilisez un client FTP (nous vous recommandons Filezilla) ou un client SSH (Putty par exemple).

Voici la démarche à suivre en utilisant un client SSH : une fois connecté à votre compte SSH, exécutez les commandes suivantes :

  • cd <votre_dossier_contenant_votre_magento>;
  • find . -type d -exec chmod 777 {} \ ;
  • chmod 666 downloader/config.ini ;

Normalement, vous devriez être désormais capable d’accéder à Magento Connect. Une fois que vous avez terminé votre installation/mise à jour, vous devez remettre les droits initiaux pour empêcher qu’une personne mal intentionnée installe des scripts ou des fichiers malveillants. Exécutez donc les commandes suivantes :

  • find . -type d -exec chmod 755 {} \ ;
  • find . -type f -exec chmod 644 {} \ ;
  • chmod o+w var media app/etc/use_cache.ser ;

C’est terminée, vous êtes désormais capable de vous connecter au Magento Connect Manager comme bon vous semble.

En espérant que cette petite astuce vous sera utile.

Transfert d’un site Magento d’une installation locale à un serveur distant

Vendredi, mai 21st, 2010

Nous l’avons remarqué récemment, le transfert d’un site Magento (de local à serveur ou même de serveur à serveur) est loin d’être une partie de plaisir.

Pour vous éviter les bugs étranges (disparation de produits dans le front-office) et vous faire gagner du temps, voici la démarche à suivre pour transférer de manière propre une boutique Magento :

  1. Tout d’abord, rendez-vous sur l’interface phpMyAdmin du serveur où se trouve votre base de données Magento et exporter votre base dans un fichier SQL. Dans les options, pensez à cocher « Désactiver la vérification des clés étrangères » :Export base Magento
  2. Une fois l’export terminé, vous allez devoir importer cette base sur votre serveur distant en utilisant l’interface phpMyAdmin : Import Base Magento
  3. Normalement l’import devrait se dérouler sans erreur. Désormais, il vous faut modifier deux champs de la table core_config_data : le web/unsecure/base_url et le web/secure/base_url : Modifications core_config_dataEt remplacez la valeur de la colonne value par l’url du site où va être implanter votre site Magento : Changements des secure url et unsecure url
  4. Le paramétrage de votre base de données maintenant terminé, vous pouvez transférer les fichiers de votre site Magento vers le repertoire distant de votre futur site. Une fois les fichiers transférés, il vous faut supprimer le fichier suivant : /app/etc/local.xml ce fichier contient toutes les informations de la base de données de votre site que vous renseignez lors de l’installation de Magento, ainsi que le contenu des dossiers /var/cache, /var/report et /var/session qui contiennent respectivement les données stockées en cache, les rapports d’erreur et les rapports de connexion utilisateur.
  5. Une fois ces fichiers supprimés, rendez-vous à l’adresse de votre site et installez Magento en renseignant bien les informations de la base de données distante. L’installation terminée, tout devrait fonctionner.

En espérant que ce petit tutoriel vous aura servi.

Besoin de vitesse sous Magento ?

Mercredi, mai 12th, 2010

Comme certains d’entre vous ont sûrement pû le contaster, une des plus grandes faiblesses de Magento est son temps de chargement des pages de votre site.

Après quelques recherches, il est possible, suivant la configuration de votre serveur, d’augmenter la vitesse de chargement de vos pages de plus de 200% !

Pour bénéficier de ce gain de vitesse, tout se passe dans le fichier .htaccess se trouvant à la racine de votre boutique e-commerce, l’astuce consistant à activer la compression Gzip en modifiant un peu ce fichier.

Je ne vais pas vous faire attendre plus longtemps et vous expliquer comment faire tout de suite.

  • Ouvrez donc votre fichier .htaccess et cherchez les lignes suivantes :
############################################
## enable apache served files compression
## http://developer.yahoo.com/performance/rules.html#gzip
# Insert filter on all content
###SetOutputFilter DEFLATE

# Insert filter on selected content types only
#AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
# Netscape 4.x has some problems…
# BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
# BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# Don’t compress images
# SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don’t deliver the wrong content
# Header append Vary User-Agent env=!dont-vary

Si vous êtes un peu anglophone (et j’espère que vous l’êtes), vous comprendrez que ces lignes commentées permettent d’activer la compression des fichiers sur votre serveur Apache.

  • Il ne reste plus qu’à décommenter certaines lignes et ajouter la ligne suivante :
# enable resulting html compression
 php_flag zlib.output_compression on
  • Normalement, vous devriez obtenir ceci :
############################################
## enable apache served files compression
## http://developer.yahoo.com/performance/rules.html#gzip
# Insert filter on all content
SetOutputFilter DEFLATE

# Insert filter on selected content types only
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
# Netscape 4.x has some problems…
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# Don’t compress images
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don’t deliver the wrong content
Header append Vary User-Agent env=!dont-vary
# enable resulting html compression
php_flag zlib.output_compression on
  • N’oubliez pas d’enregistrer votre fichier .htaccess et de l’uploader sur votre serveur si vous voulez apprécier les changements.

Vous pouvez tester la rapidité en utilisant un site de test de vitesse de chargement des sites comme celui-ci

Les résultats vont de 25% à 225% de gain de vitesse et dépendent principalement de la configuration du serveur.

Bonne optimisation à toutes et à tous.

Source : inchoo.net

Wireframes et prototypes : ébauche visuelle d’une application web

Lundi, juillet 21st, 2008

Wireframes : les wireframes sont des schémas utilisés en web design qui permettent de suggérer sommairement les éléments principaux d’une interface web (application, site…). Pour être utilses, ils doivent être mis en place avant toute création artistique.

En début de projet, ils permettent de valider les éléments principaux de l’ergonomie et de présenter une maquette fonctionnelle suffisamment évocatrice pour un client non technicien. En cours de projet, ils peuvent servir de référence pour tous les acteurs (client, développeurs, web designer…).

Un exemple réel.

Un autre (une page)

Quelques synonymes : Zonings (franco-français ?), Page Architecture, Low Fidelity Mock-Up, Page Schematic, Rough Draft.

Outils logiciels :

Powerpoint

Le seul avantage est que c’est un outil que tout le monde connait, et que presque tout le monde possède (au moins en version Open Office). Ainsi, même le client est en mesurer de faire une proposition. Mais l’outil n’est pas utilisable de manière professionnelle : pas de composants prêts à l’emploi pour créer des éléments HTML classiques comme un menu déroulant, un bouton. De plus le format paysage n’est pas très adapté.

Visio (Microsoft)

Il n’existe pas d’outils par défaut dans les outils web, il faut donc installer des outils spécifiques (le « Web Prototyping Tool » (ZIP) et/ou « Wireframe Stencil 2003″ (ZIP – 1.3 Mo)) . Je vous renvoie à une très bonne analyse de l’outil avec les liens vers ces composants. En résumé : un outil puissant une fois les composants installés, à mon avis un peu surdimensionné si c’est uniquement pour faire des wireframes.

Les plus :

  • simplicité d’utilisation,
  • Tous les composants web sont présents et paramétrables (taille…),
  • Possibilité de mettre en place des scénarios (erreur utilisateur…),
  • Export HTML
  • Visionneuse pour ceux qui n’ont pas Visio

Les moins :

  • Pas d’intéraction avec les éléments de formulaire
  • Pas de scroll dans les exports HTML
  • Pas de « coller en place »
  • Gestion des tableaux : télécharger ceci.
  • CompatibilitéMac

Axure

Un outil spécifique qui va jusqu’au prototype et aux spécifications. En anglais et payant (600 $ env.)

Denim

Un outil informel pour le design d’interface ou les ébauches de sites web.

Design Stencil Kit par Yahoo!

Non testé : des éléments tout prêt (mais ala Yahoo! je suppose) pour OmniGraffle ou illustrator/photoshop ou Visio par Yahoo.

Tout simplement : le HTML (avec Dreamweaver)

Julie Stanford sur BoxesAndArrows explique très bien dans ce post (en anglais) les avantages d’un wireframe ou de prototypes en HTML. Je suis quasiment convaincu. Un seul inconvénient, convaincre les non-techniciens de l’équipe de l’utiliser, mais Dreamweaver reste un outil très simple en mode wysiwyg, pas plus compliqué qu’un outil comme Visio en tout cas.

Elle donne d’ailleurs quelques conseils pratiques pour simplifier l’utilisation : Dreamweaver primer.

Un autre article donne les avantages et les inconvénients comparés du HTML par rapport à Visio : Practical Applications: Visio or HTML for Wireframes

Encore un article : Prototyping with XHTML

Un autre outil en ligne (edit 12 janvier 2010)

D’autres outils (mise à jour 5/11/2008) :

Quelques liens :

Firefox 3 beta 4 est disponible

Vendredi, mars 21st, 2008

La version beta 4 de Firefox est disponible. Cette version devrait être l’avant-dernière (une beta 5 est prévue) avant la sortie finale toujours programmée pour le printemps. Les améliorations sont nombreuses et devraient satisfaire les utilisateurs comme les développeurs Web dans le cadre de la création de sites Internets et d’applications Web.

Sécurité

  • Information sur le site (« One-clic Site info ») : un clic sur la favicon (icône présente à gauche de la barre d’adresse) permettra d’afficher les informations relatives au site de manière claire et très apparente.
  • Protection contre les logiciels malveillants (Malware) : le navigateur signalera immédiatement l’internaute à son arrivée sur un site connu pour installer des virus, des spywares, des troyens, ou tout autre logiciel malveillant. Vous pouvez tester cette fonctionnalité ici.
  • Intégration avec les anti-virus installés : Firefox informera les anti-virus lors du téléchargement d’un fichier.
  • Anti hameçonnage (faux sites) : les sites frauduleux (copiant un site authentique, mais sur une autre adresse) ne seront plus affichés.

Ergonomie

  • Just start typing in the Location Bar to search your bookmarks and history. It adapts and learns as you use it.
  • Pause and resume your downloads, and search through your download history by file or website name using the new Download Manager.
  • Find out who you’re talking to by clicking on the website icon.
  • Experience the fastest Firefox ever — twice to three times as fast on today’s complex web applications like Google Mail or Zoho Office.
  • Places : il s’agit d’un nouvel algorithme qui permettra de prendre en compte les habitudes de navigation de l’internaute pour enrichir son expérience. Ainsi, un nouveau gestionnaire de l’historique permettra de prendre en compte les sites les plus visités
  • Gestion facilitée des mots de passe : une barre d’information remplacera la boîte de dialogue pour pouvoir sauvegarder ses mots de passe après une identification réussie.
  • Nouveau gestionnaire de téléchargement : il sera plus facile de localiser ses fichiers téléchargés. Une fonctionnalité très attendue : il sera possible de restaurer un téléchargement interrompu.
  • Zoom sur la page entière : il est possible de zoomer (ou de réduire) toute la page, en conservant l’échelle pour la mise en page, le texte et les images.
  • Sauvegarde de votre navigation : vous pourrez sauvegarder vos onglets à la sortie. Une fonctionnalité qui devenait vraiment indispensable pour ceux qui travaillent sur le web même s’il était déjà possible de sauvegarder une collection d’onglets entière en favori.
  • Optimized Open in Tabs behavior: opening a folder of bookmarks in tabs now appends the new tabs rather than overwriting.
  • Location and Search bar size can now be customized with a simple resizer item.
  • Text selection improvements: multiple text selections can be made with Ctrl/Cmd; double-click drag selects in « word-by-word » mode; triple-clicking selects a paragraph.
  • Find toolbar: the Find toolbar now opens with the current selection.
  • Plugin management: users can disable individual plugins in the Add-on Manager.
  • Integration with Vista: Firefox’s menus now display using Vista’s native theme.
  • Integration with the Mac: Firefox now uses the OS X spellchecker and supports Growl for notifications of completed downloads and available updates.

Improved Platform for Developers

  • New graphics and font handling: new graphics and text rendering architectures in Gecko 1.9 provides rendering improvements in CSS, SVG as well as improved display of fonts with ligatures and complex scripts.
  • Native Web page forms: HTML forms on Web pages now have a native look and feel on Mac OS X and Linux (Gnome) desktops.
  • Color management: (set gfx.color_management.enabled on in about:config and restart the browser to enable.) Firefox can now adjust images with embedded color profiles.
  • Offline support: enables web applications to provide offline functionality (website authors must add support for offline browsing to their site for this feature to be available to users).
  • A more complete overview of Firefox 3 for developers is available for website and add-on developers.
    • Top 10 des plugins CMS pour WordPress

      Samedi, mars 15th, 2008

      For moderately sized sites (including simple e-Commerce sites), WordPress does a pretty good job as a CMS,
      making it easy to maintain your site, and update your content. Of
      course, it does this best with the help of a good theme, and some great
      plugins. The strength of WordPress is the community of developers who
      have already done almost anything you can think of with it. Here are
      the best plugins we’ve run across, the ones we install for nearly all
      of our client’s sites.

      Top 10 WordPress CMS Plugins | Blueprint Design Studio

      Ext.js librairie javascript

      Samedi, mars 8th, 2008