Συζήτηση προτύπου:Wikidata
- Διαγραφή
- Αρχείο
Κατηγορίες Ανίχνευσης
[επεξεργασία κώδικα]Προς το παρόν στην Κατηγορία:Σελίδα που χρησιμοποιεί δεδομένα των Wikidata υπάρχει ελάχιστο μέρος των δεδομένων που αντλούνται. Σκέφτηκα προσθέσω στο πρότυπο τον εξής κώδικα, ώστε να συλληφθούν όλες(;) οι αντλήσεις από τα wikidata, αμέσως πριν το </includeonly>
[[Κατηγορία:Σελίδα που χρησιμοποιεί δεδομένα των Wikidata/{{{1|}}}]]
Ωστόσο το πρότυπο καλείται δεκάδες χιλιάδες φορές, οπότε δεν ήθελα να το δοκιμάσω κατευθείαν. —Ah3kal (συζήτηση) 09:35, 21 Μαρτίου 2017 (UTC)
@Ah3kal: Έτσι σκέτο θα μπαίνει το λήμμα στην κατηγορία απλά με την κλήση του προτύπου ακόμη και αν δεν υπάρχουν καθόλου δεδομένα. Είναι καλύτερη μέθοδος αυτή, όπως και σε άλλες παραμέτρους σε παρόμοια infoboxes κλπ. Χρειάζεται δυο προϋποθέσεις: να μην υπάρχει τοπικά συμπληρωμένη τιμή + να υπάρχει τιμή στα Wikidata για να χρησιμοποιηθεί εκείνη. Το ιδανικό θα ήταν να έμπαινε μέσα από το module. - geraki (συζήτηση) 12:06, 21 Μαρτίου 2017 (UTC)
- geraki Ναι όντως βλακεία μου! δεν το σκέφτηκα συνειδητά, παρότι ασυνείδητα θεώρησα δεδομένο αυτό. Το ξεχνάω λοιπόν και μέχρι να μπει (αν μπορεί να μπει) στο module θα το βάζω έτσι. —Ah3kal (συζήτηση) 12:08, 21 Μαρτίου 2017 (UTC)
Geraki, το ξανασκέφτηκα λίγο: Έτσι δεν θα δουλεύει; Βλέπεις κάποια πιθανή παρενέργεια;
{{#if:{{#property:{{{1|}}}}}|[[Κατηγορία:Σελίδα που χρησιμοποιεί δεδομένα των Wikidata/{{{1|}}}]]|}}
—Ah3kal (συζήτηση) 07:08, 22 Μαρτίου 2017 (UTC)
Το μόνο για το οποίο δεν είμαι σίγουρος είναι αν υπάρχει τοπική τιμή στη μορφή
{{{χχχχχχ| {{wikidata|....}} }}}
Το πρότυπο καλείται τελικώς; Αν όχι δεν υπάρχει πρόβλημα. Αλλά μάλλον επειδή έχω δει να χρησιμοποιείται και
{{wikidata|P....| {{{xxxxxxxx}}} }}
εδώ θα υπάρχει πρόβλημα, γιατί σίγουρα καλείται το πρότυπο. Έτσι; Οπότε πάλι μάλλον άστο... —Ah3kal (συζήτηση) 07:12, 22 Μαρτίου 2017 (UTC)
Μετά από δοκιμή, για την πρώτη περίπτωση δεν υπάρχει πρόβλημα, υπάρχει όμως για την δεύτερη [1]. Άραγε φτιάχνεται με ένα δεύτερο if για το ; χρησιμοποιείται όμως αυτή η παραμέτρος και με διαφορετικό τρόπο.—Ah3kal (συζήτηση) 07:41, 22 Μαρτίου 2017 (UTC)
Στο Module:Wikidata γραμμή 26-34 υπάρχει κώδικας που υποθέτω είναι για αυτόν τον σκοπό. Επειδή δεν βγάζω άκρη: Είναι αυτό κάτι που θα έπρεπε να κάνει από προεπιλογή ή θα πρέπει να κληθεί το {{wikidata}} με κάποια παράμετρο για να δουλέψει. Επιπλέον, οι παράμετροι τύπου {{Wikidata|P36|showqualifiers=P580}} πιάνονται ως μεταβλητή {{{2}}} ; Γιατί αν όχι, τότε με δεύτερο #if για το {2} θα δουλεύει λογικά.—Ah3kal (συζήτηση) 07:53, 22 Μαρτίου 2017 (UTC)
- Ναι, είναι για αυτό το σκοπό αλλά δεν θυμάμαι, ούτε μπορώ να βρω παρά τον δεύτερο καφέ, σε ποιο σημείο πρέπει να κληθεί (καλείται σε διάφορα σημεία του module αλλά δεν βλέπω που ορίζονται οι παράμετροι (π.χ. το όνομα της κατηγορίας). Το ορθότερο και φθηνότερο θα ήταν να μπαίνει από εδώ. Προς το παρόν το παρακάτω φαίνεται να δουλεύει. - geraki (συζήτηση) 11:41, 22 Μαρτίου 2017 (UTC)
Geraki Όπως είναι εδώ Χρήστης:Ah3kal/wikidata, φαίνεται να δουλεύει [2] [3] [4].—Ah3kal (συζήτηση) 08:01, 22 Μαρτίου 2017 (UTC)
- Βλέπω έχεις προβλέψει στις δοκιμές τις πιθανές περιπτώσεις στην χρήση του και δεν φαίνεται πρόβλημα, οπότε λέω go for it... - geraki (συζήτηση) 11:41, 22 Μαρτίου 2017 (UTC)
- Geraki, υπήρξε απρόβλεπτη παρενέργεια. Οι εικόνες εμφανίζονταν σαν να είναι nowiki, καθώς και ο σύνδεσμος στα commons. Γιατί μάλλον όταν στην σύνταξη παρεμβάλεται κατηγορία συμβαίνει το ίδιο με όταν παρεμβάλεις ένα nowiki ή ένα span, την σπάει Π.χ. {{εικόνα|File:Sandra Cretu.jpg[[Κατηγορία:χχχχχ]]|200εσ}} γίνεται (από το πλ. καλλιτέχνη)—Ah3kal (συζήτηση) 12:04, 22 Μαρτίου 2017 (UTC)
- Χμμ... Το έχω ξαναδεί. Είναι στις περιπτώσεις που η τιμή χρησιμοποιείται εντός άλλο wikitext, πιθανά να έσκαγαν και άλλες συντάξεις (π.χ. εξωτερικός σύνδεσμος;) Θα πρέπει να το δούμε μέσω του module, ή απλά να μείνουμε στον έλεγχο μέσα στο πρότυπο-κονσέρβα. - geraki (συζήτηση) 12:17, 22 Μαρτίου 2017 (UTC)
- Η άλλη λύση είναι να γίνονται όλα μόνο με πρότυπα τύπου {{WdΤόποςΓέννησης}}. Σε αυτά τα πρότυπα θα μπορεί να μπει και ένας διακόπτης που να τα σβήνει. Π.χ. να έχει μία μεταβλητή {{{wikidata}}} το πρότυπο, και να καλεί π.χ. έτσι: {{{WdΤόποςΓέννησης|{{{wikidata|}}}}}} το οποίο να επιστρέφει τιμή μόνο αν το {{{wikidata|}}} είναι κενό. Έτσι όπου χρειάζεται το πρότυπο δεν θα επιστρέφει καμία τιμή από wikidata, πράγμα που επιβάλεται για περιπτώσεις που δεν πρέπει να έρχεται η τιμή, και δεν θέλουμε να έχουμε κάτι άλλο στη θέση της. Έτσι θα απλοποιηθεί και η σύνταξη των προτύπων και θα υπάρχει καλύτερος έλεγχος για το τι κάνει τι πράγμα.—Ah3kal (συζήτηση) 12:24, 22 Μαρτίου 2017 (UTC)
@Geraki: Δες αυτό: Πρότυπο:WdΨευδώνυμο, με ενσωματωμένο διακόπτη. —Ah3kal (συζήτηση) 08:22, 23 Μαρτίου 2017 (UTC)
- Υπάρχει ένα δίλλημα: Πόσοι διακόπτες στα κεντρικά πρότυπα (εδώ Πληροφορίες Προσώπου); (1) Ένας για κάθε παράμετρο (1) ένας γενικός; (3) Ή ένας για κάθε παράμετρο αλλά και ένας γενικός που θα είναι η default τιμή για όλους τους άλλους; —Ah3kal (συζήτηση) 08:42, 23 Μαρτίου 2017 (UTC)
- Το πρότυπο περιέχει ήδη δύο εμφωλευμένα if. Επειδή δεν είναι ορατά υπάρχει ο κίνδυνος και το ίδιο να εμφωλευθεί σε τρίτο και τέταρτο if μέσα στο infobox. Καλύτερα σε αυτό το στάδιο όλος ο κώδικας να είναι ορατός μέσα στο (όποιο) infobox. Ούτως ή άλλως αν θέλουμε πρότυπα τύπου
{{WdΨευδώνυμο}}
,{{WdΤόποςΓέννησης}}
,{{πληθυσμός}}
ή{{δήμαρχος}}
, μπορούν να τραβούν απευθείας το module αντί να τραβούν το{{Wikidata}}
που με τη σειρά του τραβά το module... - Πρέπει να ελαττώσουμε τα if στους ελέγχους. Τουλάχιστον το ένα μπορεί να αντικατασταθεί με switch.
- Θα έλεγα καταρχήν ένας για κάθε παράμετρο, όχι με παράμετρο-διακόπτη αλλά με έλεγχο της τοπικής τιμής όπως έκανα στο υψόμετρο. Έτσι γλιτώνουμε μια παράμετρο, ένα if, και πολύπλοκες οδηγίες για το χρήστη. Αν θέλουμε και γενικό διακόπτη αυτό σημαίνει ένα επιπλέον if σε κάθε παράμετρο ενός infobox. Δεν βρίσκω χρησιμότητα σε ένα γενικό διακόπτη απενεργοποίησης. Αν κάποιος κλείσει τη ροή σε ένα λήμμα σήμερα με βάση τα σημερινά δεδομένα των Wikidata, το κάνει χωρίς να λαμβάνει υπόψη μελλοντικές ενημερώσεις των δεδομένων (πρακτικά: κλείνεις τον γενικό διακόπτη σήμερα επειδή έρχεται λάθος ο πληθυσμός και αποκλείεις την ενημέρωση του δημάρχου στις επόμενες εκλογές;)
- geraki (συζήτηση) 10:26, 23 Μαρτίου 2017 (UTC)
- @Geraki:
- Αν και δεν βλέπω τον κίνδυνο να εμφωλευθεί σε άλλο if, γενικά έχεις δίκιο, συμφωνώ
- Έχεις δίκιο, θα το κάνω.
- (ακολουθεί πρωτοτυπία) έχεις δίκιο, πιο καλή λύση είναι το switch. Ο γενικός διακόπτης, στην περίπτωση που εφαρμοστεί ο τρόπος π.χ. με την παύλα, δεν έχει όντως νόημα. —Ah3kal (συζήτηση) 10:38, 23 Μαρτίου 2017 (UTC)