Zum Inhalt springen

Hilfe Diskussion:Vorlagenprogrammierung

Seiteninhalte werden in anderen Sprachen nicht unterstützt.
aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 27. Mai 2006 um 22:22 Uhr durch Huebi (Diskussion | Beiträge) (Rundungsfehler). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Letzter Kommentar: vor 19 Jahren von Huebi in Abschnitt Rundungsfehler

Guter Code, schlechter Code

Gibt es irgendwo Beispiele für guten Code vs. schlechten Code? Mit Wikitext lässt sich inzwischen ganz schön konfus Programmieren, deshalb auch meine Forderung, alle Vorlagen ohne Dokumentation zu löschen. Allerdings sind Whitespaces und die Zeichen ':', '|' und '=' ein Problem (oder Bestandteil von Bugs). -- Nichtich 18:35, 4. Mai 2006 (CEST)Beantworten

Beispiele wüsste ich direkt keine. Für komplizierte Vorlagen, so sie denn wirklich sein müssen, sollte nicht nur ihre Verwendung dokumentiert sein, sondern auch ihre Implementierung. (Ich sitze allerdings im sprichwörtlichen Glashaus: Die Implementation einiger Vorlagen auf Wikinews, die auf meinem Mist gewachsen sind, ist vollkommen undokumentiert.) Sonst kommt mir nur noch das KISS-Prinzip in den Sinn. —da Pete (ばか) 20:54, 4. Mai 2006 (CEST)Beantworten
Mir fällt da spontan ein Negativbeispiel ein: Kategorie:Kalendernavigation, ein schier unüberschaubarer Brocken, und trotzdem vieles nur Geschnipsel. Die etwa von 5. Mai oder Juli 2002 verwendeten Kalender sind nur spärlich zusammengefasst auf Vorlage Diskussion:Kalender Monat Jahr beschrieben, mal eben in eine der Vorlagen reinzuschauen und sie undokumentiert zu verstehen ist nahezu unmöglich, vor allem, weil für den fertigen Kalender wie gesagt eine Vielzahl von Vorlagen verwendet wird. Durch Parameter kann ein Großteil der Kategorie sicher eingespart werden (wie von mir angestrebt). Niemand braucht zum Beispiel mehrere Kalenderköpfe für die einzelnen Monate, wenn man etwa eine Vorlage:Vormonat anlegt.
Soll nur ein kleiner Einblick in das Problem gewesen sein. Hier findet ihr alle meine Unterseiten, darunter sind auch die Entwürfe für ein neues Kalendernavigationssystem. --CyRoXX (?) 21:14, 4. Mai 2006 (CEST)Beantworten
Nachtrag: Das Front-End dieses Entwurfs ist Benutzer:CyRoXX/Kalender. --CyRoXX (?) 21:24, 4. Mai 2006 (CEST)Beantworten

Zeichenkettenvergleich

Hi, klärt mich auf, wenn ich falsch liege, aber der Abschnitt erweckt den Eindruck, daß es möglich ist Zeichenketten zu vergleichen, dabei ist nur das Vorhandensein prüfbar. --chrislb 问题 11:00, 5. Mai 2006 (CEST)Beantworten

Zeichenkettenvergleich ist mit #ifeq oder #switch möglich. Der Abschnitt ist also nicht sehr gut benannt. -- sebmol ? ! 11:15, 5. Mai 2006 (CEST)Beantworten
Wenn wir schon Arithmetische Operationen haben, dann vermisse ich auch Zeichenkettenoperationen. Bräuchte eine substring-Operation --chrislb 问题 11:37, 5. Mai 2006 (CEST)Beantworten
Da bist du nicht der Erste. Auf m:Talk:ParserFunctions wurde das schon angesprochen, aber (bisher?) nicht umgesetzt. —da Pete (ばか) 12:33, 5. Mai 2006 (CEST)Beantworten
Hab den Abschnitt mal in "Überprüfung von Zeichenketten" umbenannt. Bei der Übertragung und Namensgebung des Abschnitts habe ich mich wohl zu sehr von der Vorlage:Booleq leiten lassen. --CyRoXX (?) 10:30, 9. Mai 2006 (CEST)Beantworten

