Ουρντού Ελληνικά
Greek English Deutsch Deutsch español Español Français Français ιταλικά Italiano Ολλανδός Nederlands Πορτογάλος Português Русский Русский Ελληνικά Ελληνικά
Login



 
Καλώς ήλθατε στο Jumi! Φροντιστήριο >> >> Αυτο μορφές καλώντας σε Joomla! περιεχόμενο

Υπάρχουν πολλοί άνθρωποι που επιθυμούν να δημοσιεύσουν προσαρμοσμένες φόρμες τους σε Joomla! περιεχόμενο.

Για να ικανοποιήσουν τις ανάγκες τους αποφάσισα να γράψω αυτό το tutorial. Το σεμινάριο είναι αφιερωμένο στο Joomla! 1.0.x κωδικοποίησης αρχάριους, αλλά ενδιάμεσες μπορεί να βρεθεί κάποια χρήσιμα κόλπα επίσης.

Σε αυτό το βήμα προς βήμα φροντιστήριο θα μάθετε

  • τι αυτο μορφές Colling είναι και για ποιο σκοπό που εξυπηρετούν,
  • κάποιες από τις πιο χρήσιμες PHP και Joomla! 1.0.x κόλπα που έχουν σχέση με τον εαυτό μορφές κλήση. Π.χ.:
    • πώς πιάνει ένα σενάριο ότι ένας χρήστης έχει στείλει τα δεδομένα,
    • πώς να αναγνωρίζουν μια διεύθυνση URL στο οποίο η δέσμη ενεργειών εκτελείται,
    • πώς να απενεργοποιήσετε τη συγκεκριμένη Joomla! Σελίδα από cache,
    • τι το Joomla! συγκεκριμένο αντικείμενο βάσης δεδομένων $, $ μου είναι, πού να βρει τις μεθόδους τους και η περιγραφή τους,
    • και ούτω καθεξής

Τι μορφές καλώντας τον εαυτό είναι και για ποιο σκοπό εξυπηρετούν

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

Συλλέγονται δεδομένα δεν παραμένουν σε μια μορφή, αλλά είναι - συνήθως μετά από το πάτημα στο κουμπί - έστειλε κάπου. Στέλνονται σε κάποιο σενάριο επεξεργασίας που "κάθεται" σε μια άλλη διεύθυνση URL και ότι - μετά την προεπεξεργασία δυνατόν - γράφει τα δεδομένα στη βάση δεδομένων ή / και τους στέλνει σε μια διεύθυνση e-mail.

Αυτή είναι η πιο κοινή προσέγγιση. Και σε αυτή προσέγγιση στηρίζεται πρότυπο Joomla! μορφές συστατικών.

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

Είναι ακόμη δυνατό ακόμη περισσότερο: για να δείτε τα αποτελέσματα της φόρμας στο ίδιο περιεχόμενο του άρθρου.

Σε αυτό το tutorial θα σας δείξει πώς.

Επειδή πρέπει να υπάρχει κάποια PHP script εκεί που χειρίζεται τα δεδομένα με τη μορφή που θα κάνουν χρήση του plugin Jumi για αυτό, συμπεριλαμβανομένων σεναρίων στο περιεχόμενο. Εάν προτιμάτε κάποιο άλλο plugin για ένταξη σε PHP script το Joomla! περιεχόμενο μπορείτε να το χρησιμοποιήσετε ως καλά.

Επίδειξη περιγραφή μορφή

Αν και η παρακάτω φόρμα demo είναι πολύ συγκεκριμένο, μπορείτε να γράψετε κάθε μορφή μπορείτε να φανταστείτε από την προσέγγιση που περιγράφεται σε αυτό το σεμινάριο.

Μην κάνετε δοκιμές για τη δημόσια διακομιστή παραγωγής, αλλά σε τοπικό υπολογιστή σας μόνο!

