S'il y a avait un oscar pour la catégorie Rap de nerd international, c'est sans aucun doute que cette chansonnette l'aurait remporté. Attention c'est du lourd!

En début d'année, j'étais à la recherche d'une solution qui me permettrait de connecter un site full-flash à Wordpress. L'idée est d'utiliser le backend de Wordpress pour donner la possibilité aux non-codeurs d'administrer le contenu de leur front-end Flash.
L'avantage est double: le client/Chef de projet peut lui même administrer son contenu et le codeur peut se consacrer à des taches bien plus utile.

Plusieurs développeurs se sont déjà penché sur cette idée, malheureusement aucune d'entre elle n'était assez flexible pour s'adapter simplement à tous types de projet.

De ce fait, j'ai développé mon propre projet: Press2Flash. Press2Flash est un framework en Actionscript 3 accompagné d'un plugin pour Wordpress, crée pour établir une voie de communication entre Flash et le CMS.

Voici une liste succincte de fonctionnalités:

  • Gestion du contenu publié dans Flash entièrement geré par Wordpress
  • Intégration de deeplinks avec SWFAddress
  • La communication entre Flash et Wordpress se fait au format XML
  • Possibilité de commenter, voter et modérer le contenu publié
  • Intégration aisée avec tous les réseaux sociaux
  • Extension des fonctionalités simplifiée grace aux nombreux plugins disponible pour Wordpress

Attention cependant, le projet est encore en beta! J'ai prévu d'ajouter beaucoup de fonctionnalités, d'enrichir la documentation avec des tutos et plus de littérature sur le sujet.
Le projet est open source sous la licence Apache 2.0, vous pouvez donc l'utiliser pour vos projets commerciaux!
Si vous avez des suggestions pour enrichir le projet, n'hésitez surtout pas à me contacter!

magento-delete-orders

Lors qu'un site sous Magento est en production, il peut s'averer très utile - je pense que personne ne dira le contraire - de tester si le passage d'une commande s'effectue correctement. Ci cette étape est validée, la commande doit apparaitre dans le backend avec toutes les informations sur le client ainsi que l'achat en question.
Maintenant, le problème qui se pose est le suivant: Comment supprimer les commandes de test dans le backoffice?

Le backend permet d'annuler des commandes, mais Magento n'a pas encore implémenté une fonction pour les supprimer. Il faudra donc le faire directement dans la base de données...

Avant d'effectuer la requete suivante, le bon sens voudrait de faire un backup (on est jamais trop prudent)! Testé sous Magento 1.3.2.2.

Voici la requète :

 
SET FOREIGN_KEY_CHECKS=0;
 
TRUNCATE `sales_order`;
TRUNCATE `sales_order_datetime`;
TRUNCATE `sales_order_decimal`;
TRUNCATE `sales_order_entity`;
TRUNCATE `sales_order_entity_datetime`;
TRUNCATE `sales_order_entity_decimal`;
TRUNCATE `sales_order_entity_int`;
TRUNCATE `sales_order_entity_text`;
TRUNCATE `sales_order_entity_varchar`;
TRUNCATE `sales_order_int`;
TRUNCATE `sales_order_text`;
TRUNCATE `sales_order_varchar`;
TRUNCATE `sales_flat_quote`;
TRUNCATE `sales_flat_quote_address`;
TRUNCATE `sales_flat_quote_address_item`;
TRUNCATE `sales_flat_quote_item`;
TRUNCATE `sales_flat_quote_item_option`;
TRUNCATE `sales_flat_order_item`;
TRUNCATE `sendfriend_log`;
TRUNCATE `tag`;
TRUNCATE `tag_relation`;
TRUNCATE `tag_summary`;
TRUNCATE `wishlist`;
TRUNCATE `log_quote`;
TRUNCATE `report_event`;
 
ALTER TABLE `sales_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_datetime` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_decimal` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_int` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_text` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_varchar` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1;
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1;
ALTER TABLE `tag` AUTO_INCREMENT=1;
ALTER TABLE `tag_relation` AUTO_INCREMENT=1;
ALTER TABLE `tag_summary` AUTO_INCREMENT=1;
ALTER TABLE `wishlist` AUTO_INCREMENT=1;
ALTER TABLE `log_quote` AUTO_INCREMENT=1;
ALTER TABLE `report_event` AUTO_INCREMENT=1;
 
