Πίνακας περιεχομένων

  1. Εισαγωγή

  2. Τι είναι τα αγκίστρια στο Dolibarr;

  3. Τύποι Hooks: Interface vs Business Events

  4. Πότε πρέπει να χρησιμοποιείτε γάντζο;

  5. Κατανόηση της αρχιτεκτονικής του συστήματος αγκίστρων Dolibarr

  6. Ρύθμιση ενός Hook σε μια Προσαρμοσμένη Ενότητα

  7. Καταχώριση Πλαισίων Hook στον Περιγραφέα Ενότητας

  8. Συμβάσεις ονομασίας μεθόδου αγκίστρου

  9. UI Hooks: Βελτίωση των διεπαφών χρήστη

  10. Data Hooks: Καταγραφή Βασικών Συμβάντων Επιχειρηματικής Λογικής

  11. Πρακτικά παραδείγματα χρήσιμων γάντζων

  12. Δημιουργία αρχείου Hook και Δόμηση της λογικής σας

  13. Πρόσβαση σε αντικείμενα Dolibarr από ένα γάντζο

  14. Αλυσοδέσιμο γάντζων σε πολλαπλές μονάδες

  15. Θεωρήσεις απόδοσης και βέλτιστες πρακτικές

  16. Αποσφαλμάτωση γάντζων: Εργαλεία και συμβουλές

  17. Επιπτώσεις στην ασφάλεια της λογικής Hook

  18. Ενσωμάτωση συστημάτων τρίτων μέσω Hooks

  19. Συμβατότητα με αγκίστρια κατά τη διάρκεια αναβαθμίσεων Dolibarr

  20. Τελικές Σκέψεις


1. Εισαγωγή

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

 


2. Τι είναι τα αγκίστρια στο Dolibarr;

Τα hooks είναι σημεία εισόδου που ορίζονται στον πυρήνα του Dolibarr και επιτρέπουν σε εξωτερικές μονάδες να "συνδεθούν" με την εφαρμογή και να προσθέσουν ή να τροποποιήσουν τη συμπεριφορά της. Είναι κλήσεις συναρτήσεων που ενεργοποιούνται δυναμικά κατά τη διάρκεια συγκεκριμένων συμβάντων.

Υπάρχουν δύο κύριες κατηγορίες:

  • Γάντζοι διεπαφής: Επηρεάζουν αυτό που βλέπει ο χρήστης (μενού, κουμπιά, σελίδες).

  • Γάντζοι για επιχειρήσεις/εκδηλώσεις: Εκτέλεση λογικής κατά τη διάρκεια αλλαγών δεδομένων (δημιουργία, ενημέρωση, διαγραφή).


3. Τύποι Hooks: Interface vs Business Events

Χαρακτηριστικά Σκοπός Παράδειγμα
Γάντζος UI Τροποποίηση ή επέκταση του περιβάλλοντος εργασίας χρήστη Προσθήκη καρτέλας στη σελίδα τιμολογίου
Επιχειρματικότητα Λογική ενεργοποίησης σε συμβάν Καταγραφή κάθε ενημέρωσης προϊόντος

Ορισμένα hooks είναι καθαρά οπτικά, άλλα επιτρέπουν την εκτέλεση λειτουργικής λογικής σε συμβάντα Dolibarr.


4. Πότε πρέπει να χρησιμοποιείτε γάντζο;

Χρησιμοποιήστε ένα γάντζο όταν χρειάζεται:

  • Προσθέστε μια προσαρμοσμένη καρτέλα ή κουμπί σε υπάρχουσες σελίδες Dolibarr.

  • Εισάγετε πρόσθετη επικύρωση κατά την αποθήκευση εγγραφών.

  • Καταγραφή, συγχρονισμός ή αντίδραση σε αλλαγές επιχειρηματικών αντικειμένων.

  • Επέκταση της συμπεριφοράς μιας βασικής διεργασίας χωρίς τροποποίηση του βασικού κώδικα.

Αποφύγετε τη χρήση hooks για λογική που δεν σχετίζεται με τα βασικά συμβάντα του Dolibarr ή όταν η απόδοση είναι κρίσιμη και μια άμεση παράκαμψη είναι πιο κατάλληλη.


5. Κατανόηση της αρχιτεκτονικής του συστήματος αγκίστρων Dolibarr