Ας υποθέσουμε θέλουμε

  • μια μορφή ψήφου που συλλέγει απαντήσεις στις ερωτήσεις 3 αλληλοαποκλείονται,
  • να αποθηκεύσετε τις απαντήσεις σε μια βάση δεδομένων μαζί με την ημερομηνία και την ώρα της απάντησης και μαζί με τον προσδιορισμό ενός χρήστη,
  • να δείξει ένα "ευχαριστώ" ανακοίνωση και περίληψη των αποτελεσμάτων, αλλά μόνο σε εκείνους τους χρήστες που ψήφισαν.

Βασική στρατηγική

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

Υπάρχουν δύο κύριες λογικές ενότητες στο έργο μας:

  • + δείχνουν αποτελούν τη συλλογή δεδομένων + + ελέγχει τους αποθηκεύσετε τα δεδομένα σε μια βάση δεδομένων (αυτο μορφή κλήσης)
  • ανάγνωση δεδομένων από μια βάση δεδομένων και δείτε τα αποτελέσματα.

Γι 'αυτό θα χωρίσει την εφαρμογή μας σε δύο αρχεία script πολύ: self_call_form.php και show_results.php.

Θα μπω σε λεπτομέρειες στη συνέχεια.

Αλλά ας ξεκινήσουμε με μια βάση δεδομένων πρώτα.

βάση δεδομένων

Αφήστε όνομα της βάσης δεδομένων μας τραπέζι είναι xxx_mytable_test όπου xxx αντιπροσωπεύει το Joomla! πρόθεμα βάσης δεδομένων. Μερικοί το Joomla! χρήστες έχουν Jos άλλοι έχουν πρόθεμα MOS πρόθεμα. Θα υποθέσω Jos πρόθεμα στο εξής.

Επαναλαμβάνω το καθήκον μας είναι να αποθηκεύουν ημερομηνία αρχείου και χρόνος, αναγνώριση του χρήστη και μια απάντηση.

Χωρίς να υπεισέλθω σε βάση δεδομένων MySQL και σχεδιαστικές λεπτομέρειες πίνακα που μπορεί να βρεθεί αλλού η δομή του πίνακα περιγράφεται στη γλώσσα της MySQL θα είναι:

Δημιουργία πίνακα ΑΝ ΔΕΝ ΥΠΑΡΧΕΙ `jos_mytable_test` (
`Id` int (11) NOT NULL AUTO_INCREMENT,
`Recordtime` datetime NOT NULL default "0000-00-00 00: 00: 00»,
`User_id` varchar (15) NOT NULL default "υποδοχής",
`Απαντήσουν` int ΔΕΝ (6) NULL default "0»,
PRIMARY KEY (`id`)
) TYPE = MyISAM?

Το πεδίο id προστέθηκε μόνο για τον πίνακα ρεκόρ μοναδικό αναγνωριστικό.

Θα πρέπει να δημιουργήσετε τον πίνακα σε Joomla βάση δεδομένων σας. Βεβαιωθείτε, ότι το πρόθεμα σας είναι jos_. Αν εξακολουθεί να είναι mos_, αλλάξτε το πρόθεμα πίνακα.

Μπορείτε να δημιουργήσετε πίνακα με το phpMyAdmin είτε χειροκίνητα είτε αυτόματα από το copy-paste της δήλωσης MySQL παραπάνω.

Θα υποθέσουμε ότι ο πίνακας jos_mytable_test δημιουργείται από τώρα.

self_call_form.php

Υπάρχουν βασικά δύο μέθοδοι με τις οποίες επικοινωνούν με το περιβάλλον μορφή της: POST και GET. ΠΑΡΤΕ στέλνει (και διαβάζει) τα δεδομένα από το παράρτημα διεύθυνση URL. Δεν θα χρησιμοποιήσουμε τη μέθοδο GET εδώ.

