• Twitter

    • Αγγελίες

    Γράφοντας το δικό Ενότητα PrestaShop σας - Μέρος 5

    Οι τελευταίες πινελιές

    Εισαγωγή

    Σε αυτό το τελευταίο μέρος της βασικής σειράς εκμάθησης γραφής module μας θα δούμε τα τελικά βήματα για τη μετατροπή Tutorialthird τάξη μονάδα μας σε ένα πρότυπο βάσης που μπορούμε να χρησιμοποιήσουμε για να δώσει το έναυσμα για τη συγγραφή των νέων ενοτήτων. Αντί να αναδημοσιεύσετε το ίδιο παλιό κωδικό για δεύτερη φορά θα συζητήσουμε μόνο τις αλλαγές, αλλά έχω προσθέσει ένα download link στο τέλος αυτού του τμήματος, έτσι ώστε να μπορεί να αρπάξει τον τελικό κωδικό του και να το χρησιμοποιήσετε ως βάση για τις δικές σας εργασίες. Εμείς πάμε για να καλέσετε αυτή την ενότητα "Skeleton" - ένα όνομα που θα αντικαταστήσει με τη δική μας, όταν πρόκειται για την παραγωγή νέων μονάδων που βασίζονται σε αυτό.

    Styling το έντυπο για τη διάταξη

    Οι πρώτες αλλαγές πρόκειται να κάνει είναι διακοσμητικού χαρακτήρα, ωστόσο αυτό είναι ένα σημαντικό στοιχείο δεδομένου ότι θέλουμε να παρέχουν ένα συνεκτικό interface για τους χρήστες μας. Κωδικός φόρμα μας έμοιαζε με:

    	 ιδιωτική _displayForm λειτουργία ()
    	 {
    		 $ This-> _html .= "
    		 <form action="'.$_SERVER['REQUEST_URI'].'" method="post">
    				 <label> ». $ this-> l (« Μήνυμα προς την ετικέτα').'</ κόσμο>
    				 <div class="margin-form">
    
    					 <input type="text" name="our_message" />
    				 </ P>
    				 <input type="submit" name="submit" value="'.$this-> l («Ενημέρωση').'" class =" κουμπί "/>
    
    		 </ Form> »?
    	 }
    

    Η σύμβαση για αυτές τις οθόνες ρυθμίσεων είναι να τυλίξετε τις ρυθμίσεις σε ένα FIELDSET, και εμείς θα πρέπει επίσης να προσθέσετε ένα ωραίο φιλικό (μεταφράσιμες) θρύλος πλήρης, με το εικονίδιο. Κώδικας μας θα μοιάζει τώρα:

    	 ιδιωτική _displayForm λειτουργία ()
    	 {
    		 $ This-> _html .= "
    		 <form action="'.$_SERVER['REQUEST_URI'].'" method="post">
    
    			 <fieldset>
    				 <legend> <img src="../img/admin/cog.gif" alt="" class="middle" /> ». $ this-> l (« Ρυθμίσεις').'</ θρύλος>
    
    				 <label> ». $ this-> l (« Μήνυμα προς την ετικέτα').'</ κόσμο>
    				 <div class="margin-form">
    					 <input type="text" name="our_message" />
    
    				 </ P>
    			 <input type="submit" name="submit" value="'.$this-> l («Ενημέρωση').'" class =" κουμπί "/>
    
    			 </ FIELDSET>
    		 </ Form> »?
    	 }
    

    Τελικό καλλυντικό αλλαγή μας είναι να προσθέσετε μια επικεφαλίδα στο πάνω μέρος της οθόνης ρυθμίσεων μας σε περίπτωση που ο χρήστης έχει ξεχάσει πού είναι! Το κάνουμε αυτό, προσθέτοντας την ακόλουθη γραμμή στην αρχή του getContent () λειτουργία:

     $ This-> _html .= '<h2>' $ this-> displayName »</ h2>»..?
    

    Προ-πληθυσμιακή πεδία της φόρμας διαμόρφωσης

    Ένα άλλο στοιχείο που λείπει από το αρχικό σχέδιο φροντιστήριο μας ήταν η εμφάνιση του τις τρέχουσες ρυθμίσεις με τη μορφή ρύθμισης μονάδα, ακόμη και όταν οι αποδόσεις μορφή από την ενημέρωση των τιμών τα πεδία είναι κενά, έτσι πρέπει να διορθώσετε αυτό το πρόβλημα στο πάρα πολύ. Υπάρχουν δύο πιθανότητες ότι θα πρέπει να χειρίζεται:

    1. Η αρχική οθόνη του εντύπου θα πρέπει να εμφανίζει την τρέχουσα διαμόρφωση (αν υπάρχουν)
    2. Μετά από μια ενημερωμένη έκδοση του εντύπου θα πρέπει να εμφανίσετε τα δεδομένα που έχουν εισαχθεί από τον χρήστη

    Μπορούμε να χρησιμοποιήσουμε το Διαμόρφωση:: Get () συνάρτηση για να ανακτήσετε τις τρέχουσες ρυθμίσεις από τη βάση δεδομένων, και Εργαλεία:: getValue () για να πάρει τα περιεχόμενα των πεδίων. Τα Εργαλεία:: getValue () παίρνει μια δεύτερη παράμετρος η οποία είναι χρήσιμη σε αυτό το πλαίσιο, όπως αυτό καθορίζει μια "default" για να χρησιμοποιήσετε σε περίπτωση που το πεδίο είναι κενό. Μπορούμε τώρα να ορίσετε την «αξία» χαρακτηριστικό της ετικέτας εισόδου μας κατάλληλα τη χρήση αυτών των δύο λειτουργιών, έτσι ώστε τελικό κωδικό εισόδου μας μορφή θα είναι:

     <input type="text" name="our_message" value="'.Tools::getValue('our_message', όνομα Configuration::get($this-> ». _message')).'"/>
    

    Μια άλλη χρήσιμη αλλαγή να κάνει όταν ασχολείται με διάφορους τομείς σε μια ρύθμιση παραμέτρων για είναι να μετακινήσετε το κωδικό βάσης δεδομένων ενημέρωσης για τη δική του ιδιωτική λειτουργία του. Γι 'αυτό εμείς θα αντικαταστήσει τη γραμμή:

    
     if (! sizeof ($ this-> _postErrors))
    	 {
    		 Διαμόρφωση:: updateValue ($ this-> όνομα «_message», Εργαλεία::. GetValue («our_message»), αλήθεια)?
    		 $ This-> _html .= '<div class="conf confirm">' $ this-> l («Ρυθμίσεις ενημερώθηκε').'</ div>».?
    	 }
    

    με τα εξής:

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

    Και προσθέτουμε την νέα ιδιωτική λειτουργία μέλος στην τάξη μας για να χειριστεί την πραγματική ενημέρωση σε ένα ενιαίο, εύκολα αναγνωρίσιμα θέση:

    	 ιδιωτική λειτουργία _postProcess ()
    	 {
    		 Διαμόρφωση:: updateValue ($ this-> όνομα «_message», Εργαλεία::. GetValue («our_message»), αλήθεια)?
    
    		 $ This-> _html .= '<div class="conf confirm">' $ this-> l («Ρυθμίσεις ενημερώθηκε').'</ div>».?
    	 }
    

    Χειρισμός άλλους τύπους τομέα

    Στην τελική λήψη της ενότητας σκελετός Έχω προσθέσει επίσης παραδείγματα άλλων τύπων των πεδίων που θα λειτουργεί ως χρήσιμες συντομεύσεις για τη δημιουργία μονάδας φόρμα σας διαμόρφωση. Αυτό καλύπτει πλαίσια ελέγχου, κουμπιά επιλογής, textarea και αναπτυσσόμενες λίστες. Το μόνο που χρειάζεται να κάνετε είναι να προσθέσετε / μετονομάσετε τα πεδία, να προσθέσετε οποιαδήποτε επικύρωση απαιτούνται για την _postValidation () και να τροποποιήσει τον κώδικα ενημέρωση στο _postProcess () λειτουργούν σωστά.

    Για τις υποχρεωτικές ρυθμίσεις θα πρέπει επίσης δοκιμασία για την παρουσία τους στη λειτουργία εγκατάστασης και λαμβάνει τα κατάλληλα μέτρα για την πρόληψη της μονάδας σας προκαλεί λάθη στην Front Office, π.χ. με τον καθορισμό κατάλληλων προεπιλογές χρήση του Configuration:: updateValue () συνάρτηση. Εναλλακτικά, αυτό μπορεί να γίνει στον constructor ενότητα, αν και είναι πιο σωστό να εκτελέσετε αυτή την εγκατάσταση μέσα σε ().

    Η προσθήκη πολλαπλών τοποθεσία οθόνη αγκίστρια

    Tutorialthird μονάδα μας θα μπορούσε να εμφανίσετε μόνο το περιεχόμενο μας στην αριστερή στήλη δεδομένου ότι αυτό ήταν το μόνο άγκιστρο που εφαρμόσαμε. Ευτυχώς είναι πολύ εύκολο να εφαρμόσει το «Μεταμόσχευση μια ενότητα" λειτουργικότητα BackOffice στον κώδικά μας. Στην απλούστερη μορφή θα χρησιμοποιήσουμε ακριβώς την ίδια απόδοση σε όλες τις θέσεις, αλλά αν είναι απαραίτητο όλες οι πρόσθετες αυτές άγκιστρα μπορεί να παράγει διαφορετικά αποτελέσματα.

    Για να παράγουν το ίδιο αποτέλεσμα σε όλες τις πολυσύχναστες θέσεις, εμείς απλά πρέπει να εφαρμόσουν τις πρόσθετες λειτουργίες γάντζο στην ενότητα μας και την κλήση του αρχικού κώδικα άγκιστρο για την παραγωγή της εξόδου. Σημειώστε ότι μόνο πραγματικά κλήση registerHook () για τον εξ ορισμού στην εγκατάσταση () συνάρτηση μέλος, και αφήστε το Back Office χειριστεί την εγγραφή των άλλων.

    	 λειτουργία hookRightColumn ($ params)
    	 {
    		 επιστροφή $ this-> hookLeftColumn ($ params)?
    	 }
    
    	 hookTop λειτουργία ($ params)
    	 {
    		 επιστροφή $ this-> hookLeftColumn ($ params)?
    	 }
    
    	 λειτουργία hookHome ($ params)
    	 {
    		 επιστροφή $ this-> hookLeftColumn ($ params)?
    	 }
    
    	 hookFooter λειτουργία ($ params)
    	 {
    		 επιστροφή $ this-> hookLeftColumn ($ params)?
    	 }
    

    Περίληψη

    Πάνω από αυτή τη σειρά των άρθρων θα πρέπει να έχουν μάθει πώς το βασικό σύστημα μονάδα λειτουργεί σε PrestaShop και να είναι σε θέση να ενότητες κώδικα που προσφέρει έξοδο για τους διάφορους τομείς παρουσίαση στο Front Office. Θα έχετε επίσης ένα καλό πλαίσιο κώδικα βάση τα δικά σας modules επάνω. Μπορεί να έχετε παρατηρήσει ότι σε καμία στιγμή δεν έχουμε πράγματι χρησιμοποιήσει Smarty ή αρχεία προτύπων του στη δημιουργία της μονάδας μας - αυτό είναι σκόπιμη, δεδομένου ότι μπορούν να θεωρηθούν ως ξεχωριστή οντότητα από την ενότητα του σχεδιασμού ίδια.

    Smarty είναι εξαιρετικά ευέλικτο, αλλά η επιλογή να το χρησιμοποιήσει στηρίζεται σε πολλούς παράγοντες, και για λόγους απόδοσης είναι καλύτερο να αποφεύγουν τη χρήση του αν είναι δυνατόν. Αργότερα άρθρα θα διερευνήσουν πώς και πότε να χρησιμοποιούν Smarty για την ενίσχυση της λειτουργικότητας ενότητες σας εν τούτοις, δεδομένου ότι είναι ένα θεμελιώδες μέρος της αρχιτεκτονικής PrestaShop.

    Μπορείτε να κατεβάσετε την πλήρη κωδικό μονάδας σκελετό χρησιμοποιώντας τον παρακάτω σύνδεσμο:

    Skeleton v0.1.0

    Κατηγορίες: Tutorials