• Cinguettio

    • Annunci

    Facebook monitoraggio delle conversioni Prestashop Module

    Il modulo di monitoraggio delle conversioni Facebook Prestashop.

    Hai bisogno di calcolare il ROI di annunci di Facebook? Con questo facile da usare Prestashop modulo puoi. Questo modulo aggiunge automaticamente il codice di monitoraggio delle conversioni quando un cliente effettua un acquisto in modo da poter misurare se i tuoi annunci funzionano.

    È possibile scaricare il monitoraggio delle conversioni di Facebook Prestashop modulo utilizzando il link qui sotto:
    Facebook monitoraggio delle conversioni Prestashop Module

    5 maggio 2010 alle 01:41 - commenti

    IPhone 3G tethering sul vostro iPad

    Questo sarà possibile?

    Qui ci sono le fasce di prezzo:

    Ci sarà un motivo per ottenere il 3G + WiFi se tethering è possibile?

    27 gennaio 2010 alle 14:17 - commenti

    Bicio GoRide iPhone supporto per bicicletta

    L'iPhone GoRide supporto per bicicletta è progettato per essere montato sul manubrio bici, ed è progettato per fornire accesso al vostro iPhone mentre siete in sella alla propria bicicletta, senza sacrificare la sicurezza e convenienza.

    Bicio-GoRide-iPhone-Bike-Mount

    Bicio GoRide iPhone supporto per bicicletta

    Bicio GoRide iPhone supporto per bicicletta

    È dotato di un case protettivo che si può continuare a vostro iPhone all momento se si desidera, the straight slot caso, allora in the bike and mount si è pronti per esci con la bici without effort to molto.

    Se volete uno, il Bicio GoRide iPhone supporto per bicicletta è ora disponibile per $ 29.99 da Bicio .

    9 dicembre, 2009 a 15:11 - Commenti

    eHow - Come riparare il vetro su un iPhone

    ds_f3f0ca5c-8a00-4c3c-a2ee-cfcc8c69d329
    eHow Contribuire Writer

    Se il vostro schermo di iPhone 3G è rotto, verificare prima con Apple per vedere se la garanzia copre la riparazione o la sostituzione. Tale riparazione può essere difficile e deve essere tentata solo se l'immagine dietro lo schermo di vetro è visibile.

    Con queste precauzioni, di riparare da solo dovrebbe costare circa $ 45. Questo metodo da Lee Waterman ricevuto diverse recensioni positive.

    Difficoltà: mediamente impegnativo

    Istruzioni

    Cosa è necessario:

      Prendendo l'iPhone a parte

    1. Fase 1

      Spegnere l'iPhone. Rimuovere la carta SIM con l'inserimento di una graffetta nel piccolo foro nella parte superiore. Rimuovere le due viti in basso. Spingere la ventosa sul vetro. Tirare in su per separare il vetro.

    2. Fase 2

      Tre cavi terrà il due pezzi. Rimuovere le prime due con una graffetta. Il terzo è sotto una scheda nell'ambito dei primi due cavi. L'ultima cavo deve essere estratto delicatamente.

    3. Fase 3

      Sullo schermo, rimuovere sei viti: due su un lato, uno sulla parte inferiore della superficie dietro il vetro, uno visibile sul lato opposto e due dal nastro su quel lato.

    4. Fase 4

      Per rimuovere il display LCD, utilizzare una graffetta sui lati per agganciare il basso che ha un cerchio, e tirare fuori.


      Rimozione del vetro rotto

    5. Fase 1

      Usando le pinzette, rimuovere il nastro adesivo nero dietro il vetro su ciascuno dei quattro bordi.

    6. Fase 2

      Utilizzare un asciugacapelli intorno ai bordi del vetro per circa 5 minuti per scaldare la colla.

    7. Fase 3

      Estrarre il vetro dal supporto di plastica. Assicurarsi di rimuovere tutti i vetri rotti.


      Installazione del vetro

    8. Fase 1

      Mettere le strisce di adesivo nella parte superiore e inferiore del supporto di plastica.

    9. Fase 2

      Sullo schermo di vetro nuove, rimuovere tutti i film dal fondo nero e superiore, lasciando la pellicola protettiva sul vetro in modo che nessun impronte digitali entrare. Ci saranno probabilmente due pezzi di film sulle parti nere.

    10. Fase 3

      Allineare il vetro con il titolare, assicurandosi che il cavo che passa sotto la porta. Quando i due pezzi partita, premere verso il basso per attaccare il vetro per le strisce adesive.

    11. Fase 4

      Rimuovere la pellicola dal vetro.


      Riassemblaggio

    12. Fase 1

      Mettere lo schermo LCD posteriore nel supporto con tutti i fori per le viti allineate. Premere in posizione. Sostituire tutte le viti.

    13. Fase 2

      Premere tutti i cavi in posizione in ordine inverso rispetto alla loro rimozione.

    14. Fase 3

      Allineare i due pezzi - lo schermo e l'unità - e premere insieme con i fori allineati.

    15. Fase 4

      Sostituire le viti e la carta SIM.



    Consigli & Avvisi

    Risorse

    27 Novembre, 2009 alle 19:38 - commenti

    Prestashop manualmente Conversione Carrelli agli Ordini

    Prestashop Cart2Order Module

    Recentemente ho avuto il need di convertire i carrelli dei clienti in ordini effettivi e da lì non was uno modo semplice per farlo that the base install con code e un module non esisteva, ho scritto il mio own.

    Fondamentalmente ciò che questo semplice modulo non fa altro che convertire un carrello del cliente in un ordine. Ecco come funziona ad esempio:

    Se avete, diciamo, ad esempio, Google Checkout e pagamento Paypal moduli installati, allora si avrà la possibilità di convertire carrello di un cliente utilizzando uno di quei moduli di pagamento installato.

    È possibile scaricare il modulo Cart2Order utilizzando il link qui sotto:
    Cart2Order Prestashop Module

    Forum di discussione link qui sotto:
    http://bit.ly/oTglW

    16 novembre 2009 alle 01:27 - commenti

    Impedire la copia di progettare il vostro sito di modelli

    Ero navigando il forum PrestaShop e si è conclusa su un thread riguardante un problema con la gente il furto di un sito dal design scaricando il file di modello dalla directory tema. Mi ha colpito il fatto che questo è probabilmente qualcosa che coloro tra voi che usano altri sistemi di template con i siti possono anche affrontare, così ho pensato di pubblicare le soluzione anche qui.

    Il problema è che, sebbene i file php non possono essere visualizzati direttamente sul vostro browser, altri file di origine può essere ad esempio file con estensione. Tpl

    Per esempio dare un'occhiata al seguente file che abbia i permessi di default:

    File di modello non protetto

    Il modo migliore per proteggere il vostro sito è quello di cambiare i permessi su questi file a 600. Questo li renderà accessibili solo il proprio codice sul server e chiunque presenti ficcanaso abbastanza per cercare di guardare con un 403 (proibito) di errore. Lo stesso vale per i file php (anche se questi non dovrebbe visualizzare il sorgente a meno che la configurazione del server è rotto).

    Date un'occhiata a questo file con i permessi impostati a 600:

    Protetto file di modello

    Semplice.

    13 novembre 2009 alle 16:45 - commenti

    Modulo Prestashop Personalizzazione Modelli

    Si prega di non modificare quelle originali!

    Mi sono imbattuto in questo piccolo gioiello, qualche tempo fa sul forum Prestashop, e il pensiero vorrei richiamare l'attenzione ad esso nella speranza che possa aiutare qualcuno, da qualche parte.

    Io non sono uno a lamentarsi, ma la mia bestia nera è gente che modificare il file di origine per i loro negozi, quando non c'è bisogno. Mi spiati in Zen Cart quando la gente felice modificato il "classico" e "default" file di template, poi chiese perché era difficile da aggiornare ... ed ecco, ecco, e la gente ha iniziato facendo la stessa cosa per il tema di default Prestashop troppo. Aaaargh! Quanto è difficile fare una copia, rinominarlo e modificare tale versione, invece?

    Nei casi in cui i miei istinti purista fallito però, nel lontano brutti e vecchi giorni, è stato quando è venuto al file. TPL that sono stati memorizzati nella directory modulo stessi - ci sembra che non c'è scelta, ma per modificarle se si desidera personalizzare l'output per il tuo negozio - o ci è!

    La risposta è sorprendentemente semplice, e vi farà annuire con la testa in grato apprezzamento ... tutto quello che dovete fare è creare un modules / directory nella vostra directory tema personalizzato (beh non are andando a lavorare in the directory tema di default now siete), copiare l'originale. TPL dalla directory module in it e modificare via a vostro piacimento's.

    Come esempio, si può prendere il file di modello dal modulo blockadvertising (blockadvertising.tpl) e fare una copia sotto / themes / mycooltheme / modules / blockadvertising. Ora modificare la copia dell'originale che assomiglia a questo:

    
    
    (S = l 'Advertising' mod = 'blockadvertising')

    a

    
    
    (Ls = 'Un sito fantastico per mod goodies Prestashop' = 'blockadvertising')

    Pura gioia! Anche se l'attento noterà che se non si modifica il $ (image) variabile e posizionare un percorso statico per la grafica al suo posto, allora dovrete cambiare l'immagine nella directory di modulo .... bene non si può avere tutto credo.

    13 novembre 2009 alle 16:13 - commenti

    Scrivere un proprio Prestashop Modulo - Parte 5

    Gli ultimi ritocchi

    Introduzione

    In questa parte finale del nostro modulo di base di scrittura serie tutorial vedremo i passi finali per trasformare il nostro modulo di classe Tutorialthird in un modello base che possiamo usare per dare il via alla scrittura di nuovi moduli. Invece di ripubblicare il vecchio lo stesso codice di nuovo ci sarà solo discutere i cambiamenti, ma io ho aggiunto un link per il download alla fine di questa parte so potete afferrare l'codice finale and utilizzare come base per i propri progetti. Andiamo a chiamare questo modulo "scheletro" - un nome che ti sostituiscono con la nostra quando si tratta di produzione di nuovi moduli basati su di esso.

    Styling il modulo di configurazione

    I primi cambiamenti che andremo a fare sono puramente estetica, ma questo è un elemento importante in quanto vogliamo fornire un'interfaccia coerente per i nostri utenti. Il nostro codice forma assomiglia a questo:

    	 funzione _displayForm privato ()
    	 (
    		 $ This-> _html .= '
    		 <form action="'.$_SERVER['REQUEST_URI'].'" method="POST">
    				 <label> '. $ this-> l (' Messaggio al mondo').'</ label>
    				 <div class="margin-form">
    
    					 <input type="text" name="our_message" />
    				 </ Div>
    				 <input type="submit" name="submit" l value="'.$this-> ('Aggiorna classe').'" = "button" />
    
    		 </ Form> ';
    	 )
    

    La convenzione per queste schermate di configurazione è quello di avvolgere le impostazioni in un fieldset, e saremo anche bisogno di aggiungere una bella amichevole (traducibile) legenda completa di icona. Il nostro codice sarà ora simile al seguente:

    	 funzione _displayForm privato ()
    	 (
    		 $ This-> _html .= '
    		 <form action="'.$_SERVER['REQUEST_URI'].'" method="POST">
    
    			 <fieldset>
    				 <legend> <img alt="" src="../img/admin/cog.gif" class="middle" /> '. $ this-> l (' Impostazioni').'</ leggenda>
    
    				 <label> '. $ this-> l (' Messaggio al mondo').'</ label>
    				 <div class="margin-form">
    					 <input type="text" name="our_message" />
    
    				 </ Div>
    			 <input type="submit" name="submit" l value="'.$this-> ('Aggiorna classe').'" = "button" />
    
    			 </ Fieldset>
    		 </ Form> ';
    	 )
    

    Il nostro cambiamento cosmetico finale è quello di aggiungere uno schermo voce in cima alla nostra settaggi solo nel caso in cui l'utente abbia dimenticato dove sono! Lo facciamo aggiungendo la seguente riga all'inizio del getContentQ () funzione:

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

    Pre-compilazione di campi modulo di configurazione

    Un altro elemento mancante dal nostro disegno originale esercitazione è stata la visualizzazione delle impostazioni correnti nel modulo di configurazione del modulo, e anche quando il modulo restituisce di aggiornare i valori dei campi sono vuoti, quindi dobbiamo risolvere questo problema tecnico anche. Ci sono due possibilità che abbiamo bisogno di gestire:

    1. schermata iniziale del modulo deve visualizzare la configurazione corrente (se presente)
    2. Dopo un modulo di aggiornamento si deve visualizzare i dati inseriti dall'utente

    Siamo in grado di utilizzare la configurazione:: get () per recuperare le impostazioni correnti dal database e strumenti:: getValue () per ottenere il contenuto del campo. Gli strumenti:: getValue () funzione prende un secondo parametro che è utile in questo contesto, in quanto tale specifica un "default" per utilizzare il campo deve essere vuoto. Ora possiamo impostare il "valore" attributo della nostra tag input appropriato utilizzare queste due funzioni, quindi il nostro codice definitivo ingresso modulo sarà:

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

    Un altro cambiamento utile fare quando si tratta di campi diversi in una configurazione di è quello di spostare il codice di aggiornamento del database per essa la propria funzione privata. Per questo che andrà a sostituire la riga:

    
     if (! sizeof ($ this-> _postErrors))
    	 (
    		 Configurazione:: updateValue ($ this-> nome '_message.', Strumenti:: getValue ('our_message'), true);
    		 $ This-> _html .= '<div class="conf confirm">'. $ This-> l ('Aggiornamento impostazioni').'</ div>';
    	 )
    

    con il seguente:

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

    E si aggiunge la nuova funzione membro privato a nostra classe per gestire gli aggiornamenti effettivi in un'unica posizione facilmente individuati:

    	 funzione _postProcess privato ()
    	 (
    		 Configurazione:: updateValue ($ this-> nome '_message.', Strumenti:: getValue ('our_message'), true);
    
    		 $ This-> _html .= '<div class="conf confirm">'. $ This-> l ('Aggiornamento impostazioni').'</ div>',
    	 )
    

    Manipolazione altri tipi di campo

    Nel finale di download del modulo scheletro Ho anche aggiunto alcuni esempi di altri tipi di campi che fungerà da scorciatoie utili per la creazione di form del modulo di configurazione. Riguarda caselle di controllo, pulsanti di opzione, textarea e gli elenchi a discesa. Tutto quello che dovete fare è aggiungere / rinominare i campi, aggiungere qualsiasi richiesta di convalida al _postValidation () e modificare il codice di aggiornamento nel _postProcess () funzione in modo appropriato.

    Per le impostazioni obbligatorie si dovrebbe anche test per la loro presenza in funzione di installare e prendere i provvedimenti opportuni per impedire che il modulo che causa errori nel Front Office ad esempio fissando valori predefiniti appropriati utilizzando la configurazione:: updateValue () funzione. In alternativa può essere eseguita nel costruttore del modulo, anche se è più corretto per eseguire questa installazione all'interno ().

    Aggiunta di posizione di visualizzazione più ganci

    Il nostro modulo Tutorialthird non poteva che mostrare i nostri contenuti nella colonna di sinistra, poiché questo era solo il gancio abbiamo implementato. Fortunatamente è molto facile per attuare il "trapianto di un modulo di" funzionalità BackOffice nel nostro codice. Nella forma più semplice sarà sufficiente utilizzare la stessa uscita in tutte le sedi, ma se necessario tutti questi ganci aggiuntivi si possono ottenere risultati diversi.

    Per produrre la stessa uscita in tutti i luoghi conosciuti, abbiamo solo bisogno di implementare le funzioni di hook aggiuntivi in nostro modulo e chiamare il codice originale gancio per generare l'output. Si noti che in realtà abbiamo solo chiamare registerHook () per quella di default nella installazione () funzione di membro, e lasciare che il Back Office di gestire la registrazione degli altri.

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

    Riassunto

    Più di questa serie di articoli dovreste aver imparato come funziona il sistema di base del modulo in Prestashop e essere in grado di moduli di codice in grado di fornire l'output a differenti aree di presentazione del Front Office. Avrete anche un buon quadro codice di base per i vostri moduli. Potresti aver notato che in nessun tempo hanno abbiamo effettivamente usato smarty o dei suoi file di modello nella creazione del nostro modulo - this è deliberata in quanto possono be seen as uno un'entità separata dal design module stessa.

    Smarty è altamente flessibile, ma la scelta di utilizzarlo è basata su molti fattori, e per motivi di prestazioni è meglio evitare il suo utilizzo, se possibile. Più tardi gli articoli si discuterà di come e quando usare smarty per migliorare la funzionalità dei moduli, però, in quanto è una parte fondamentale dell'architettura Prestashop.

    È possibile scaricare il modulo di scheletro completo di codice utilizzando il link qui sotto:

    Skeleton v0.1.0

    13 novembre 2009 alle 15:49 - commenti

    Scrivere un proprio Prestashop Modulo - Parte 4

    Validazione di form e di sicurezza

    Introduzione

    Pur essendo sufficientemente funzionale per ciò che fa, il modulo che abbiamo creato nella parte 2 si presentano a noi con alcuni problemi da considerare in sede di attuazione "mondo reale" i moduli per estendere Prestashop. In particolare, l'input dell'utente abbiamo catturato con il nostro modulo è stato scritto direttamente alla voce di configurazione, senza alcun controllo per determinare se era valida, né si tiene conto del tipo di dati che vengono inseriti.

    In questo tutorial vedremo la questione generale della forma di ingresso e di verifica della sicurezza, sia per il Back Office e Front Office e moduli input dell'utente, nonché cercando di migliorare il nostro codice sia funzionale che estetico.

    La classe Configuration rivisitato

    Nella Parte 3 abbiamo toccato brevemente su un ulteriore parametro che può essere passato alla configurazione:: updateValue () metodo della classe. Se vi ricordate la funzione ha la seguente forma:

      updateValue ($ chiave, $ valore, $ html = false); 

    Nella parte 3 abbiamo ignorato il parametro $ html e ha permesso la funzione di utilizzare il valore predefinito di "false". Nel fare questo abbiamo effettivamente inavvertitamente ha aggiunto il primo elemento di sicurezza e di convalida per il nostro codice. Quando è impostato su "false" le updateValue () metodo effettivamente pre-elabora il valore deve essere scritto utilizzando il seguente codice ($ stringa è il valore di input passato alla funzione):

      $ Stringa = strip_tags (nl2br2 ($ stringa)); 

    È possibile verificare questo inserendo alcuni HTML nella schermata di configurazione del modulo che abbiamo creato nella parte 3. Dovreste vedere che ogni tag HTML nel vostro input vengono rimossi. Si potrebbe modificare il modulo TutorialSecond per raccogliere i contributi di HTML nella forma, cambiando linea 29 nel file di origine di:

      Configurazione:: updateValue ($ this-> nome '_message.', Strumenti:: getValue ('our_message', true)); 

    Ciò illustra il principio fondamentale che dobbiamo impiegare tutto il nostro codice per garantire che sia sicuro e funziona prevedibile. Fortunatamente Prestashop ci fornisce alcuni strumenti che possiamo utilizzare nel nostro codice per renderlo più sicuro e robusto.

    Convalida

    Prestashop ci fornisce una classe chiamata Validate che possiamo utilizzare per determinare se si accetta l'input dell'utente è valido o meno. L'elenco delle funzioni membro è piuttosto grande, ma vale la pena riprodurre alcuni di loro qui per illustrare il punto - per un elenco completo si consiglia di consultare le lezioni / validate.php file nella vostra distribuzione Prestashop.

     isEmail ($ email);
     isFloat ($ float);
     isUnsignedFloat ($ float);
     isCleanHtml ($ html);
     IsDate ($ data);
     isBool ($ bool);
     isPhoneNumber ($ numero di destinazione);
     isPostCode ($ codice di avviamento postale);
     isInt ($ int);
     isUnsignedInt ($ int);
     isUnsignedId ($ id);
     isNullOrUnsignedId ($ id);
     isUrl ($ url);
     isAbsoluteUrl ($ url);
     isFileName ($ nome);
    

    Come esempio si può utilizzare il isCleanHtml () funzione dall'elenco di cui sopra come un test nel nostro modulo per impedire XSS (cross site scripting) - in questo modo siamo in grado di permettere il giusto input html ragionevoli condizioni di sicurezza.

    Convalida dei dati il nostro modulo

    Come prima che andremo a creare un nuovo modulo basato sulla versione precedente. Perché non provare a modificare la classe Tutorialsecond voi stessi a creare il modulo Tutorialthird? Se preferisci, non solo quindi espandere e copiare il codice qui sotto a seconda dei casi!

     <? Php
     classe Tutorialthird estende Module
     (
    	 privato _html $ ='';
    
    	 funzione __construct ()
    	 (
    		 $ This-> name = 'tutorialthird';
    		 parent:: __construct ();
    
    		 $ This-> tab = '' Tutorial eCartService.net;
    		 $ This-> version = '0 .1.0 ';
    		 $ This-> displayName = $ l this-> ('Terzo Tutorial Module');
    		 $ This-> description = $ l this-> ('il nostro terzo modulo - sicurezza e validazione');
    	 )
    
    	 pubblica funzione installare ()
    	 (
    		 parent:: install ();
    
    		 if ($ this-> registerHook ('leftColumn'))
    			 return false;
    	 )
    
    	 getContentQ funzione pubblica ()
    	 (
    		 if (Strumenti:: isSubmit ('submit'))
    		 (
    			 Configurazione:: updateValue ($ this-> nome '_message.', Strumenti:: getValue ('our_message'));
    		 )
    
    		 $ This-> _displayForm ();
    
    		 return $ this-> _html;
    	 )
    
    	 funzione _displayForm privato ()
    	 (
    		 $ This-> _html .= '
    		 <form action="'.$_SERVER['REQUEST_URI'].'" method="POST">
    
    				 <label> '. $ this-> l (' Messaggio al mondo').'</ label>
    				 <div class="margin-form">
    					 <input type="text" name="our_message" />
    
    				 </ Div>
    				 <input type="submit" name="submit" l value="'.$this-> ('Aggiorna classe').'" = "button" />
    
    		 </ Form> ';
    	 )
    
    	 hookLeftColumn funzione pubblica ()
    	 (
    		 <div ritorno 'class="block"> <h4>'.  Configurazione:: get ($ this-> nome '_message.').  '</ H4> </ div>';
    	 )
    
     )
     / / Fine: tutorialthird.php
    

    La prima fase del processo è quello di modificare il nostro getContentQ () per aggiungere la fase di validazione:

    	 getContentQ funzione pubblica ()
    	 (
    		 if (Strumenti:: isSubmit ('submit'))
    		 (
    			 $ This-> _postValidation ();
    
    			 if (! sizeof ($ this-> _postErrors))
    			 (
    				 Configurazione:: updateValue ($ questo-> name '_message.', Strumenti:: getValue ('our_message'), true);
    				 $ This-> _html .= '<div class="conf confirm">'. $ This-> l ('Aggiornamento impostazioni').'</ div>';
    			 )
    			 altro
    			 (
    				 foreach ($ this-> _postErrors AS $ err)
    				 (
    					 $ This-> _html .= '<div class="alert error">'. $ Err '<. / Div>';
    				 )
    			 )
    		 )
    
    		 $ This-> _displayForm ();
    
    		 return $ this-> _html,
    	 )
    

    Abbiamo anche bisogno di aggiungere una dichiarazione per la variabile $ membro _postErrors abbiamo introdotto all'inizio della nostra definizione di classe ad esempio,

     classe Tutorialthird estende Module
     (
    	 privato _html $ ='';
    	 privato _postErrors $ = array ();
    

    Il flusso logico quando si inviare dati a getContentQ () è ora di chiamare il nostro _Validation () per testare i campi presentati e per impostare il nostro array $ _postErrors con messaggi di errore. Se ci sono errori che possono essere visualizzati prima rimostrando la forma. Se i controlli di validazione sono passati, poi visualizzare un successo "messaggio a fornire un feedback visivo che la configurazione è stata aggiornata. Un semplice test XSS nel _Validation () per il nostro esempio potrebbe essere:

    	 funzione _postValidation privato ()
    	 (
    		 if (!: convalidare: isCleanHtml (Strumenti:: getValue ('our_message')))
    			 $ This-> _postErrors [] = L $ this-> ('il messaggio che hai inserito non è stato consentito, spiacente');
    	 )
    

    Ovviamente non si limitano a utilizzare il test fornito dalla classe Validate, e puoi anche applicare i test multipli per ogni campo presentata - per verificare, ecc length Il principio base è la stessa in tutti i casi, indipendentemente dalla complessità di convalida requisiti sono.

    Riassunto

    In questo articolo abbiamo migliorato il nostro modulo di manipolazione con l'aggiunta di convalida dell'input dell'utente per una maggiore sicurezza e / o l'affidabilità. Abbiamo anche aggiunto un feedback visivo quando la configurazione è stata aggiornata con successo. Nella parte finale di questa serie aggiungeremo alcuni ritocchi cosmetici alla nostra forma di standardizzare l'interfaccia e migliorare l'usabilità. Ci si veda anche idee per migliorare ed estendere il "modello" del modulo che abbiamo creato.

    13 novembre 2009 alle 15:35 - commenti

    Scrivere un proprio Prestashop Modulo - Parte 3

    Memorizzazione Modulo di configurazione

    Introduzione

    Nella terza parte di questa serie vedremo come si possa immagazzinare i dati di configurazione per i nostri moduli del database Prestashop, e come possiamo consentire agli utenti di interagire con questi dati per controllare il comportamento del modulo. Verranno inoltre brevemente su come possiamo generare output dal nostro modulo di fornire un feedback visivo delle modifiche di configurazione.

    Gestione delle impostazioni utente

    Andiamo a chiamare questo modulo "TutorialSecond" così abbiamo di nuovo bisogno di creare una nuova directory modulo e file di classe - che sarà denominata "tutorialsecond" e "tutorialsecond.php" rispettivamente. Il file di classe (tutorialsecond.php) deve contenere i seguenti elementi:

      <? Php
     classe Tutorialsecond estende Module
     (
    	 privato _html $ ='';
    
    	 funzione __construct ()
    	 (
    		 $ This-> name = 'tutorialsecond';
    		 parent:: __construct ();
    
    		 $ This-> tab = '' Tutorial eCartService.net;
    		 $ This-> version = '0 .1.0 ';
    		 $ This-> displayName = $ l this-> ('Seconda Tutorial Module');
    		 $ This-> description = $ l this-> ('Il nostro secondo modulo - Un "Ciao mondo" Redux');
    	 )
    
    	 getContentQ funzione pubblica ()
    	 (
    
    	 )
    
    	 funzione _displayForm privato ()
    	 (
    
    	 )
    
     )
     / / Fine: tutorialsecond.php 

    Si noterà che abbiamo implementato due funzioni nuovo membro:: getContentQ () e:: _displayForm (). Se si carica il file sul server e installare questo modulo in questa fase si dovrebbe vedere una nuova opzione nella lista moduli schermo per 'Second Tutorial Module'. Ci sarà ora un link ">> Configura nella voce del modulo, anche se clic su di essa si limiterà a restituire una pagina vuota Back Office. La presenza del:: getContentQ () funzione di membro è responsabile di questo in quanto fornisce l'interfaccia tra il nostro modulo e il back office.

    In aggiunta a queste due nuove funzioni, abbiamo aggiunto anche la variabile $ _html membro private, che useremo nel seguito di questo articolo per costruire la produzione richiesto per la visualizzazione nel back office.

    Archiviare e recuperare dati di configurazione

    Prestashop fornisce una "classe" di configurazione che offre diverse funzioni di membro di manipolare i dati di configurazione, ma le due funzioni chiave che saranno più comunemente utilizzati sono:

      Configurazione:: updateValue ($ chiave, $ valore, $ html = false);
     Configurazione:: get ($ chiave, $ id_lang = NULL); 

    La configurazione:: updateValue () funzione ci permette di memorizzare una opzione di configurazione del database (a scelta in più lingue, nel qual caso il parametro $ valori saranno un array) e la configurazione:: get () funzione ci permette di recuperare i dati di configurazione per una lingua predefinita selezionata o negozio. Noi ignorerà i parametri che hanno valori di default per ora, ma rivedere il parametro $ html nella configurazione:: updateValue () nel prossimo articolo, quando si guarda l'oggetto di validazione dei form.

    Attuazione del Configurazione dello schermo

    Nel nostro file sorgente abbiamo creato un privato _displayForm funzione membro (). Ciò è del tutto opzionale, come tutto il codice di interfaccia potrebbe essere inserito nel getContentQ () funzione membro, tuttavia è altamente raccomandato che vi separano questo fuori per motivi di manutenzione del codice più semplice. Creeremo una semplice forma all'interno di questa funzione da con cui possiamo acquisire l'input proprietario di un negozio.

      funzione _displayForm privato ()
    	 (
    		 $ This-> _html .= '
    		 <form action="'.$_SERVER['REQUEST_URI'].'" method="POST">
    				 <label> '. $ this-> l (' Messaggio al mondo').'</ label>
    				 <div class="margin-form">
    
    					 <input type="text" name="our_message" />
    				 </ Div>
    				 <input type="submit" name="submit" l value="'.$this-> ('Aggiorna classe').'" = "button" />
    
    		 </ Form> ';
    	 ) 

    Si può vedere che il:: _displayForm () funzione aggiunge semplicemente standard codice html modulo per la nostra variabile $ _html membro, con l'obiettivo di formare sia $ _SERVER ['REQUEST_URI']. Prestashop's Back Office architettura sarà presente al nostro percorso:: funzione membro classe getContentQ per noi da gestire quando il modulo viene inviato.

    Abbiamo bisogno di aggiungere accanto al nostro codice:: getContentQ () per visualizzare in realtà la forma e gestire l'invio del modulo.

      getContentQ funzione pubblica ()
    	 (
    		 if (Strumenti:: isSubmit ('submit'))
    		 (
    			 Configurazione:: updateValue ($ this-> nome '_message.', Strumenti:: getValue ('our_message'));
    		 )
    
    		 $ This-> _displayForm ();
    
    		 return $ this-> _html;
    	 ) 

    Il:: getContentQ () utilizza un altro prima classe Prestashop "Strumenti" per verificare se ci sono la gestione dell'azione post dal modulo, o se questa funzione viene chiamata in un altro modo ovvero un clic su "Configura" link nel modulo lista - il parametro è il nome che abbiamo dato al nostro pulsante "Update" nel modulo.

    Se la funzione è stata chiamata direttamente dal Back Office (nel qual caso Strumenti:: isSubmit ('submit') restituirà false), allora chiamiamo il modulo di rendering funzione che abbiamo creato in precedenza e restituire l'output, catturato in $ this- > _html variabile, per il Back Office per la visualizzazione.

    Se la funzione è chiamata a causa della nostra forma di essere pubblicati, quindi siamo in grado di memorizzare il nostro parametro di configurazione nel database con il valore inserito nel nostro modulo. Siamo di nuovo utilizzare la classe Tools per ottenere il valore della variabile form utilizzando la chiamata al Strumenti:: getValue ('our_message'), dove 'our_message' è il nome del campo di input in nostro modulo.

    Si può vedere che ho aggiunto il nome del nostro modulo per l'inizio del nome dell'elemento di configurazione - questa è di garantire che la chiave di configurazione è unica come lo spazio dei nomi per queste chiavi è condivisa per l'intero negozio.

    Una volta che abbiamo memorizzato i nostri dati di configurazione del modulo è di nuovo visualizzato, pronto per l'ingresso di più se necessario.

    Modulo di uscita in una pagina

    Ora abbiamo un metodo di cattura input da the proprietario del negozio e del risparmio in the database, quindi il passo successivo ovvia sarebbe quella di fargli qualcosa con eg display su una pagina. Nella parte 1 della serie abbiamo parlato di "ganci" in relazione a moduli di aggiungere funzionalità. Per poter utilizzare questo abbiamo bisogno di dire che il nostro modulo PrestaShop vorrebbe agganciare in front office e lo facciamo utilizzando la seguente funzione (definita nella classe di base del modulo):

      $ This-> registerHook ($ hook_name); 

    Il parametro $ hook_name si riferisce a uno dei diversi punti che il nucleo Prestashop consente ai moduli di uscita dell'inserto e / o elaborazione dei dati, ma per ora useremo uno in particolare - "leftColumn ', che ci consente di aggiungere contenuti nella colonna di sinistra di tutte le pagine. Per inizializzare il gancio bisogna aggiungere i seguenti nuovi override in nostra classe:

      pubblica funzione installare ()
    	 (
    		 parent:: install ();
    
    		 if ($ this-> registerHook ('leftColumn'))
    			 return false;
    	 ) 

    Questo dice Prestashop per eseguire il nostro gancio modulo quando è il rendering del contenuto per la colonna di sinistra di tutte le pagine. Siamo accanto bisogno di aggiungere una funzione per gestire il callback gancio. La convenzione è per il nome della funzione come il nome di Hook preceduto da "gancio":

      hookLeftColumn funzione pubblica ()
    	 (
    		 <div ritorno 'class="block"> <h4>'.  Configurazione:: get ($ this-> nome '_message.').  '</ H4> </ div>';
    	 ) 

    Nel nostro semplice esempio ci sono solo confezionamento nostro parametro di configurazione, in alcuni markup HTML standard in modo che sia visualizzato correttamente sulla nostra pagina.

    Se avete già installato il modulo che si dovrebbe disinstallare e reinstallare a garantire che il gancio è correttamente registrato con il nucleo Prestashop. Ora è possibile immettere un valore nella schermata di configurazione per il modulo - ad esempio 'Ciao Mondo', e sarà la produzione che l'intestazione di una casella nella colonna di sinistra del tuo negozio. Il codice completo per il secondo esempio dovrebbe apparire come:

      <? Php
     classe Tutorialsecond estende Module
     (
    	 privato _html $ ='';
    
    	 funzione __construct ()
    	 (
    		 $ This-> name = 'tutorialsecond';
    		 parent:: __construct ();
    
    		 $ This-> tab = '' Tutorial eCartService.net;
    		 $ This-> version = '0 .1.0 ';
    		 $ This-> displayName = $ l this-> ('Seconda Tutorial Module');
    		 $ This-> description = $ l this-> ('Il nostro secondo modulo - Un "Ciao mondo" Redux');
    	 )
    
    	 pubblica funzione installare ()
    	 (
    		 parent:: install ();
    
    		 if ($ this-> registerHook ('leftColumn'))
    			 return false;
    	 )
    
    	 getContentQ funzione pubblica ()
    	 (
    		 if (Strumenti:: isSubmit ('submit'))
    		 (
    			 Configurazione:: updateValue ($ this-> nome '_message.', Strumenti:: getValue ('our_message'));
    		 )
    
    		 $ This-> _displayForm ();
    
    		 return $ this-> _html;
    	 )
    
    	 funzione _displayForm privato ()
    	 (
    		 $ This-> _html .= '
    		 <form action="'.$_SERVER['REQUEST_URI'].'" method="POST">
    
    				 <label> '. $ this-> l (' Messaggio al mondo').'</ label>
    				 <div class="margin-form">
    					 <input type="text" name="our_message" />
    
    				 </ Div>
    				 <input type="submit" name="submit" l value="'.$this-> ('Aggiorna classe').'" = "button" />
    
    		 </ Form> ';
    	 )
    
    	 hookLeftColumn funzione pubblica ()
    	 (
    		 <div ritorno 'class="block"> <h4>'.  Configurazione:: get ($ this-> nome '_message.').  '</ H4> </ div>';
    	 )
    
     )
     / / Fine: tutorialsecond.php 

    Riassunto

    In questo articolo abbiamo esteso il nostro primo modulo di un modulo di configurazione di base e hanno utilizzato una funzione di hook per visualizzare l'output del nostro modulo nella colonna di sinistra delle nostre pagine. Nella parte successiva di questa serie vedremo a migliorare l'impianto di configurazione in qualcosa che potrebbe essere utilizzato in una reale attuazione del modulo. Ciò comprende la convalida dell'input dell'utente per la forma, il pre-compilazione dei campi modulo a seconda dei casi in base alla configurazione corrente e la visualizzazione di errori di modulo e le avvertenze contenute nelle schermate di back office.

    13 novembre 2009 alle 15:28 - commenti