-- reset customers
TRUNCATE `customer_address_entity`;
TRUNCATE `customer_address_entity_datetime`;
TRUNCATE `customer_address_entity_decimal`;
TRUNCATE `customer_address_entity_int`;
TRUNCATE `customer_address_entity_text`;
TRUNCATE `customer_address_entity_varchar`;
TRUNCATE `customer_entity`;
TRUNCATE `customer_entity_datetime`;
TRUNCATE `customer_entity_decimal`;
TRUNCATE `customer_entity_int`;
TRUNCATE `customer_entity_text`;
TRUNCATE `customer_entity_varchar`;
TRUNCATE `log_customer`;
TRUNCATE `log_visitor`;
TRUNCATE `log_visitor_info`;
 
ALTER TABLE `customer_address_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `log_customer` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor_info` AUTO_INCREMENT=1;
 
-- Reset all ID counters
TRUNCATE `eav_entity_store`;
ALTER TABLE  `eav_entity_store` AUTO_INCREMENT=1;
 
SET FOREIGN_KEY_CHECKS=1;
 

Voila, maintenant vous avez une page de commandes vierge et un dashboard comme au premier jour!
[via Inchoo]

magento
Lorsqu'on m'a présenté Magento pour la première fois, j'ai été incroyablement supris par le nombre de fonctionnaliés présentent dans ce systeme.

Magento est un CMS open source très puissant dédié au développement de des sites de e-commerce.

Magento propose notamment:

  • Tarification par paliers multiples
  • Navigation avec filtrage multi-critères des produits
  • Outil d'édition de contenu statique pour la création de pages cibles
  • Gestion de l'inventaire avec articles commandés en rupture (backorders), quantités minimales et maximales
  • Mises à jour de masse sur catalogue dans le panneau d'administration
  • Gestionnaire de médias avec redimensionnement automatique des images et  filigrane

Liste plus exhaustive de fonctionnalités.

Pour ceux qui souhaitent développer un site de e-commerce avec ce CMS, j'ai regroupé quelques ressources utiles pour débuter:

Ressources

Blogs

Communautés, forums

Themes

Technique

Benchmark

Au final, j'ajouterai simplement que c'est de loin de CMS le plus complexe avec lequel j'ai eu l'occasion de travailler! L'apprentissage est long et parfois douloureux mais, comme on dit, l'enjeu en vaut la chandelle!
Magento a de nombreux avantages, mais surement autant d'inconveignants. A vous de savoir quel CMS est le mieux adapté pour répondre aux besoins de votre e-shop!

Ces petits plugins compatible avec Firefox et Internet Explorer (7 et 8 ) sont vraiment très pratique pour trouver une information pertinente en quelques clics.

openSearch

OpenSearch, c'est quoi?

OpenSearch est une collection de technologies permettant à des sites web et des moteurs de recherche de publier des résultats de recherche dans un format standardisé.

source: wikipedia

Pour créer son moteur en quelques clics, rien de plus facile: Il suffit de créer un fichier XML correpsondant au standard OpenSearch 1.1 et de le completer avec les paramètres voulu. Pour exemple, nous allons prendre celui que je viens de créer: Livedocs AS3 Search.

Objectif: créer un plugin qui utilise le moteur de recherche sur d'adobe.com pour trouver des informations sur la documentation officielle de l’actionscript 3.

Etape 1: Identifier la structurte du moteur.

En inspactant le code source du moteur, on remarque l'input correpsondant à notre champ de recherche:

openSearch_firebug

Etape 2: Préparer la requete.

En faisant une recherche sur livedocs, on se rend compte que le site execute la requete suivante:

"site:livedocs.adobe.com/flash/9.0" +{searchTerm}

Il s'agit dans ce cas d'un google custom search et les resultats affichés dépendent de l'index de google.

Etape 3: Créer le fichier XML du plugin.

Commencez par créer un nouveau ficher XML dans ce répertroire: C:\Program files\Mozilla Firefox\searchplugins.

Etant donné que les spécfifications de l'opensearch ont évolué, le plus simple reste encore de se rendre sur le site et de créer la base de son plugin à partir de l'exemple donné:

 
 <?xml version="1.0" encoding="UTF-8"?>
 <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
   <ShortName>Web Search</ShortName>
   <Description>Use Example.com to search the Web.</Description>
   <Tags>example web</Tags>
   <Contact>admin@example.com</Contact>
   <Url type="application/rss+xml"
        template="http://example.com/?q={searchTerms}&amp;pw={startPage?}&amp;format=rss"/>
 </OpenSearchDescription>
 

D'autres exemples plus détaillés ainsi que les spécifications osnt disponible ici: http://www.opensearch.org/Specifications/OpenSearch/1.1

Etape 4: Configurer et tester le fichier XML.

Pour les champs suivants, je pense qu'aucune explication ne s'impose!