Ο μηχανισμός αγκίστρωσης του Dolibarr είναι αντικειμενοστρεφής. Οι ενότητες μπορούν να ορίσουν κλάσεις αγκίστρωσης που επεκτείνονται DolibarrHooks και να εφαρμόσουν μεθόδους που αντιστοιχούν στα στοχευμένα πλαίσια.

Κάθε ενότητα μπορεί να καταχωρίσει μια τάξη στο hook/ Ευρετήριο:

/custom/mymodule/hook/interface_99_modmymodule_common.php

6. Ρύθμιση ενός Hook σε μια Προσαρμοσμένη Ενότητα

  1. Δημιουργήστε ένα νέο αρχείο PHP στη μονάδα σας hook/ Κατάλογο.

  2. Ορίστε μια κλάση που ταιριάζει με τη σύμβαση ονοματοδοσίας.

  3. Στην περιγραφή της ενότητας (modMymodule.class.php), καταχωρήστε τα περιβάλλοντα του αγκίστρου:

$this->hooks = array('invoicecard', 'thirdpartycard');

7. Καταχώριση Πλαισίων Hook στον Περιγραφέα Ενότητας

Τα συμφραζόμενα του hook λένε στο Dolibarr πού πρέπει να εφαρμοστεί το hook σας. Συνηθισμένα συμφραζόμενα περιλαμβάνουν:

  • invoicecard

  • ordercard

  • thirdpartycard

  • propalcard

Αυτά αντιστοιχούν σε οθόνες διεπαφής ή τύπους αντικειμένων.


8. Συμβάσεις ονομασίας μεθόδου hook

Τα άγκιστρα ακολουθούν συγκεκριμένα μοτίβα ονομασίας μεθόδων. Παράδειγμα:

function formObjectOptions($parameters, &$object, &$action, $hookmanager) {
    // Custom logic here
}

Το όνομα της μεθόδου πρέπει να ταιριάζει με την ενεργοποίηση του κεντρικού αγκίστρου. Το Dolibarr καλεί τη μέθοδό σας εάν υπάρχει.


9. UI Hooks: Βελτίωση των διεπαφών χρήστη

Παραδείγματα περιλαμβάνουν:

  • addMoreActionsButtons: Προσθήκη κουμπιών στη φόρμα

  • printObjectLine: Εισαγωγή HTML σε γραμμική προβολή

  • formObjectOptions: Προσθήκη νέων πεδίων σε φόρμες

Αυτό σας επιτρέπει να επεκτείνετε το περιβάλλον χρήστη χωρίς να παρακάμψετε τα πρότυπα.


10. Δεδομένα Hooks: Καταγραφή Βασικών Συμβάντων Επιχειρηματικής Λογικής

Μπορείτε να αντιδράσετε σε συμβάντα κύκλου ζωής αντικειμένων:

  • doActions: Επεξεργασία προσαρμοσμένων ενεργειών

  • addMoreTabs: Προσθήκη νέων καρτελών σε μια κάρτα

  • beforeObjectSave, afterObjectSave

Χρησιμοποιήστε τα για επικύρωση, καταγραφή ή ειδοποιήσεις.


11. Πρακτικά παραδείγματα χρήσιμων γάντζων

  1. Καταγραφή κάθε νέας δημιουργίας τιμολογίου σε έναν προσαρμοσμένο πίνακα

  2. Εμφάνιση προειδοποιητικού banner σε εκπρόθεσμες προτάσεις

  3. Προσθέστε μια προσαρμοσμένη επιλογή εξαγωγής PDF στη σελίδα τιμολογίου

  4. Αποστολή webhook σε άλλο σύστημα όταν ενημερώνεται ένα τρίτο μέρος


12. Δημιουργία αρχείου Hook και Δόμηση της λογικής σας

Δομή:

class InterfaceModmymoduleCommon {
    function formObjectOptions($parameters, &$object, &$action, $hookmanager) {
        echo '<tr><td>Custom Field</td><td><input type="text" name="customfield"></td></tr>';
        return 1;
    }
}

Πάντα να επιστρέφω 0 or 1 για να υποδείξει εάν ο Dolibarr θα πρέπει να συνεχίσει την προεπιλεγμένη συμπεριφορά.


13. Πρόσβαση σε αντικείμενα Dolibarr από ένα γάντζο