Μέθοδο POST γράφει δεδομένα σε παγκόσμια php μεταβλητή $ _POST. Έτσι έχουμε πλήρη πρόσβαση στα δεδομένα που αποστέλλονται εδώ.

Γενικά ο αλγόριθμος του self_call_form.php

Εάν δεν υπάρχουν σχετικά στοιχεία στο $ _POST, δηλαδή δεν υπάρχει καμία απάντηση από ένα χρήστη, τότε δείχνουν μορφή. Εάν ο χρήστης απάντησε, τότε να τον ευχαριστήσω και να γράψει την απάντηση (και άλλα δεδομένα) στη βάση δεδομένων.

Ο αλγόριθμος παραπάνω μεταφράζονται στη γλώσσα php μοιάζει με αυτό τον κωδικό:

λειτουργία self_form()
 / / Το όνομα πλήκτρο Radio (εδώ "απάντηση") πρέπει να είναι ένα όνομα στήλης σε μια βάση δεδομένων πολύ!
{

 $ Άγκυρα  =  "MyForm";  / / Η μεταβλητή $ άγκυρα θα χρειαστεί αργότερα
 ηχώ "Το όνομα  ";  / / Html η άγκυρα θα χρειαστεί αργότερα
 ηχώ "
"; / / Μορφή εμπορευματοκιβωτίων if(!isset($ _POST[«Απάντηση»])) / / Αν δεν υπάρχει απάντηση και στη συνέχεια γράψτε τη μορφή { $ RETURN_URL = Get_return_url($ Άγκυρα); ηχώ "
"; ηχώ "

Έχεις βρει χρήσιμο αυτό το σεμινάριο; "; ηχώ " name='answer' type='radio' Απολύτως κανένα.\n"; ηχώ "Type='radio' name='answer' Έτσι έτσι.\n"; ηχώ " name='answer' type='radio' Ναι. Ευχαριστώ για αυτό.\n"; ηχώ "<Τύπο εισόδου =" submit "onClick = 'επιστροφής checkForm (this.form)»    value = "Υποβολή" class = "κουμπί" /> "; ηχώ ""; }} αλλιώς / / Αν δεν υπάρχει μια απάντηση ευχαριστήσω και να γράψει την απάντηση στη βάση δεδομένων { ηχώ "Σας ευχαριστούμε για την ψήφο σας "?   write_data($ _POST[«Απάντηση»]); }} ηχώ ""; }}

Η εξήγηση και μερικά κόλπα

PHP λειτουργία isset («απάντηση») ελέγχει τα «απάντηση» σε καιρό υπάρχει $ _POST.

Θέλουμε τη φόρμα για να στείλετε δεδομένα σε αυτο. Αυτό σημαίνει ότι στην ίδια διεύθυνση URL (έντυπο και χειρόγραφο της επεξεργασίας μπορεί να βρεθεί στην ίδια διεύθυνση URL). Μπορούμε να χρησιμοποιήσουμε σκληρά κωδικοποιημένο διεύθυνση URL της σελίδας ή, όπως στην περίπτωσή μας, μπορούμε να πάρουμε τη διεύθυνση URL από το Joomla περιβάλλον χρησιμοποιώντας ένα απλό τέχνασμα. Χρησιμοποιώντας το τέχνασμα είναι καλύτερα στη συνέχεια ο πρώτος σκληρός κωδικοποιημένη προσέγγιση επειδή ο κώδικας μας είναι επαναχρησιμοποιήσιμα σε διάφορες σελίδες χωρίς καμία επαφή.

Έτσι, εδώ έρχεται το τέχνασμα που περιέχονται στο get_return_url λειτουργία ($ άγκυρα).

Λειτουργία get_return_url ()
λειτουργία get_return_url($ Άγκυρα)
{
 if ($ QUERY_STRING = MosGetParam( $ _SERVER,  "QUERY_STRING",  '' ))

 {
  $ Επιστρέψει  =  'Index.php? "  .  $ QUERY_STRING;
 
 }}
 αλλιώς
 {

  $ Επιστρέψει  =  "Index.php";
 
 }}
 / / Ένα url ξεκινά με index.php τώρα

 
 
 / / Μετατροπή και να & xtml για τη συμμόρφωση

 $ Επιστρέψει  =  str_replace( '&',  «&»,  $ Επιστρέψει );
 
 / / Προσθήκη άγκυρα στο τέλος του url

 $ Επιστρέψει  .="# $ Άγκυρα";  / / Προσθήκη άγκυρα στο url
 / / Prepand http:// στην αρχή του URL
 απόδοση sefRelToAbs($ Επιστρέψει);



}}