Tabellenspalten ausblenden?

Moin! Kann man hiermit auch Tabellenzeilen ausblenden, wenn sie leer sind? Tabellen enthalten ja auch |-Zeichen, scheint nicht die beste Wahl gewesen zu sein, hier einfach nur | und nicht etwa |: oder so zu verwenden. Bisher nutze ich class="{{{Bild|}}}HiddenStructure", um Zeilen auszublenden, siehe Vorlage:Koreanischer Begriff. -- iGEL·대화 10:00, 9. Mai 2006 (CEST)Beantworten

Ja, kann man, allerdings erst mal nur mit Vorlagenhack. Über eine Nachbesserung der Syntax für solche populäre Verwendung der Parserfunktionen wird gerade diskutiert. "hiddenStructure" ist auf jeden Fall keine gute Lösung und sollte unbedingt vermieden werden. -- sebmol ? ! 10:08, 9. Mai 2006 (CEST)Beantworten
Danke für die Antwort. Soll ich dann einen solchen Hack benutzen oder warten, bis es eine Änderung der Syntax gibt? -- iGEL·대화 11:21, 9. Mai 2006 (CEST)Beantworten
Idealerweise warten. Wenn das nicht möglich ist, benutz den {{!}}-Hack. Dadurch wird es einfacher, alle Vorkommen dann zu finden, sobald die Syntaxerweiterung steht. -- sebmol ? ! 11:32, 9. Mai 2006 (CEST)Beantworten
Ich hab jetzt erstmal die Tabelle mit dem alten HTML-Syntax gebaut, nun kann ich das auch einsetzen. Ist natürlich auch nicht besonders schön, zumal es ja auch Bots gibt, die die HTML-Tabellen ersetzen. -- iGEL·대화 09:37, 18. Mai 2006 (CEST)Beantworten

Hi, bei allen Vorlagen, die Links enthalten gibt es das Problem, das der Link dann fett wird, wenn die Vorlage im Linkziel verwendet wird. So würde die Vorlage:zh, die einen Link auf Chinesische Schrift beinhaltet, auf selbiger Seite nicht mehr wie sonst aussehen, weswegen sie auch dort noch nicht eingesetzt wird. Hat jemand eine Idee, wie sich das generell beheben lässt? --chrislb 问题 17:29, 10. Mai 2006 (CEST)Beantworten