Το Dolibarr μεταδίδει το ενεργό αντικείμενο (τιμολόγιο, τρίτο μέρος, κ.λπ.) μέσω του $object παράμετρος. Μπορείτε να:

  • Ανάγνωση δεδομένων: $object->ref, $object->id

  • Τροποποιώ: $object->note_private = 'new note'

  • Επικύρωση λογικής πριν από την αποθήκευση


14. Αλυσοδέσετε γάντζους σε πολλαπλές μονάδες

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

  1. mymodule

  2. customaddon

  3. thirdmodule

Αποφύγετε τις παρενέργειες που επηρεάζουν την κοινόχρηστη κατάσταση (π.χ., μη ορισμένες καθολικές μεταβλητές).


15. Παράγοντες Απόδοσης και Βέλτιστες Πρακτικές

  • Διατηρήστε την λογική του αγκίστρου αποτελεσματική

  • Ελαχιστοποίηση ερωτημάτων βάσης δεδομένων

  • Τιμές προσωρινής αποθήκευσης εάν επαναχρησιμοποιηθούν πολλές φορές

  • Αποφύγετε την εξαγωγή μεγάλων μπλοκ HTML εκτός αν χρειάζεται

Τα βαριά άγκιστρα μπορούν να επηρεάσουν τον χρόνο φόρτωσης της σελίδας.


16. Αποσφαλμάτωση γάντζων: Εργαλεία και συμβουλές

  • Χρήση dol_syslog() για την εκτέλεση του αγκίστρου καταγραφής

  • Ελέγξτε τα αρχεία καταγραφής εντοπισμού σφαλμάτων του Dolibarr /documents/admin/system.log

  • Προσωρινή απόρριψη μεταβλητών με var_dump() or print_r()


17. Επιπτώσεις στην ασφάλεια της λογικής Hook

  • Επικύρωση όλων των εισροών χρήστη εντός των hooks

  • Απολύμανση εξόδου πριν από την επανάληψη HTML

  • Ποτέ μην εμπιστεύεστε τιμές από $_POST/$_GET χωρίς GETPOST()

  • Ελέγξτε τα δικαιώματα πριν από την εκτέλεση ενεργειών

Τα άγκιστρα μπορούν να γίνουν αντικείμενο εκμετάλλευσης εάν εκθέτουν ευαίσθητες ενέργειες.


18. Ενσωμάτωση συστημάτων τρίτων μέσω Hooks

Κοινά μοτίβα:

  • Αποστολή αιτημάτων API στο afterObjectCreate

  • Αποθήκευση δεδομένων σε εξωτερικά συστήματα afterObjectUpdate

  • Προώθηση μηνυμάτων σε ουρές (π.χ., RabbitMQ)

Χρησιμοποιήστε hooks για να ενσωματώσετε το Dolibarr σε αρχιτεκτονικές μικρουπηρεσιών ή πλατφόρμες SaaS.


19. Συμβατότητα με αγκίστρια κατά τη διάρκεια αναβαθμίσεων Dolibarr

Κατά την αναβάθμιση του Dolibarr:

  • Ελέγξτε τα αρχεία καταγραφής αλλαγών για αλλαγές στη μέθοδο hook

  • Δοκιμάστε τις ενότητες σας σε περιβάλλοντα προετοιμασίας (staging)

  • Αποφύγετε να βασίζεστε σε άγκιστρα ή εσωτερικά αντικείμενα χωρίς έγγραφα

Το Dolibarr διατηρεί συμβατότητα με παλαιότερες εκδόσεις, αλλά δεν εγγυάται εσωτερικές αλλαγές.


20. Τελικές σκέψεις

Τα hooks αποτελούν το θεμέλιο της επεκτασιμότητας του Dolibarr. Επιτρέπουν στους προγραμματιστές να δημιουργούν ισχυρές προσαρμογές διατηρώντας παράλληλα τον πυρήνα ανέπαφο. Η εξειδίκευσή τους είναι απαραίτητη για την προηγμένη ανάπτυξη ενοτήτων, τις ενσωματώσεις τρίτων και την καθαρή, κλιμακώσιμη επιχειρηματική λογική.

Επωφεληθείτε από τα hooks για να προσαρμόσετε το Dolibarr στις ακριβείς ανάγκες σας—και κάντε το με τον σωστό τρόπο.