Συζήτηση προτύπου:Wikidata

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

Κατηγορίες Ανίχνευσης[επεξεργασία κώδικα]

ping geraki, P.a.a

Προς το παρόν στην Κατηγορία:Σελίδα που χρησιμοποιεί δεδομένα των 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)[απάντηση]


  1. Το πρότυπο περιέχει ήδη δύο εμφωλευμένα if. Επειδή δεν είναι ορατά υπάρχει ο κίνδυνος και το ίδιο να εμφωλευθεί σε τρίτο και τέταρτο if μέσα στο infobox. Καλύτερα σε αυτό το στάδιο όλος ο κώδικας να είναι ορατός μέσα στο (όποιο) infobox. Ούτως ή άλλως αν θέλουμε πρότυπα τύπου {{WdΨευδώνυμο}}, {{WdΤόποςΓέννησης}}, {{πληθυσμός}} ή {{δήμαρχος}}, μπορούν να τραβούν απευθείας το module αντί να τραβούν το {{Wikidata}} που με τη σειρά του τραβά το module...
  2. Πρέπει να ελαττώσουμε τα if στους ελέγχους. Τουλάχιστον το ένα μπορεί να αντικατασταθεί με switch.
  3. Θα έλεγα καταρχήν ένας για κάθε παράμετρο, όχι με παράμετρο-διακόπτη αλλά με έλεγχο της τοπικής τιμής όπως έκανα στο υψόμετρο. Έτσι γλιτώνουμε μια παράμετρο, ένα if, και πολύπλοκες οδηγίες για το χρήστη. Αν θέλουμε και γενικό διακόπτη αυτό σημαίνει ένα επιπλέον if σε κάθε παράμετρο ενός infobox. Δεν βρίσκω χρησιμότητα σε ένα γενικό διακόπτη απενεργοποίησης. Αν κάποιος κλείσει τη ροή σε ένα λήμμα σήμερα με βάση τα σημερινά δεδομένα των Wikidata, το κάνει χωρίς να λαμβάνει υπόψη μελλοντικές ενημερώσεις των δεδομένων (πρακτικά: κλείνεις τον γενικό διακόπτη σήμερα επειδή έρχεται λάθος ο πληθυσμός και αποκλείεις την ενημέρωση του δημάρχου στις επόμενες εκλογές;)

- geraki (συζήτηση) 10:26, 23 Μαρτίου 2017 (UTC)[απάντηση]


@Geraki:
  1. Αν και δεν βλέπω τον κίνδυνο να εμφωλευθεί σε άλλο if, γενικά έχεις δίκιο, συμφωνώ
  2. Έχεις δίκιο, θα το κάνω.
  3. (ακολουθεί πρωτοτυπία) έχεις δίκιο, πιο καλή λύση είναι το switch. Ο γενικός διακόπτης, στην περίπτωση που εφαρμοστεί ο τρόπος π.χ. με την παύλα, δεν έχει όντως νόημα. —Ah3kal (συζήτηση) 10:38, 23 Μαρτίου 2017 (UTC)[απάντηση]