Ich glaube nicht, dass das möglich ist. Die Fettschreibung wird von der Software so festgelegt. Die einzige Möglichkeit wäre, den CSS-Code innerhalb der Seite zu überschreiben. Das ist aber ledier nicht unbedingt auf alle Browser anwendbar und auch für den Bearbeiter nicht nachvollziehbar, was da passiert. Hast du mal ein Beispiel, wo das besonders stört? -- sebmol ? ! 17:36, 10. Mai 2006 (CEST)Beantworten
Naja, es gibt außer dieser Vorlage noch andere, die für Namen ohne Lateinische Buchstaben verwendet werden. Wir diskutieren grade, die Vorlage zu erweitern, dann hätten wir drei Links, und somit drei Seiten, wo es stören würde.
Statt
chin. 休息 xiūxī
erscheint dann
chin. 休息 xiūxī,
wenn es auf der Seite Chinesische Schrift steht, und das direkt neben dem Hauptlemma, das allein fett sein soll. --chrislb 问题 20:22, 10. Mai 2006 (CEST)Beantworten
Ja, ich glaube nicht, dass das möglich ist. Übrigens möchte ich nebenbei auch noch sehr Vorlage:lang ans Herzen legen. Damit kann für fremdsprachige Texte dme Browser die erwartete Sprache angegeben werden. -- sebmol ? ! 20:31, 10. Mai 2006 (CEST)Beantworten
Ich habe gerade noch ne Idee, wie das u.U. doch gelöst werden kann. Ich werd mich heute nacht mal daran setzen und hoffentlich morgen eine Lösung bereithaben. -- sebmol ? ! 20:33, 10. Mai 2006 (CEST)Beantworten
Meine Lösung würde lediglich darauf hinauslaufen, dass man eine #ifeg:-Abfrage verwendet, die überprüft, ob das Link-Ziel gleich der Seite ist, auf der die Vorlage verwendet wird. Wenn dem so ist, wird chin. als ganz normaler Text ausgegeben, ansonsten als Link. Das müsste man dann entsprechend in jeder der Vorlagen realisieren. Ich bin aber natürlich auch gespannt, was sebmol in seinem stillen Kämmerlein zu diesem Thema ausheckt ;-) --CyRoXX (? ±) 20:39, 10. Mai 2006 (CEST)Beantworten
Was kreativeres ist mir auch nicht eingefallen, nur dass ich diese Funktionalität in eine extra Vorlage:NoSelfLink geschrieben habe. -- sebmol ? ! 10:54, 11. Mai 2006 (CEST)Beantworten
@sebmol: Bin "Hauptautor" der Vorlage Diskussion:lang ;) --chrislb 问题 21:28, 10. Mai 2006 (CEST)Beantworten

Projekt:Infobox Medien

kann mir jemand bitte mal den Fehler, den ich hier gemacht habe erklären und/oder vielleicht mal in den Vorlagen:Buch und Buchvorlage korrigieren
Eiragorn Let's talk about... Horst Fuchs 18:28, 11. Mai 2006 (CEST)Beantworten

sieht das ok aus fürs erste? schau dir mal in der versionsgeschichte kurz an, was ich gemacht hab, hab nämlich grad keine zeit (RL ruft nach mir) --CyRoXX (? ±) 18:46, 11. Mai 2006 (CEST)Beantworten
Vielen Dank für deine ganze Hilfe, glaub ich habe das ganze endlich kapiert und den endgültigen Quelltext herausgefunden (Vorlage:Infobox Serie). Hier ist jetzt nämlich alles perfekt übersichtlich, hab mit subst: in meinem Benutzerraum herumgebastelt
Eiragorn Let's talk about... Horst Fuchs 17:47, 12. Mai 2006 (CEST)Beantworten

Rechnen und ausgeben grosser Zahlen

Ich möchte gerne grosse Zahlen formatiert ausgeben (also mit tausenderpunkt) und trotzdem mit ihnen rechnen. gebe ich die zahl gleich mit tausenderpunkt an, dürfte ich ja nicht mehr mit ihnen rechnen können. Any idea? --Huebi 22:08, 25. Mai 2006 (CEST)Beantworten

Auch wenn ich schon bisschen Alkohol intus habe; Also da mehrere Tausenderpunkte vorkommen können, denke ich kommst du um eine if-Abfrage (Größe) nicht rum. Dann würde ich die Zahl in Abschnitte zerlegen, durch entrechenden Tausenderwert dividieren (runden) und als String mit Punkt verbinden. -- Ολλίμίνατορέ 23:29, 25. Mai 2006 (CEST)Beantworten
Ich brauche keinen staatlich festgelegten Tag, um mich zu betrinken :) Aber ich habs schon befürchtet, wie es zu gehen hat, Zahl unformatiert übergeben und aufbereitet ausgeben, was aber schon bei nur 2 Tausenderpunkten ein ziemlciher #expr Truemmer wird. --Huebi 06:37, 26. Mai 2006 (CEST)Beantworten

Rundungsfehler

