Γράφοντας το δικό σας PrestaShop Ενότητα - Μέρος 5
Οι τελευταίες πινελιές
Εισαγωγή
Σε αυτό το τελευταίο μέρος της βασικής σειράς γραφής φροντιστήριο μονάδα μας θα δούμε τα τελικά βήματα για τη μετατροπή Tutorialthird τάξη μονάδα μας σε ένα πρότυπο βάσης που μπορούμε να χρησιμοποιήσουμε για να δώσει το έναυσμα για τη συγγραφή των νέων ενοτήτων. Αντί να αναδημοσιεύσετε το ίδιο παλιό κώδικα και πάλι θα συζητήσουμε μόνο τις αλλαγές, αλλά έχω προσθέσει ένα download link στο τέλος αυτού του τμήματος, έτσι ώστε να μπορεί να τραβήξει το τελικό κώδικα και να το χρησιμοποιήσετε ως βάση για τα δικά σας σχέδια. Εμείς πάμε για να καλέσει αυτή την ενότητα "σκελετός" - ένα όνομα που θα αντικαταστήσει με τη δική μας, όταν πρόκειται για την παραγωγή νέων μονάδων που βασίζονται σε αυτό.
Στυλ το έντυπο για τη διάταξη
Οι πρώτες αλλαγές που πρόκειται να είναι διακοσμητικού χαρακτήρα, ωστόσο αυτό είναι ένα σημαντικό στοιχείο δεδομένου ότι θέλουμε να παρέχουν ένα συνεκτικό interface για τους χρήστες μας. Κωδικός φόρμα μας έμοιαζε:
ιδιωτική _displayForm λειτουργία () { $ This-> _html. = " <form action="'.$_SERVER['REQUEST_URI'].'" method="post"> <label> ». $ this-> l (« Μήνυμα προς τον κόσμο »).» </ label> <div class="margin-form"> <input type="text" name="our_message" /> </ Span> <input type="submit" name="submit" value="'.$this-> l («Ενημέρωση»). "class =" κουμπί "/> </ Form> "? }
Η σύμβαση για αυτές τις οθόνες ρυθμίσεων είναι να τυλίξουν τις ρυθμίσεις σε ένα σύνολο πεδίων, και θα πρέπει επίσης να προσθέσετε ένα ωραίο φιλικό (προς μετάφραση) μύθο με πλήρη εικόνα. Κώδικας μας θα μοιάζει τώρα:
ιδιωτική _displayForm λειτουργία () { $ This-> _html. = " <form action="'.$_SERVER['REQUEST_URI'].'" method="post"> <fieldset> <legend> <img alt="" src="../img/admin/cog.gif" class="middle" /> ». $ this-> l (" Ρυθμίσεις ").» </ p> <label> ». $ this-> l (« Μήνυμα προς τον κόσμο »).» </ label> <div class="margin-form"> <input type="text" name="our_message" /> </ Span> <input type="submit" name="submit" value="'.$this-> l («Ενημέρωση»). "class =" κουμπί "/> </ Πεδίων> </ Form> "? }
Τελικό καλλυντικό αλλαγή μας είναι να προσθέσετε μια επικεφαλίδα στο πάνω μέρος της οθόνης μας ρυθμίσεις μόνο στην περίπτωση που ο χρήστης έχει ξεχάσει πού είναι! Το κάνουμε αυτό με την προσθήκη της παρακάτω γραμμής κατά την έναρξη της λειτουργίας getContent ():
$ This-> _html = '<h2>' $ this-> displayName »</ h2> '...?
Προ-οίκηση πεδία της φόρμας διαμόρφωσης
Ένα άλλο στοιχείο που λείπει από το αρχικό σχέδιο φροντιστήριο μας ήταν η εμφάνιση των σημερινών ρυθμίσεων, με τη μορφή ρύθμισης μονάδα, ακόμη και όταν οι αποδόσεις μορφή από την αναπροσαρμογή των τιμών των πεδίων είναι κενή, οπότε θα πρέπει να διορθώσετε αυτό το πρόβλημα στο πάρα πολύ. Υπάρχουν δύο πιθανότητες ότι θα πρέπει να χειρίζεται:
- Η αρχική οθόνη του εντύπου θα πρέπει να εμφανίσετε την τρέχουσα ρύθμιση (εάν υπάρχει)
- Μετά από μια ενημέρωση μορφή που θα πρέπει να εμφανίζει τα δεδομένα που έχουν εισαχθεί από τον χρήστη
Μπορούμε να χρησιμοποιήσουμε το Configuration :: πάρει () συνάρτηση για να ανακτήσετε τις τρέχουσες ρυθμίσεις από τη βάση δεδομένων, και Εργαλεία :: getValue () για να δείτε τα περιεχόμενα του πεδίου. Τα Εργαλεία :: getValue () παίρνει μια δεύτερη παράμετρος που θα είναι χρήσιμο σε αυτό το πλαίσιο, όπως αυτό καθορίζει μια "λανθασμένη" θα πρέπει να χρησιμοποιήσετε το πεδίο είναι κενό. Μπορούμε να ρυθμίσουμε τώρα την «αξία» χαρακτηριστικό της ετικέτας εισόδου μας κατάλληλα τη χρήση αυτών των δύο λειτουργιών, μέχρι την τελική κωδικό εισόδου μας μορφή θα είναι:
<input type="text" name="our_message" value="'.Tools::getValue('our_message', όνομα Configuration::get($this->. »_message»)). "" />
Μια άλλη χρήσιμη αλλαγή να κάνει όταν ασχολείται με διάφορους τομείς σε μια ρύθμιση για να είναι η μετακίνηση του κώδικα βάσης δεδομένων ενημέρωσης για την ιδιωτική λειτουργία του. Γι 'αυτό θα αντικαταστήσει τη γραμμή:
αν (! sizeof ($ this-> _postErrors)) { Διαμόρφωση :: updateValue ($ this-> όνομα «_message», Εργαλεία :: getValue («our_message»), είναι αλήθεια.)? $ This-> _html = '<div class="conf confirm">' $ this-> l («Ρυθμίσεις ενημέρωση») »</ span>»...? }
με τα εξής:
αν (! sizeof ($ this-> _postErrors)) $ This-> _postProcess ()?
Και προσθέτουμε τη λειτουργία νέων ιδιωτικών μέλος στην τάξη μας για να χειριστεί τις πραγματικές ενημερώσεις σε ένα ενιαίο, εύκολα αναγνωρίσιμα θέση:
λειτουργία ιδιωτικών _postProcess () { Διαμόρφωση :: updateValue ($ this-> όνομα «_message», Εργαλεία :: getValue («our_message»), είναι αλήθεια.)? $ This-> _html = '<div class="conf confirm">' $ this-> l («Ρυθμίσεις ενημέρωση») »</ span>»...? }
Ο χειρισμός άλλων ειδών πεδία
Στην τελική λήψη της ενότητας σκελετού Έχω προσθέσει επίσης παραδείγματα από άλλους τύπους πεδίων που θα ενεργεί ως χρήσιμες συντομεύσεις για τη δημιουργία μονάδας φόρμα σας διαμόρφωση. Αυτό καλύπτει πλαίσια ελέγχου, κουμπιά επιλογής, textarea και αναπτυσσόμενες λίστες. Το μόνο που χρειάζεται να κάνετε είναι να προσθέσετε / μετονομάσετε τα πεδία, να προσθέσετε οποιαδήποτε επικύρωση απαιτούνται για την _postValidation () και να τροποποιήσει τον κώδικα ενημέρωση στο _postProcess () λειτουργία κατάλληλα.
Για υποχρεωτικές ρυθμίσεις θα πρέπει επίσης να ελέγξετε για την παρουσία τους στη λειτουργία εγκατάστασης και να λάβει τα κατάλληλα μέτρα για την πρόληψη της μονάδας σας προκαλεί σφάλματα στο Μέτωπο π.χ. Γραφείο με τον καθορισμό κατάλληλων προεπιλογές χρησιμοποιώντας το Configuration :: updateValue () συνάρτηση. Εναλλακτικά, αυτό μπορεί να γίνει στην ενότητα κατασκευαστή, αν και είναι πιο σωστό να εκτελέσει αυτό το πλαίσιο εγκατάστασης ().
Η προσθήκη πολλαπλών τοποθεσία οθόνη άγκιστρα
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.
Μπορείτε να κατεβάσετε την πλήρη ενότητα κώδικα σκελετό χρησιμοποιώντας τον παρακάτω σύνδεσμο:

















