<ShortName>Livedocs AS3</ShortName>
<Tags>Adobe Actionscript 3 livedocs</Tags>
<Description>Search in adobe.com AS3 livedocs</Description>
<Contact>admin@example.com</Contact>
<InputEncoding>UTF-8</InputEncoding>
<SyndicationRight>limited</SyndicationRight>

Pour associer une icone à votre plugins, 2 solutions s'offrent a vous:
- Préciser l'url de l'icone:

<img alt="" width="16" height="16" />http://wwwimages.adobe.com/www.adobe.com/favicon.ico

- Convertir l'icone en base64:

<img alt="" width="16" height="16" />data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAvLy//n5+f/39/f/8/Pz//Hx8f/19fX/8vLy//j4+P/z8/P/9vb2//X19f/39/f//f39//AAAAAAAAAAAAAAAAT09P/z8/P/9/f3//f39//z8/P/8/Pz//r6+v/z8/P/9/f3//Pz8//z8/P/9vb2//z8/P/wAAAAAAAAAAAAAAAH9/f/9PT0//39/f/39/f/8fHx//f39//19fX/+Pj4//Pz8//39/f/9/f3//X19f/8/Pz/8AAAAAAAAAAAAAAACvr6//Ly8v////////////Pz8/////////////v7+//39/f///////////////////////AAAAAAAAAAAAAAAA/////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAMjG+v////////////////////////////////8xKu7/MSru//Hw/f//////8fD9//Hw/f8AAAAAAAAAAAAAAAB2cfP///////////////////////////+6uPn/JBzt/4N/9P///////////6yp+P/x8P3/AAAAAAAAAAAAAAAAJBzt/+Pi/P///////////5+b9/9aVPH/Pzjv/yQc7f/j4vz///////////8/OO//8fD9/wAAAAAAAAAAAAAAACQc7f+Rjfb////////////j4vz/JBzt/yQc7f9oYvL////////////Ixvr/JBzt//Hw/f8AAAAAAAAAAAAAAAAkHO3/Pzjv/////////////////1pU8f8kHO3/yMb6////////////dnHz/yQc7f/x8P3/AAAAAAAAAAAAAAAAJBzt/yQc7f+6uPn///////////+sqfj/Pzjv////////////8fD9/yQc7f8kHO3/8fD9/wAAAAAAAAAAAAAAACQc7f8kHO3/aGLy/////////////////8jG+v///////////5+b9/8kHO3/JBzt//Hw/f8AAAAAAAAAAAAAAAAkHO3/JBzt/yQc7f/j4vz///////////////////////////8/OO//JBzt/yQc7f/x8P3/AAAAAAAAAAAAAAAAJBzt/yQc7f8kHO3/g3/0//////////////////////+6uPn/JBzt/yQc7f8kHO3/8fD9/wAAAAAAAAAAAAAAACQc7f8kHO3/JBzt/zEq7v//////////////////////aGLy/yQc7f8kHO3/JBzt//Hw/f+fn5//r6+v/6ysq/8kHO3/JBzt/yQc7f8kHO3/rKn4////////////4+L8/yQc7f8kHO3/JBzt/yQc7f/x8P3/X19f/5+fn/+fn57/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w%3D%3D

Le noeud suivant va permettre de configurer les paramètres de la recherche (cf Etape 2):

 
<Url type="text/html" method="GET" template="http://livedocs.adobe.com/cfusion/search/index.cfm">
	  <Param name="loc" value="en_US"/>
	  <Param name="termPrefix" value="=site%3Alivedocs.adobe.com%2Fflash%2F9.0++"/>
	  <Param name="term" value="site%3Alivedocs.adobe.com%2Fflash%2F9.0++%22{searchTerms}%22"/>
	  <Param name="search_text" value="{searchTerms}"/>
	  <Param name="action" value="Search"/>
	</Url>
 

Lorsque le fichier est pret, vous pouvez le testez après avoir redémarré Firefox.

Etape 5: Publier le plugin.

Créez un compte de développeur sur le site de mozilla, renseignez encore quelques informations sur le plugin et publiez le!
Mozilla est assez rigoureux en ce qui concerne le respect de ses utilisateur et la qualité des plugins, il se peut donc que le plugin soit refusé s'il ne respecte pas certaines règles!

Ressources:

Grace aux nouvelles techniques Marketing et de ciblage publicitaire sur Internet, le comportement des consommateurs change. Beaucoup d'efforts sont conscrés pour identifier le canal de vente et de communication les plus appropriée pour proposer des offres plus adaptées aux consommateurs.

Ce changement se fait sans aucun doute au détriment de la publicitié classique, qui a de plus en plus de mal à rivaliser face des méthodes plus efficaces.

A quand la mort de la publicité classique ?

Page 1 sur 41234