Δεν υπάρχει κανένα θαύμα σε αυτό. Η συνάρτηση επιστρέφει μόνο διεύθυνση URL όπου τρέχει (σε ​​μορφή μας). Συμπεριλαμβάνοντας την άγκυρα.

Γιατί έχω συμπεριλάβει την (HTML) άγκυρα στη διεύθυνση επιστροφής;

Φανταστείτε ότι η μορφή μας είναι στο κάτω μέρος του ένα πολύ μεγάλο σελίδα. Αν δεν ήταν για την άγκυρα στη συνέχεια, μετά την αποστολή δεδομένων χρήστης θα δει στην κορυφή της σελίδας και πρέπει να μετακινηθείτε προς τα κάτω. Με την αγκυροβόληση των χρηστών θα πρέπει να επιστρέψει στον τόπο που ψήφισαν.

Θα ήθελα να στρέψω την προσοχή σας στο Joomla! συγκεκριμένες mosGetParam λειτουργία () πολύ. Είναι η πιο χρήσιμη λειτουργία. Και θα πρέπει να χρησιμοποιείται σε σας αποτελεί εντατικά.

Η γενική περιγραφή του mosGetParam () μπορεί να βρεθεί εδώ. Ένα από τα πρακτικά έθιμά εξής:

Αντί να χρησιμοποιεί:

$ _POST ['Somename »]

είναι καλύτερο να χρησιμοποιήσετε:

mosGetParam ($ _POST, «somename»)

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

Ωστόσο, αν έχετε πολλά δεδομένα για επεξεργασία μπορεί να είναι μάλλον καταναλωτική χρόνο να αποσύρει όλες τις τιμές από $ _POST ένα προς ένα: είτε με άμεση πρόσβαση σε αυτά ή μέσω mosGetParam () συνάρτηση. Υπάρχει ένα άλλο τέχνασμα: η χρήση php λειτουργία εκχύλισμα ($ _POST) που χτίζει τις μεταβλητές και τους εκχωρεί ονόματα από όλο το περιεχόμενο των $ _POST.

Ανακοίνωση που χρησιμοποιούμε $ _SERVER στην get_return_url λειτουργία (). $ _SERVER Είναι μια άλλη παγκόσμια PHP μεταβλητή $ _POST, όπως και μπορεί να είναι κάποια σενάρια χρήσης σε σας πάρα πολύ. Εάν δεν γνωρίζετε το περιεχόμενο των μεταβλητών που μπορείτε να τους δείξουμε στις σελίδες σας χρησιμοποιώντας την var_dump ($ somoevaribale) λειτουργία.

Λειτουργία checkForm ()

Αυτή είναι η επικύρωση το javascript λειτουργία που επικυρώνει είσοδο χρήστη από ορισμένους κανόνες. Αυτό το email είναι πραγματικά μια διεύθυνση ηλεκτρονικού ταχυδρομείου, ότι το όνομα δεν είναι κενή, κλπ.

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

Με τη μορφή demo μας θα επικυρώσει ο χρήστης έχει επιλέξει μια "απάντηση" κουμπί. Αν δεν υπάρχει «απάντηση» δεν υποβάλλουν δεδομένα, αλλά δείχνουν μια προειδοποίηση: