• Gazouillement

    • Annonces

    Module de suivi des conversions Prestashop Facebook

    Le module de suivi des conversion Facebook Prestashop.

    Besoin d'un suivi de votre retour sur investissement des publicités Facebook? Avec ce facile à utiliser Prestashop module, vous pouvez. Ce module ajoute automatiquement le code de suivi des conversions quand un client effectue un achat vous permettant de mesurer si vos annonces sont efficaces.

    Vous pouvez télécharger le Facebook du suivi des conversions Prestashop module en utilisant le lien ci-dessous:
    Module de suivi des conversions Prestashop Facebook

    5 mai 2010 à 01:41 - Commentaires

    IPhone 3G d'attacher sur votre iPad

    Sera-ce possible?

    Voici les niveaux de prix:

    Qu'il y aura une raison pour obtenir le 3G + WiFi si attache est possible?

    27 Janvier 2010 à 14:17 - Commentaires

    Bicio GoRide iPhone Bike Mount

    Le GoRide iPhone Bike Mount est conçu pour être monté sur le guidon des vélos, et il est conçu pour vous donner accès à votre iPhone tout en vous circulez avec votre moto sans pour autant sacrifier la sécurité et la commodité.

    Bicio-GoRide-iPhone-Bike-Mount

    Bicio GoRide iPhone Bike Mount

    Bicio GoRide iPhone Bike Mount

    Il est livré avec un étui de protection que vous pouvez conserver sur votre iPhone tout le temps si vous voulez, le cas, alors slots directement dans le support pour vélo et vous êtes prêt à sortir sur votre vélo sans pour beaucoup d'effort.

    Si vous en voulez un, le Bicio GoRide iPhone Bike Mount est disponible dès maintenant pour 29,99 $ de Bicio .

    9 Décembre 2009 à 15:11 - Commentaires

    eHow - Comment faire pour réparer le verre sur un iPhone

    ds_f3f0ca5c-8a00-4c3c-a2ee-cfcc8c69d329
    eHow Contribution à la rédaction

    Si votre écran de l'iPhone 3G est fissuré, vérifiez d'abord avec Apple pour voir si votre garantie couvre la réparation ou un remplacement. Cette réparation peut être difficile et devrait être tentée que si l'image derrière l'écran de verre est visible.

    Avec ces précautions, le réparer vous-même devrait coûter environ 45 $. Cette méthode par Lee Waterman a reçu plusieurs commentaires positifs.

    Difficulté: Modérément Défier

    Instructions

    Les choses dont vous aurez besoin:

      Prenant l'iPhone en dehors

    1. Étape 1

      Éteignez l'iPhone. Retirez la carte SIM en insérant un trombone dans le petit trou en haut. Retirez les deux vis au fond. Poussez la ventouse sur le verre. Tirer vers le haut pour séparer le verre.

    2. Étape 2

      Trois câbles tiendra les deux pièces ensemble. Supprimer les deux premières à l'aide d'un trombone. Le troisième est sous un onglet pour les deux premiers câbles. Le dernier câble doit être tiré doucement.

    3. Étape 3

      Sur l'écran, retirez les six vis: deux d'un côté, l'un sur le bas de la surface, derrière la vitre, une visible de l'autre côté et deux par une bande de ce côté.

    4. Etape 4

      Pour retirer l'écran LCD, utilisez un trombone sur les côtés pour accrocher le coin inférieur qui a un cercle, et tirez.


      Retrait du verre brisé

    5. Étape 1

      Aide de pincettes, enlever le ruban noir derrière la vitre sur chacun des quatre bords.

    6. Étape 2

      Utilisez un sèche-cheveux sur les bords du verre pendant environ 5 minutes pour chauffer la colle.

    7. Étape 3

      Soulevez le verre du support en plastique. Assurez-vous d'enlever tous les débris de verre.


      Installation du verre

    8. Étape 1

      Placez le ruban adhésif en haut et en bas de la pochette en plastique.

    9. Étape 2

      Sur l'écran de verre neuves, ôtez tout le film à partir du bas noir et haut, en laissant le film de protection sur la vitre donc pas les empreintes digitales seront pénétrer à l'intérieur. Il y aura probablement deux morceaux de film sur les parties noires.

    10. Étape 3

      Alignez le verre avec le titulaire, en s'assurant que le câble passe sous la porte. Lorsque les deux pièces correspondent, appuyez vers le bas pour coller le verre pour les bandes adhésives.

    11. Etape 4

      Retirez le film de la vitre.


      Remontage

    12. Étape 1

      Mettez l'écran LCD arrière dans le support de tous les trous pour les vis alignés. Appuyez dessus en place. Remplacer toutes les vis.

    13. Étape 2

      Appuyez sur tous les câbles en place dans l'ordre inverse de leur élimination.

    14. Étape 3

      Alignez les deux pièces - l'écran et l'unité - et les presser ensemble avec les trous alignés.

    15. Etape 4

      Remplacer les vis et votre carte SIM.



    Conseils et avertissements

    Ressources

    27 Novembre 2009 à 19:38 - Commentaires

    Prestashop manuellement Conversion des charrettes de commandes

    Module Cart2Order Prestashop

    J'ai récemment eu le besoin de convertir des chariots des clients en commandes réelles et qu'il n'y avait pas un moyen facile de le faire avec l'installation de base et un module de code n'existait pas, je l'ai écrit moi-même.

    Fondamentalement, ce que ce module est simple ne convertir un panier à la clientèle dans un ordre. Voici comment cela fonctionne par exemple:

    Si vous avez, disons, par exemple, Google Checkout et Paypal modules installés, vous aurez la possibilité de convertir le panier d'un client en utilisant un de ces modules de paiement installés.

    Vous pouvez télécharger le module Cart2Order en utilisant le lien ci-dessous:
    Module Prestashop Cart2Order

    Forum de discussion lien ci-dessous:
    http://bit.ly/oTglW

    16 Novembre 2009 à 01:27 - Commentaires

    Empêcher la copie de votre site de conception des modèles

    J'ai été la navigation sur le forum prestashop et a fini sur un thread concernant un problème avec les gens voler une conception du site en téléchargeant les fichiers de modèle à partir du répertoire du thème. Il m'a semblé que c'est probablement quelque chose que ceux d'entre vous qui utilisent d'autres systèmes de template de votre site peuvent également faire face, alors pensé que je poste la solution ici aussi.

    Le problème est que bien que les fichiers PHP ne peut pas être lu directement sur votre navigateur, les fichiers source peuvent être par exemple les fichiers se terminant par. Tpl

    Par exemple, prenons un coup d'oeil au fichier suivant qui a les autorisations par défaut:

    Non protégés fichier de modèle

    La meilleure façon de protéger votre site est de changer les autorisations sur ces fichiers à 600. Ce sera les rendre accessibles seulement par votre propre code sur le serveur et toute personne présente Nosy assez d'essayer de les regarder avec un 403 (interdit) d'erreur. La même chose est vraie pour les fichiers php (bien que cela ne devrait pas afficher la source, sauf si votre configuration de serveur est en panne).

    Jetez un oeil à ce fichier avec les permissions à 600:

    Protégé fichier de modèle

    Simple.

    13 Novembre 2009 à 16:45 - Commentaires

    Module Prestashop Personnalisation des modèles

    S'il vous plaît ne pas modifier les originaux!

    Je suis tombé sur ce petit bijou il ya un moment sur le forum Prestashop, et pensé que je pourrais attirer l'attention sur elle dans l'espoir que cela aidera quelqu'un, quelque part.

    Je ne suis pas à plaindre, mais ma haine pour animaux de compagnie sont les gens qui modifier la source d'origine des fichiers sur leurs magasins, quand il n'y a pas besoin. Il m'énerve dans Zen Cart quand les gens heureux modification de la «classique» et «par défaut» les fichiers de modèle, puis se demande pourquoi il était difficile de mettre à niveau ... et voilà et les gens voici commencé à faire la même chose pour le thème par défaut Prestashop trop. Aaaargh! Comment est-il difficile de faire un copier, renommer et éditer cette version à la place?

    Lorsque mes instincts puriste pas cependant, le chemin du retour dans les mauvais jours, a été quand il s'agissait de fichiers. Tpl qui ont été stockées dans les répertoires module eux-mêmes -, il semble comme s'il n'y avait pas d'autre choix que de les modifier si vous souhaitez personnaliser la sortie pour votre magasin - ou y est!

    La réponse est étonnamment simple, et vous fera signe de la tête de l'appréciation reconnaissante ... tout ce que vous devez faire est de créer une modules / dans votre répertoire thème personnalisé (bien que vous n'allez pas travailler dans le répertoire du thème par défaut vous êtes maintenant), copie de l'original. tpl à partir du répertoire du module dans lui et loin de modifier le contenu de votre coeur.

    Par exemple, vous pouvez prendre le fichier de modèle à partir du module blockadvertising (blockadvertising.tpl) et faire une copie dans le répertoire / themes / mycooltheme / modules / blockadvertising. Maintenant modifier la copie de l'original qui ressemblait à:

    
    
    (S = l 'mod Publicité =' blockadvertising ')

    à

    
    
    (Ls = 'Un site fantastique pour mod goodies Prestashop =' blockadvertising ')

    la joie pure! Bien que les observateurs noteront que, si vous modifiez le fichier $ (image) variable et place d'un chemin d'accès statique à votre graphique à sa place, vous aurez à changer l'image dans le répertoire du module .... ainsi vous ne pouvez pas tout avoir je suppose.

    13 Novembre 2009 à 16:13 - Commentaires

    Écrire votre propre module Prestashop - Partie 5

    La touche finale

    Introduction

    Dans cette dernière partie de notre module de base d'écriture série tutoriel nous allons voir les étapes finales de transformer notre Tutorialthird module de classe dans un modèle de base que nous pouvons utiliser pour faire démarrer l'écriture de nouveaux modules. Plutôt que de rééditer le même code vieux de plus, nous allons seulement discuter des changements, mais j'ai ajouté un lien de téléchargement à la fin de cette partie afin que vous puissiez saisir le code final et l'utiliser comme base pour vos propres projets. Nous allons faire appel de ce module "Squelette" - un nom que nous allons remplacer par notre propre quand il s'agit de produire de nouveaux modules sur cette base.

    Styling le formulaire de configuration

    Les premiers changements que nous allons faire sont de nature purement cosmétique, mais cela est un élément important, car nous voulons offrir une interface cohérente pour nos utilisateurs. Notre code de formulaire ressemble à:

    	 _displayForm private function ()
    	 (
    		 $ This-> _html .= '
    		 <form method="post"> action="'.$_SERVER['REQUEST_URI'].'"
    				 <label>. $ this-> l ('Message à la').'</ monde label>
    				 class="margin-form"> <div
    
    					 <input type="text" name="our_message" />
    				 </ Div>
    				 <input type="submit" name="submit" value="'.$this-> l ('Mettre à jour').'" class = "bouton" />
    
    		 </ Form> ';
    	 )
    

    La convention pour ces écrans de configuration consiste à encapsuler les paramètres dans un fieldset, et nous aussi besoin d'ajouter un match amical Nice (traduisible) légende complète avec l'icône. Notre code va maintenant ressembler à:

    	 _displayForm private function ()
    	 (
    		 $ This-> _html .= '
    		 <form method="post"> action="'.$_SERVER['REQUEST_URI'].'"
    
    			 <fieldset>
    				 <legend> <img src="../img/admin/cog.gif" alt="" /> class="middle". $ this-> l ('> Paramètres légende').'</
    
    				 <label>. $ this-> l ('Message à la').'</ monde label>
    				 class="margin-form"> <div
    					 <input type="text" name="our_message" />
    
    				 </ Div>
    			 <input type="submit" name="submit" value="'.$this-> l ('Mettre à jour').'" class = "bouton" />
    
    			 </ Fieldset>
    		 </ Form> ';
    	 )
    

    Notre dernier changement cosmétique est d'ajouter un écran de position à la tête de nos paramètres juste au cas où l'utilisateur a oublié d'où ils sont! Nous faisons cela en ajoutant la ligne suivante au début de l'getContent () fonction:

     $ This-> _html .= '<h2>. $ This-> displayName.' </ H2> ';
    

    Pré-remplissage des champs de formulaire de configuration

    Un autre élément manquant dans la conception de notre tutorial original a été l'affichage des paramètres actuels sous forme de configuration du module, et même quand la forme revient de mettre à jour les valeurs des champs sont vides, donc nous avons besoin pour résoudre ce petit problème aussi. Il ya deux possibilités que nous avons besoin pour gérer:

    1. l'affichage initial du formulaire doit afficher la configuration actuelle (le cas échéant)
    2. Après une forme mise à jour nous devrions afficher les données entrées par l'utilisateur

    Nous pouvons utiliser la configuration:: get () pour récupérer les paramètres actuels de la base de données et outils:: getValue () pour obtenir le contenu du champ. Les outils:: getValue () prend un deuxième paramètre qui est utile dans ce contexte, car cela indique un défaut "d'utiliser le champ devrait être vide. Nous pouvons maintenant définir la valeur "" attribut de notre balise d'entrée de manière appropriée l'utilisation de ces deux fonctions, si notre code final de saisie de formulaire sera:

     <input type="text" name="our_message" value="'.Tools::getValue('our_message', Configuration::get($this-> nom. _message')).'"/>
    

    Un autre changement utile de faire lorsqu'il s'agit de plusieurs champs dans une configuration, c'est de déplacer le code de base de données mise à jour de Sa fonction privée. Pour cela, nous allons remplacer la ligne:

    
     if (! sizeof ($ this-> _postErrors))
    	 (
    		 Configuration:: updateValue ($ this-> nom. _message, Outils:: getValue ('our_message'), true);
    		 $ This-> _html .= '<div class="conf confirm">. $ This-> l (' Paramètres jour').'</ div> ';
    	 )
    

    avec le texte suivant:

     if (! sizeof ($ this-> _postErrors))
    	 $ This-> _postProcess ();
    

    Et nous ajoutons la nouvelle fonction membre privée à notre classe pour gérer les mises à jour réelles dans un seul endroit facile à identifier:

    	 _postProcess private function ()
    	 (
    		 Configuration:: updateValue ($ this-> nom. _message, Outils:: getValue ('our_message'), true);
    
    		 $ This-> _html .= '<div class="conf confirm">. $ This-> l (' Paramètres jour').'</ div> ';
    	 )
    

    types de manutention autre domaine

    Dans le téléchargement définitif du module squelette J'ai aussi ajouté des exemples d'autres types de champs qui agira en tant que raccourcis utiles à la création de votre formulaire de configuration du module. Cela couvre les cases à cocher, boutons radio, textarea et listes déroulantes. Tout ce que vous devez faire est d'ajouter / renommer les champs, ajouter la validation nécessaire à l'_postValidation () et modifier le code dans la mise à jour _postProcess () la fonction appropriée.

    Pour les paramètres obligatoires, vous devriez également tester leur présence dans la fonction d'installation et de prendre les mesures appropriées pour éviter que votre module erreurs entraînant dans le Front Office, par exemple en fixant des valeurs par défaut appropriées à l'aide de la configuration:: updateValue () la fonction. Sinon cela peut être effectuée dans le constructeur de module, mais il est plus correct d'effectuer cette installation au sein de ().

    Ajout de l'emplacement d'affichage multiple crochets

    Notre module Tutorialthird ne pouvait afficher notre contenu dans la colonne de gauche car cela a été le crochet que nous avons mis en œuvre. Heureusement il est très facile à mettre en œuvre la «transplantation d'un module" BackOffice fonctionnalité dans notre code. Dans la forme la plus simple, nous allons utiliser la même sortie dans tous les endroits, mais si nécessaire tous ces crochets supplémentaires peuvent produire des résultats différents.

    Pour produire la même puissance dans tous les endroits populaires, nous avons simplement besoin d'implémenter les fonctions crochet supplémentaire dans notre module et appeler le code original crochet pour générer la sortie. Notez que nous ne fait appel registerHook () pour celui par défaut dans l'installation () fonction membre, et que le Back Office s'occupe de l'enregistrement des autres.

    	 hookRightColumn fonction ($ params)
    	 (
    		 return $ this-> hookLeftColumn ($ params);
    	 )
    
    	 hookTop fonction ($ params)
    	 (
    		 return $ this-> hookLeftColumn ($ params);
    	 )
    
    	 hookHome fonction ($ params)
    	 (
    		 return $ this-> hookLeftColumn ($ params);
    	 )
    
    	 hookFooter fonction ($ params)
    	 (
    		 return $ this-> hookLeftColumn ($ params);
    	 )
    

    Résumé

    Au cours de cette série d'articles, vous devriez avoir appris comment fonctionne le système de base de module dans Prestashop et être en mesure de modules de code qui offrent la production dans les zones présentation différente dans le Front Office. Vous aurez également un cadre de base du bon code à vos propres modules sur. Vous avez sans doute remarqué qu'à aucun moment avons-nous réellement utilisé smarty ou de ses fichiers de modèle à la création de notre module - ce qui est délibéré, car ils peuvent être considérés comme une entité distincte de la conception du module lui-même.

    Smarty est très flexible, mais le choix de l'utiliser est fonction de nombreux facteurs, et pour des raisons de performances, il est préférable d'éviter son utilisation si possible. Plus tard articles examinera comment et quand utiliser smarty pour améliorer la fonctionnalité de votre modules même si, comme il est un élément fondamental de l'architecture Prestashop.

    Vous pouvez télécharger le squelette complet de module de code en utilisant le lien ci-dessous:

    Skeleton v0.1.0

    13 Novembre 2009 à 15:49 - Commentaires

    Écrire votre propre module Prestashop - Partie 4

    La validation des formulaires et la sécurité

    Introduction

    Tout en étant suffisamment fonctionnel pour ce qu'il fait, le module que nous avons créé dans la partie 2 ne nous présentent certaines questions à considérer lors de la mise en œuvre du "monde réel" modules d'étendre Prestashop. En particulier, l'entrée d'utilisateur, nous avons capturé grâce à notre formulaire a été écrit directement à l'entrée de configuration sans aucun contrôle pour déterminer si elle était valable, et nous n'avons pas tenir compte du type de données saisies.

    Dans ce tutoriel, nous allons examiner la question générale de la vérification de formulaire de saisie et de la sécurité, tant pour Back Office et Front Office Forms et les entrées d'utilisateur ainsi que la recherche à améliorer notre code à la fois fonctionnel et esthétique.

    La classe Configuration revisité

    Dans la partie 3, nous avons abordé brièvement sur un paramètre supplémentaire qui peut être passé à la configuration:: updateValue () méthode de la classe. Si vous vous souvenez de la fonction a la forme suivante:

      updateValue ($ key, $ valeurs, $ html = false); 

    Dans la partie 3, nous avons ignoré le paramètre $ html et permet la fonction à utiliser la valeur par défaut de «faux». En faisant cela, nous fait par inadvertance, a ajouté le premier élément de la sécurité et la validation de notre code. Lorsqu'il est réglé à "false" l'updateValue () méthode effectivement pré-traite la valeur à écrire en utilisant le code suivant ($ string est la valeur d'entrée passée à la fonction):

      $ Chaine = strip_tags (nl2br2 ($ string)); 

    Vous pouvez tester cela en saisissant une partie de code HTML dans l'écran de configuration pour le module que nous avons créé dans la partie 3. Vous devriez voir que les balises HTML dans vos commentaires sont supprimés. Nous pourrions modifier le module TutorialSecond pour permettre l'entrée du code HTML dans le formulaire, en changeant la ligne 29 dans le fichier source à:

      Configuration:: updateValue ($ this-> nom. _message, Outils:: getValue ('our_message', true)); 

    Ceci illustre le principe fondamental que nous avons besoin d'employer tout au long de notre propre code afin de s'assurer qu'il est sécuritaire et fonctionne de façon prévisible. Heureusement Prestashop nous fournit quelques outils que nous pouvons utiliser dans notre propre code pour le rendre plus sûr et plus robuste.

    Validation

    Prestashop nous fournit une classe appelée Valider que nous pouvons utiliser pour déterminer si une intervention de l'utilisateur que nous acceptons est valide ou non. La liste des fonctions membres est assez grand, mais il est utile de reproduire ici quelques-uns pour illustrer ce point - pour une liste complète, vous devez consulter les classes / Validate.php fichier dans votre distribution Prestashop.

     isEmail ($ email);
     isFloat ($ float);
     isUnsignedFloat ($ float);
     isCleanHtml ($ html);
     isDate ($ date);
     isBool ($ bool);
     isPhoneNumber ($ Numéro de téléphone);
     isPostCode ($ code postal);
     isInt ($ int);
     isUnsignedInt ($ int);
     isUnsignedId ($ id);
     isNullOrUnsignedId ($ id);
     isUrl ($ url);
     isAbsoluteUrl ($ url);
     isFileName ($ nom);
    

    A titre d'exemple nous pouvons utiliser la isCleanHtml () fonction dans la liste ci-dessus comme un test dans notre module pour éviter une faille XSS (cross site scripting) - de cette façon nous pouvons permettre l'entrée html raisonnables en toute sécurité.

    La validation des données de notre formulaire

    Comme précédemment, nous allons créer un nouveau module basé sur la version précédente. Pourquoi ne pas essayer de modifier la classe Tutorialsecond-vous pour créer le module Tutorialthird? Si vous ne souhaitez pas, alors il suffit d'élargir et de copier le code ci-dessous, le cas échéant!

     <? Php
     classe Tutorialthird s'étend Module
     (
    	 ''Privé _html $ =;
    
    	 function __construct ()
    	 (
    		 $ This-> nom = 'tutorialthird;
    		 parent:: __construct ();
    
    		 $ This-> onglet = 'Tutoriels eCartService.net;
    		 $ This-> version = '0 .1,0 ';
    		 $ This-> displayName = $ l this-> («Troisième Tutorial module ');
    		 $ This-> description = $ l this-> («Notre troisième module - la sécurité et la validation ');
    	 )
    
    	 Public Function install ()
    	 (
    		 parent:: install ();
    
    		 if (! $ this-> registerHook («colonne de gauche '))
    			 return false;
    	 )
    
    	 getContent fonction publique ()
    	 (
    		 if (Outils:: isSubmit ('submit'))
    		 (
    			 Configuration:: updateValue ($ this-> nom. _message, Outils:: getValue ('our_message'));
    		 )
    
    		 $ This-> _displayForm ();
    
    		 return $ this-> _html;
    	 )
    
    	 _displayForm private function ()
    	 (
    		 $ This-> _html .= '
    		 <form method="post"> action="'.$_SERVER['REQUEST_URI'].'"
    
    				 <label>. $ this-> l ('Message à la').'</ monde label>
    				 class="margin-form"> <div
    					 <input type="text" name="our_message" />
    
    				 </ Div>
    				 <input type="submit" name="submit" value="'.$this-> l ('Mettre à jour').'" class = "bouton" />
    
    		 </ Form> ';
    	 )
    
    	 hookLeftColumn fonction publique ()
    	 (
    		 <div retour »class="block"> <h4>.  Configuration:: get ($ this-> nom. _message »).  »</ H4> </ div> ';
    	 )
    
     )
     / / Fin de: tutorialthird.php
    

    La première étape du processus consiste à modifier notre getContent () pour ajouter l'étape de validation:

    	 getContent fonction publique ()
    	 (
    		 if (Outils:: isSubmit ('submit'))
    		 (
    			 $ This-> _postValidation ();
    
    			 if (! sizeof ($ this-> _postErrors))
    			 (
    				 Configuration:: updateValue ($ this-> nom. _message, Outils:: getValue ('our_message'), true);
    				 $ This-> _html .= '<div class="conf confirm">. $ This-> l (' Paramètres jour').'</ div> ';
    			 )
    			 d'autre
    			 (
    				 foreach ($ this-> _postErrors AS $ err)
    				 (
    					 $ This-> _html .= '<div class="alert error">'. $ Err. "</ Div> ';
    				 )
    			 )
    		 )
    
    		 $ This-> _displayForm ();
    
    		 return $ this-> _html;
    	 )
    

    Nous avons également besoin d'ajouter une déclaration de la variable membre _postErrors $ que nous avons introduite au début de notre définition de la classe par exemple

     classe Tutorialthird s'étend Module
     (
    	 ''Privé _html $ =;
    	 privé _postErrors $ = array ();
    

    Le flux logique lorsque nous envoyer des données au getContent () est maintenant à appeler notre _Validation () pour tester les domaines soumis et de mettre notre tableau $ _postErrors avec les messages d'erreur. S'il ya des erreurs, nous pouvons les afficher avant réafficher le formulaire. Si les contrôles de validation sont passés, nous afficher un message "succès" de donner une rétroaction visuelle que la configuration a été mise à jour. Un test simple XSS dans le _Validation () pour notre exemple pourrait être:

    	 _postValidation private function ()
    	 (
    		 if (! Valider:: isCleanHtml (Tools:: getValue ('our_message')))
    			 $ This-> _postErrors [] = L $ this-> («Le message que vous avez entré n'est pas autorisé, désolé");
    	 )
    

    De toute évidence vous n'êtes pas limité à l'utilisation des tests fournis par la classe validez, et vous pouvez également appliquer plusieurs tests à chaque domaine soumis - pour tester la longueur etc Le principe de base est la même dans tous les cas, quelle que soit la complexité de votre validation exigences.

    Résumé

    Dans cet article, nous avons amélioré notre gestion des formulaires en ajoutant de validation des entrées utilisateur pour plus de sécurité et / ou la fiabilité. Nous avons également ajouté quelques rétroaction visuelle lorsque la configuration a été mis à jour avec succès. Dans la dernière partie de cette série, nous allons ajouter un peu de cosmétiques touche finale à notre formulaire de standardiser l'interface et améliorer la convivialité. Nous étudierons également des idées pour améliorer et étendre le «modèle» module, nous avons créé.

    13 Novembre 2009 à 15:35 - Commentaires

    Écrire votre propre module Prestashop - Partie 3

    Stockage de configuration du module

    Introduction

    Dans la troisième partie de cette série, nous allons voir comment nous pouvons stocker des données de configuration de nos modules dans la base de Prestashop, et comment nous pouvons permettre aux utilisateurs d'interagir avec ces données pour contrôler le comportement du module. Nous allons aussi brièvement comment nous pouvons générer une sortie de notre module de fournir une rétroaction visuelle de la configuration change.

    Gestion des paramètres utilisateur

    Nous allons appeler ce module "TutorialSecond" si nous avons de nouveau besoin de créer un nouveau répertoire module et fichier de classe - qui sera nommé "tutorialsecond" et "tutorialsecond.php" respectivement. Le fichier de classe (tutorialsecond.php) doit contenir les éléments suivants:

      <? Php
     classe Tutorialsecond s'étend Module
     (
    	 ''Privé _html $ =;
    
    	 function __construct ()
    	 (
    		 $ This-> nom = 'tutorialsecond;
    		 parent:: __construct ();
    
    		 $ This-> onglet = 'Tutoriels eCartService.net;
    		 $ This-> version = '0 .1,0 ';
    		 $ This-> displayName = $ l this-> ('Second Tutorial module');
    		 $ This-> description = $ l this-> («Notre second module - Un" Bonjour tout le monde "redux");
    	 )
    
    	 getContent fonction publique ()
    	 (
    
    	 )
    
    	 _displayForm private function ()
    	 (
    
    	 )
    
     )
     / / Fin de: tutorialsecond.php 

    Vous remarquerez que nous avons mis en place deux nouvelles fonctions membre: getContent () et:: _displayForm (). Si vous téléchargez le fichier sur votre serveur et installer ce module à ce stade, vous devriez voir une nouvelle option sur la liste des modules d'écran pour «Deuxième Tutorial Module". Il y aura désormais un ">> Configurer» dans le module d'entrée, mais il sera simplement en cliquant retourner un vide Back Office page. La présence de l':: getContent () fonction membre est responsable de ce qu'il assure l'interface entre notre module et le Back Office.

    En plus de ces deux nouvelles fonctions, nous avons également ajouté la variable membre $ _html privé, qui nous servira plus tard dans cet article de construire la puissance requise pour l'affichage dans le back office.

    Stockage et récupération des données de configuration

    Prestashop propose un "Configuration" de classe qui offre des fonctions de plusieurs membres de manipuler les données de configuration, mais les deux principales fonctions qui seront les plus couramment utilisés sont les suivants:

      Configuration:: updateValue ($ key, $ valeurs, $ html = false);
     Configuration:: get ($ key, $ id_lang = NULL); 

    La configuration:: updateValue () la fonction nous permet de stocker une option de configuration dans la base de données (éventuellement en plusieurs langues dans ce cas, le paramètre $ valeurs sera un tableau) et de la configuration:: get () nous permet de récupérer les données de configuration pour une langue par défaut sélectionnée ou le magasin. Nous allons ignorer les paramètres qui ont des valeurs par défaut pour le moment, mais reviendra sur le paramètre $ html dans la configuration:: updateValue () dans le prochain article, quand on regarde l'objet d'une validation de formulaire.

    Mettre en œuvre le configurer l'écran

    Dans notre fichier source nous avons créé un _displayForm député function (). Ceci est tout à fait facultative que tout le code d'interface pourrait être placé dans le getContent () fonction membre, mais il est fortement recommandé que vous vous séparez de ce à un souci de faciliter la maintenance du code. Nous allons créer un simple formulaire dans cette fonction à partir avec laquelle nous pouvons recueillir les commentaires propriétaire du magasin.

      _displayForm private function ()
    	 (
    		 $ This-> _html .= '
    		 <form method="post"> action="'.$_SERVER['REQUEST_URI'].'"
    				 <label>. $ this-> l ('Message à la').'</ monde label>
    				 class="margin-form"> <div
    
    					 <input type="text" name="our_message" />
    				 </ Div>
    				 <input type="submit" name="submit" value="'.$this-> l ('Mettre à jour').'" class = "bouton" />
    
    		 </ Form> ';
    	 ) 

    Vous pouvez voir que le:: _displayForm () ajoute simplement la fonction standard de code de formulaire html à notre variable membre $ _html, avec l'objectif de formulaire, $ _SERVER ['REQUEST_URI']. Prestashop's Back Office architecture Cet itinéraire à notre:: fonction membre getContent classe pour nous de gérer lorsque le formulaire est affiché.

    Nous avons ensuite besoin d'ajouter du code à notre:: getContent () pour effectivement afficher le formulaire et de traiter l'envoi du formulaire.

      getContent fonction publique ()
    	 (
    		 if (Outils:: isSubmit ('submit'))
    		 (
    			 Configuration:: updateValue ($ this-> nom. _message, Outils:: getValue ('our_message'));
    		 )
    
    		 $ This-> _displayForm ();
    
    		 return $ this-> _html;
    	 ) 

    Le:: getContent () utilise d'abord une autre classe Prestashop "Outils" pour vérifier si nous nous occupons de l'action post du formulaire, ou si cette fonction est appelée dans une autre voie à savoir un clic sur "Configuration" dans le module de liste - le paramètre est le nom que nous a donné à notre bouton "Actualiser" dans le formulaire.

    Si la fonction est appelée directement par le back office (dans lequel cas Outils:: isSubmit ('submit') retourne FALSE), alors que nous appelons la forme fonction de rendu, nous avons créé ci-dessus et retourne le résultat, capturés dans le $ this- > variable _html, pour le Back Office pour l'affichage.

    Si la fonction est appelée à la suite de notre formulaire d'être affecté, alors nous pouvons stocker nos paramètres de configuration dans la base de données avec la valeur inscrite sur notre formulaire. Nous avons à nouveau utiliser la classe Outils pour obtenir la valeur de la variable de formulaire en utilisant l'appel à Outils:: getValue ('our_message ») où« our_message »est le nom du champ de saisie dans notre formulaire.

    Vous pouvez voir que j'ai ajouté le nom de notre module au début de la configuration nom de l'article - est de veiller à ce que la clé de configuration est unique, car l'espace de noms pour ces clés est partagé pour l'ensemble du magasin.

    Une fois que nous avons stocké nos données de configuration sous la forme est de nouveau affiché, prêt pour une plus grande participation, si nécessaire.

    Module de sortie sur une page

    Nous avons maintenant une méthode de capture d'entrée de la propriétaire du magasin et de l'enregistrer dans la base de données, la prochaine étape logique serait de faire quelque chose avec lui par exemple l'afficher sur une page. Dans la partie 1 de la série, nous avons parlé des «crochets» par rapport aux modules ajoutant des fonctionnalités. Afin d'utiliser ce que nous devons dire que notre module PrestaShop voudrais crochet dans le front office et nous le faire en utilisant la fonction suivante (définie dans la classe de base Module):

      $ This-> registerHook ($ hook_name); 

    Le paramètre $ hook_name se réfère à l'un des différents points que le noyau Prestashop permet aux modules de sortie insérer et / ou le traitement des données, mais pour l'instant nous allons utiliser un en particulier - "colonne de gauche, ce qui nous permet d'ajouter du contenu dans la colonne de gauche de toutes les pages. Afin d'initialiser le crochet il faut ajouter la surcharge suivante nouvelles dans notre propre classe:

      Public Function install ()
    	 (
    		 parent:: install ();
    
    		 if (! $ this-> registerHook («colonne de gauche '))
    			 return false;
    	 ) 

    Cela indique Prestashop pour exécuter notre crochet module quand il est rendu le contenu de la colonne de gauche de toutes les pages. Nous avons ensuite besoin d'ajouter une fonction pour gérer le rappel crochet. La convention a pour nom la fonction que le nom Hook précédé d'un "crochet":

      hookLeftColumn fonction publique ()
    	 (
    		 <div retour »class="block"> <h4>.  Configuration:: get ($ this-> nom. _message »).  »</ H4> </ div> ';
    	 ) 

    Dans notre exemple simple, nous sommes juste emballage de nos paramètres de configuration dans certaines balises HTML standard pour qu'il s'affiche correctement sur notre page.

    Si vous avez déjà installé le module, vous devriez maintenant désinstaller puis réinstaller pour s'assurer que le crochet est correctement enregistré avec le noyau Prestashop. Maintenant, vous pouvez entrer une valeur dans l'écran de configuration pour le module - par exemple: «Bonjour tout le monde», et il sera de sortie que le titre d'une case dans la colonne de gauche de votre magasin. Le code complet pour le deuxième exemple devrait ressembler à:

      <? Php
     classe Tutorialsecond s'étend Module
     (
    	 ''Privé _html $ =;
    
    	 function __construct ()
    	 (
    		 $ This-> nom = 'tutorialsecond;
    		 parent:: __construct ();
    
    		 $ This-> onglet = 'Tutoriels eCartService.net;
    		 $ This-> version = '0 .1,0 ';
    		 $ This-> displayName = $ l this-> ('Second Tutorial module');
    		 $ This-> description = $ l this-> («Notre second module - Un" Bonjour tout le monde "redux");
    	 )
    
    	 Public Function install ()
    	 (
    		 parent:: install ();
    
    		 if (! $ this-> registerHook («colonne de gauche '))
    			 return false;
    	 )
    
    	 getContent fonction publique ()
    	 (
    		 if (Outils:: isSubmit ('submit'))
    		 (
    			 Configuration:: updateValue ($ this-> nom. _message, Outils:: getValue ('our_message'));
    		 )
    
    		 $ This-> _displayForm ();
    
    		 return $ this-> _html;
    	 )
    
    	 _displayForm private function ()
    	 (
    		 $ This-> _html .= '
    		 <form method="post"> action="'.$_SERVER['REQUEST_URI'].'"
    
    				 <label>. $ this-> l ('Message à la').'</ monde label>
    				 class="margin-form"> <div
    					 <input type="text" name="our_message" />
    
    				 </ Div>
    				 <input type="submit" name="submit" value="'.$this-> l ('Mettre à jour').'" class = "bouton" />
    
    		 </ Form> ';
    	 )
    
    	 hookLeftColumn fonction publique ()
    	 (
    		 <div retour »class="block"> <h4>.  Configuration:: get ($ this-> nom. _message »).  »</ H4> </ div> ';
    	 )
    
     )
     / / Fin de: tutorialsecond.php 

    Résumé

    Dans cet article, nous avons étendu notre premier module d'inclure un formulaire de configuration de base et ont utilisé une fonction de crochet pour afficher la sortie de notre module dans la colonne de gauche de nos pages. Dans la prochaine partie de cette série nous allons chercher à améliorer la facilité de configuration en quelque chose qui pourrait être utilisé dans un module de mise en œuvre réelle. Il s'agira notamment de valider l'entrée d'utilisateur à la forme, pré-remplissage des champs du formulaire, le cas échéant en fonction de la configuration actuelle et l'affichage des erreurs et des avertissements module dans les écrans de Back Office.

    13 Novembre 2009 à 15:28 - Commentaires