{{#expr: ((123456789 / 1000) round 0 ) mod 1000 }} ergibt 457 anstatt 456. Aergerlich sowas. Was kann man da machen? Hmmm 123456,789 gerundet erinbt natuerlich 123457, ich glaub da muss ich mit mod und Subtraktion arbeiten... Any other idea? --Huebi 11:48, 26. Mai 2006 (CEST)Beantworten

Ja, bevor du rundest musst du den mod subtraieren. Nein, mit den zur Verfügung stehenden Funktionen (ist alles sehr umständlich) bleibt nur dieser Weg (soweit ich weiß) -- Ολλίμίνατορέ 15:18, 26. Mai 2006 (CEST)Beantworten
Nein, viel einfacher: Durch Vertauschen des Rundens und Mods erhältst du das gewünschte Ergebnis. {{#expr: ((123456789 / 1000) mod 1000 ) round 0 }} = 456. --CyRoXX (? ±) 16:26, 27. Mai 2006 (CEST)Beantworten
Also ich hab das aufgegeben, es sollte etwas werden, was 123456789 123.456.789 macht und aus 789 natuerlich nicht 0.0.789, sondern 789. Damit kann man einerseits mit den Zahlen noch rechnen, andererseits sie noch ausgeben. Das ganze artet aber IMHO aus. --Huebi 16:44, 27. Mai 2006 (CEST)Beantworten
Ja, ich glaube auch. Allein bei diesen drei Dreiergruppen dürftest du einen kleinen Batzen If-Abfragen und Berechnungen per expr haben. Und da wir ja (zum Glück?) keine Programmiersprache haben, sondern nur wenige Elemente einer solchen, ist es auch nicht möglich, eine Zahl beliebiger Länge zu verarbeiten, zum Beispiel nicht nur 123456789, sondern auch 123456789123456789 oder vielleicht auch ein Googol. --CyRoXX (? ±) 17:07, 27. Mai 2006 (CEST)Beantworten
Wenn man ein Maximum (fest)setzt, dann müsste für jeden Tausender ein if reichen (wobei klein angefangen wird). Sind 10 Tausender nicht noch legitim? :-p. Die Frage wäre; wo läge denn die Grenze? -- Ολλίμίνατορέ 19:52, 27. Mai 2006 (CEST)Beantworten
Fuer Einwohnerzahlen und Flächen reichen 3 Gruppen dicke. Ich mein, ich habs ja so gut wie fertig, aber um die 0 zu unterdruecken, braucht man ein if, indem ein dickes expr steckt, um zu entscheiden, das man das ergebnis des dicken expr doch braucht und auszugeben hat. ich weiss nicht, ob es das wert ist. Schoen waere es schon, wenn man Prozentuale verteilungen in der Vorlage abhandlen könnte oder zB Einwohner pro km² ausrechnen könnte. erschwerden kommt allerdings das Komma hinzu.... --Huebi 19:59, 27. Mai 2006 (CEST)Beantworten
Naja, ob wir für derartiges eine Vorlage benötigen? Zum einen gibt es sowieso immer mal wieder Streit um das einzig wahre Tausendertrennzeichen. Zum anderen kann man selbiges ganz einfach von Hand setzen und Prozente sowie die Bevölkerungsdichte sollte man per Taschenrechner ermitteln können oder lieber die Finger davon lassen, wenn man nichts davon versteht. Die entsprechenden Angaben sollten direkt in den Artikel geschrieben und nicht von Vorlagen abhängig gemacht werden. --CyRoXX (? ±) 22:16, 27. Mai 2006 (CEST)Beantworten
Naja ich steh da eher auf dem Standpunkt "let the machine do what the machine can do for you" Und wenn sich eine einwohnerzahl ändert dann will ich nicht noch nachschauen muessen wo die noch "versteckt" ist. Mir ist aber der Aufwand schlicht (noch) zu hoch. --Huebi 22:22, 27. Mai 2006 (CEST)Beantworten