Χρήστης:Chomwitt/Μικρό εγχειρίδιο προτύπων
Βασικές έννοιες
[Επεξεργασία | επεξεργασία κώδικα]Η διαδικασία της ενσωμάτωσης των περιοχωμένων μιας σελίδας σε άλλες λέγεται διασυμπερίληψη. μια σύνθετη λέξη που σημαίνει περίπου να συμπεριλαμβάνεις κάτι σε πολλές σελίδες.
Πρότυπο καλούμε μια βικισελίδα που δημιουργήθηκε για διασυμπερίληψη (οχι δια να διαβαστεί αυτή καθ'αυτή)
Συμπερίληψη μέσω αναφοράς (διασυμπερίληψη)
[Επεξεργασία | επεξεργασία κώδικα]Ολόκληρα τα περιεχόμενα μιας σελίδας μπορούν να τοποθετηθούν σε μια άλλη μέσω μιας διαδικασίας που καλείται ενσωμάτωση(συμπερίληψη) μέσω αναφοράς-(transclusion).
Συγκεκριμένα επειδή η πραγματική χρησιμότητα έγκειτα να μπορούμε να ενσωματώσουμε το ίδιο πρότυπο σε όσες σελίδες θέλουμε , εξοικονομώντας έτσι χρόνο , θα χρησιμοποιώ προσωρινά τον αδόκιμο νεολογισμό διασυμπερίληψη,διανσωμάτωση (κάτι σαν σύζευξη των λέξεων συμπερίληψη,ενσωμάτωση και του μορίου δια που διασθητικά και συνειρμικά μου φανηκε αντίστοιχο του across που χρησιμοποιείται στον αντίστοιχο αγγλικό νεολογογισμό transclusion(include across).
Διαβάστε με προσοχή το βικιάρθρο transclusion για να κατανοήσετε την χρησιμότητα αυτής της διαδικασίας.
Προκειμένου να συμπεριλάβεις μέσω αναφοράς τα περιεχόμενας μιας άλλης σελίδας πηγή στην σελίδα σου προορισμός χρησιμοποιείς το συντακτικό {{χώρος ονομάτων:όνομα σελίδας}} με δύο εξαιρέσεις
- {{όνομα σελίδας}} είναι συντόμευση του {{πρότυπο:όνομα σελίδας}}
- {{:όνομα σελίδας}} είναι συντόμευση του {{wiki:όνομα σελίδας}}
Ο χώρος ονομάτων πρότυπα είναι ένας χώρος ονομάτων με το πρόθεμα Πρότυπα:. Μια σελίδα σε αυτόν τον χώρο ονομάτων καλείται πρότυπο. Τα περιεχόμενα μιας τέτοιας σελίδας (είτε στατικά είτε εξαρτώμενα από παραμέτρους ) έχουν σχεδιαστεί για να είναι χρήσιμα
Μερική συμπερίληψη μέσω αναφοράς
[Επεξεργασία | επεξεργασία κώδικα]Χρησιμοποιώντας εντολές σήμανσης όπως noinclude", "onlyinclude" και "includeonly" είναι δυνατό να συμπεριλαμβάνουμε μόνο ένα κομμάτι της σελίδας πηγή.
- parser function (συνάρτηση αναλυτή)
- Μικρά γράμματα (lower case) {{lc: ΑβΓ ΔέΖ }} δίνει αβγ δέζ
- Μεγάλα γράμματα (upper case) {{uc: ΑβΓ ΔέΖ }} δίνει ΑΒΓ ΔΈΖ
- Μικρά πρώτο γράμμα (lower case first) {{lcfirst: ΑβΓ ΔέΖ }} δίνει αβΓ ΔέΖ
- Μεγάλο πρώτο γράμμα (upper case first) {{ucfirst: αβΓ ΔέΖ }} δίνει ΑβΓ ΔέΖ
- κωδικοποίηση URL {{urlencode:"#$%&'()*,;?[]^`{} }} δίνει %22%23%24%25%26%27%28%29%2A%2C%3B%3F%5B%5D%5E%60%7B%7D
- wikimedia ParserFunctions Πρόκειται για ξεχωριστή ομάδα συναρτήσεων που το γενικό της συντακτικό είναι {{ #functionname: όρισμα 1 | όρισμα 2 | όρισμα 3... }} με την βασική διαφορά όπως βλέπεται να προηγείται του ονόματος της συνάρτησης το #
- #expr Υπολογισμός εκφράσεων Συντακτικό {{#expr: expression }}
- {{#expr: 34 + 8}} δίνει 42
- {{#expr: 30 = 7 }} δίνει 0 δηλαδή ψευδές
- {{#expr: 30 = 30 }} δίνει 1 δηλαδή αληθές
- {{ #expr: 30 < 7 }} δίνει 0 δηλαδή ψευδές
- {{ #expr: 5 mod 3 }} δίνει 2
- {{ #expr: 30 < 7 and ( 5 mod 3 ) = 2 }} δίνει 0 δηλαδή ψευδές
- {{ #expr: 30 > 7 and ( 5 mod 3 ) = 2 }} δίνει 1 δηλαδή αληθές
- #if Εκτέλεση υπο συνθήκη παρουσίας αλφαρηθμητικού Συντακτικό {{ #if: <condition string> | <code if true> }}
{{ #if: <αλφαρηθμητικό συνθήκης> | <κώδικας αν αληθές> | <κώδικας αν ψευδες> }}
- {{ #if: foo | κάνε αν αληθές | κάνε αν ψευδές }} δίνει κάνε αν αληθές αφού το αλφαρηθμητικό συνθήκης είναι μη κενό.
- {{ #if: | κάνε αν αληθές | κάνε αν ψευδές }} δίνει κάνε αν ψευδές αφού το αλφαρηθμητικό συνθήκης είναι κενό.
- #expr Υπολογισμός εκφράσεων Συντακτικό {{#expr: expression }}
- Μεταβλητές
- {{SITENAME}} δίνει Βικιπαίδεια
- {{SERVER}} δίνει //el.wikipedia.org
- {{NAMESPACE}} δίνει Χρήστης
- {{PAGENAME}} δίνει Chomwitt/Μικρό εγχειρίδιο προτύπων
- {{CURRENTDAYNAME}} δίνει Πέμπτη
- {{CURRENTHOUR}} δίνει 14
- {{CURRENTMONTHNAME}} δίνει Δεκέμβριος
- Διάφορες συναρτήσεις
- {{DISPLAYTITLE:xyz}} αλλάζει τον τίτλο της βικισελίδας
- {{CONTENTLANGUAGE}} el
Άσκηση Να δημιουργηθεί για την βικιπαίδεια πρότυπο με λειτουργικότητα να μετατρέπει σε μικρό το πρώτο γράμμα του τίτλου μιας βικισελίδας Λύση Σίγουρα θα χρειαστούμε την συνάρτηση {{lcfirst: }} και την μεταβλητή {{PAGENAME}} . Οπότε μια πρώτη δοκιμή είναι ή {{DISPLAYTITLE:{{lcfirst:{{PAGENAME}}}}} αλλά έτσι πιθανόν να είχαμε πρόβλημα άμα υπήρχε και χώρος ονόματος μπροστά οπότε η τελική εκδοχή είναι η {{DISPLAYTITLE:{{#if:{{NAMESPACE}}|{{NAMESPACE}}:|}}{{lcfirst:{{PAGENAME}}}}}
Χρήση προτύπου
[Επεξεργασία | επεξεργασία κώδικα]Για να διανσωματώσουμε-διασυμπεριλάβουμε ένα πρότυπο σε μιά άλλη σελίδα χρησιμοποιούμε το παρακάτω συντακτικό (που καλείτε ετικέτα προτύπου):
{{ όνομα προτύπου | παράμετρος | παράμετρος | ... }}
Αυτή περιλαμβάνει το όνομα του προτύπου και διάφορες παραμέτρους που μεταβιβάζονται στο πρότυπο, όπου κάθε παράμετρος χωρίζεται με μια κάθετη γραμμή (η σωλήνα), και όλη η κατασκευή περιέχεται μέσα σε διπλά άγκιστρα, και θα πρέπει να τοποθετείται οπουδήποτε θέλουμε να εμφανιστεί το πρότυπο. Το πρόθεμα "Πρότυπο:" δεν χρειάζεται ποτέ για την καθ'αυτή την διανσωμάτωση ,αλλά μόνο για να βρίσκουμε μέσω αναζήτησης και να επεξεργαζόμαστε το ίδιο το πρότυπο (αν όμως δημιουργήσουμε το πρότυπο σε διαφορετικό χώρο ονομάτων θα χρειαστούμε το πρόθεμα ). Δεν έχουν όλα τα πρότυπα παραμέτρους, και δεν έχουν όλα τα πρότυπα παραμέτρους που πρέπει να έχουν τιμές, έτσι μερικές φορές είναι αρκετό μόνο το όνομα του προτύπου {{ όνομα προτύπου }} για να το χρησιμοποιήσουμε. Αν χρειάζεται μια παράμετρος , αλλά δεν παρέχεται τιμή από τον χρήστη , το πρότυπο θα εμφανίσει κάτι σαν {{{...}}} μέσα στο κείμενο , όπου το '...' μπορεί να είναι ένας αριθμός ή παράμετρος , προκειμένου να ενημερωθεί ο χρήστης ότι λείπει μια παράμετρος με όνομα ή χωρίς, και αυτό μπορεί να αποφευχθεί με το να έχουμε δηλώσει προεπιλεγμένες τιμές για την παράμετρο αυτή .
Οι παράμετροι έχουν δύο βασικές μορφές:
- παράμετροι χωρίς όνομα: τιμές που τοποθετούνται στο πρότυπο στην σειρά που εμφανίζονται
{{ όνομα προτύπου | παράμετρος1 | παράμετρος2 | ... }}
- παράμετροι με όνομα: τιμές που σχετίζονται με κάποιο συγκεκριμένο κλειδί με όνομα στο πρότυπο
{{ όνομα προτύπου | όνομαπαραμέτρου1 = τιμήπαράμετρος1 | όνομαπαραμέτρου2 = τιμήπαράμετρος2 | ... }}
Μπορούμε να αναμείξουμε τις δύο αυτές μορφές:
{{ όνομα προτύπου | παράμετρος1 | παράμετρος2 | όνομαπαραμέτρου1 = παράμετρος3 | όνομαπαραμέτρου2 = παράμετρος4 | ... }}
Από σύμβαση δίνουμε τις παραμέτρους που έχουν όνομα τελευταίες, αν και αυτό δεν είναι υποχρεωτικό. Λευκοί χαρακτήρες (κενά , στηλοθέτες, επιστροφές) αφαιρούνται από την αρχή και το τέλος κάθε τιμής παραμέτρου, αλλά όχι από το μέσο: έτσι {{ ... | παράμετροςμου = αυτή είναι μια δοκιμή }} θα χρησιμοποιηθεί σαν να πληκτρολόγησε ο χρήστης {{ ... |παράμετροςμου=αυτή είναι μια δοκιμή}}.
Οι σελίδες προτύπων μπορούν οι ίδιες να περιλαμβάνουν περιέχομενο το οποίο δεν θα διαπεριληφθεί μαζί με το πρότυπο (όπως τεκμηρίωση του ίδιου του προτύπου ή κατηγορίεςr), ή υλικό που θα χρηιμοποιηθεί μόνο όταν διαπεριληφθεί ή σελίδα (πχ κατηγορίες που αφορούν την σελίδα που θα κάνει την διανσωμάτωση , αλλά όχι το πρότυπο). Δες σχετικά την συζήτηση για τις ετικέτες includeonly και noinclude παρακάτω.
Η προσπάθεια να διαπσυμπεριλάβουμε ένα πρότυπο που δεν υπάρχει θα δημιουργήσει έναν κόκκινο σύνδεσμο, όπως η σύνδεση σε μη-υπάρχουσα σελίδα. Ακολουθώντας το σύνδεσμο αυτό μπορούμε να δημιουργήσουμε το συγκεκριμένο πρότυπο.
Οι παράμετροι των προτύπων πέρνουν μόνο την τιμή την ορισμάτων , έχουμε δηλαδή την λεγόμενη κλήση κατ'αξία.
Στην κλήση του προτύπου (μπορούμε να έχουμε πολλά ορίσματα, αλλά δυο στο παράδειγμα που ακολουθεί, το συντακτικό είναι :
- {{όνομαΠροτύπου|όνομαπαρ1=τιμήπαρ1|όνομαπαρ2=τιμήπαρ2}} με παραμέτρους {{{όνομαπαρ1|προεπιλογή}}}, {{{όνομαπαρ2|προεπιλογή}}}, κτλ. στο πρότυπο ή
- {{όνομαΠροτύπου|τιμήπαρ1|τιμήπαρ2}} με ετικέτες {{{1|προεπιλογή}}}, {{{2|προεπιλογή}}}, κτλ στο πρότυπο ή
- ένα μείγμα των δυο.
Συνεπώς μια κλήση προτύπου έχει μετά το όνομα του προτύπου , μηδέν ή περισσότερα ορίσματα παραμέτρων, που διαχωρίζονται με πρωτογενείς καθέτους (πρωτογενείς εδώ σημαίνει:στο βικικείμενο, όχο μόνο στο επεκτειμένο βικικείμενο, και όχι εσωκλειστά σε διπλά ή τριπλά άγκιστρα ή διπλές αγκύλες). Ακόμα κάθε όρισμα που περιέχει ένα πρωτογενές χαρακτήρα ισότητας (=) χωρίζεται απ'αυτό σε ένα όνομα παραμέτρου και τιμή παραμέτρου. Σ'αυτό το στάδιο επεκτείνεται το βικιόνομα των παραμέτρων, αλλά όχι ακόμα των τιμών.
Για τα εναπομείναντα ορίσματα (που δεν έχουν όνομα) χρησιμοποιούνται οι αριθμοί 1,2,3, κτλ/ (έτσι αν υπάρχουν και ονοματισμένοι παράμετροι οι παράμετροι που έμμεσα αριθμούνται , αριθμούνται σύμφωνα με την θέση που έχουν σαν ξεχωριστή λίστα, και όχι η θέση που θα είχαν σε μια μεικτή λίστα μαζί με τις ονοματισμένα ορίσματα παραμέτρων.) Αν αναθέτονταν σε μια παράμετρο μια τιμή παραπάνω από μια φορά (περισσότερο από μια σαν ονοματισμένο όρισμα παραμέτρου ή μια σαν έμμεσα αριθμημένο και μια ή περισσότερες σαν ονοματισμένο) , δουλεύωντας από αριστερά προς δεξιά διαμέσου της μεικτής λίστας θα διατηρούνταν μόνο η τελευταία ανάθεση. Το αποτέλεσμα είναι ένας συσχετιστικός πίνακας με όνοματα παραμέτρων και το αντίστοιχο βικικείμενο για τις τιμές τους.
Μια παράμετρος αναπαρίσταται με μια ετικέτα παραμέτρου με τρια ζευγάρια αγκιστρων , που προαιρετικά ακολουθείται από μια κάθετο και μια προεπιλεγμένη τιμή.. Δηλαδή όταν δημιουργούμε ένα πρότυπο τα μέρη του που θέλουμε να είναι παραμετροποιήσιμα θα τα δώσουμε ένα όνομα μέσα σε τριπλά άγκιστρα. Το ορίσματα με ονόματα που αντιστοιχούν σε παράμετρο επιλέγονται(μόνο τα βικικείμενα των τιμών αυτών των ορισμάτων θα επεκταθούν, καθώς και οι προεπιλογές και τα μη-ορισμένα , αν καθοριστεί). Η κλήση του προτύπου θα αντικατασταθεί από το περιεχόμενο του προτύπου, όπου οι ετικέτες των παραμέτρων με τα ταιριαστά ονόματα θα αντικατασταθούν από τις τιμές ή τις προεπιλεγμένες τιμές. Το αποτέλεσμα αυτού του βήματος μπορεί να γίνει ορατό εφαρμόζωντας το subst.
Ενώ αυτό που εξηγήσαμε αφορούσε επέκταση βικικειμένου για το όνομα προτύπου, στην επέκταση μπορεί αναδρομικά να επεκταθούν και ονόματα παραμέτρων και επιλεγμένοι παράμετροι.
Πχ έχοντας δημιουργήσει το πρότυπο:Δοκιμή1(αρχή-{{{1}}}-τέλος) , η κλήση {{Δοκιμή1|1=α|2=β|μέση|μεσούλα}} θα εμφανίσει αρχή-μέση-τέλος.Δοκιμάστε και στο Αμμοδοχείο. Μια ετικέτα παραμέτρου πχ stu μπορεί να γίνει αναφορά σ'αυτό είτε ρητά με '3=pqr', ή έμμεσα βάζωντας το pqr στην τρίτη θέση ανάμεσα στα μη-ονοματισμένα ορίσματα. Αν το όνομα δεν είναι ένας "μικρός" θετικός ακέραιος μπορεί να γίνει αναφορά σ'αυτό μόνο ρητά.
Σύγκριση μεταξύ ονοματισμένων και εμμέσως αριθμημένων παραμέτρων:
- Για να καθορίσεις την τιμή μιας εμμέσων αριθμημένης παραμέτρου θα πρέπει να έχουν οριστεί και όλες οι προηγούμενες.(συχνάχρησιμοποιείται μια κενή συμβολοσειρά όταν η ανάθεση γίνεται μόνο γι'αυτό τον λόγο).
- Με έμμεση αρίθμηση η κλήση είναι μικρότερη (εκτός αν πρέπει να ορίσουμε και επιπλέον παραμέτρου μόνο για τον προηγούμενο λόγο)
- Οι ονοματισμένοι παράμετροι μπορούν να καθοριστούν σε οποιαδήποτε σειρά.
- Σε μια έμμεσα αριθμημένη παράμετρο μπορεί να τεθεί τιμή που να περιέχει το "=" μόνο με τέχνασμα (δες παρακάτω).
- Τα κενά και οι αλλαγές σελίδας αφαιρούνται από την αρχή και το τέλος των τιμών των ονοματισμένων παραμέτρων ,αλλά όχι από τις έμμεσα αριθμημένες παραμέτρους. Άρα το καλύτερο όνομα για μια παράμετρο διαχωριστή (που θα καθορίζει πως θα διαχωρίζονται τα αντικείμενα μια εξόδου) είναι το "1".
Η προεπιλεγμένη τιμή που θέτουμε στις παραμέτρους στο σώμα του προτύπου (που είναι προαιρετική μαζί με την κάθετο που προηγείται) μπορεί να είναι διαφορετική για κάθε εμφάνιση της παραμέτρου στο σώμα του προτύπου , και εφαρμόζεται αν δεν έχει καθοριστεί κάποια τιμή όταν γίνει η κλήση, κάτι το οποίο δεν πρέπει να συγχέεται με την περίπτωση που καθορίζεται μια κενή τιμή.
Για να ξεχωρίσουμε ανάμεσα στην περίπτωση που ορίζεται μια παράμετος και είναι μη-κενή και στην περίπτωση που δεν έχει οριστεί ή είναι κετνή χρησιμοποιούμε την διαταγή [1] με κενή προεπιλογή:
{{ #if: {{{παραμ|}}} | παραμ ορισμένη και μη-κενή | παραμ είναι κενή ή μη ορισμένη}}.
Για να ξεχωρίσουμε ανάμεσα σε ορισμένη (και πιθανώς κενή) και μη ορισμένη :
{{ #ifeq: {{{παραμ|+}}} | {{{παραμ|-}}} | παραμ είναι ορισμένη | παραμ είναι μη ορισμένη }}.
Στην περίπτωση αντικατάστασης σελίδας με μη ορισμένη παράμετρο, δεν αντικαθίσταται η προεπιλεγμένη τιμή αλλά η ίδια η παρέμετρος με την προεπιλογή . Συμπεριφορά που μπορεί να αλλάξει . Σχετικά en:w:Help:Substitution#Parameter_default_considerations.
Ασκήσεις
[Επεξεργασία | επεξεργασία κώδικα]Θα βασιστούμε στα πρότυπα ασκήσεων που βρίσκονται εδώ