<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://star-citizen.wiki/index.php?action=history&amp;feed=atom&amp;title=Hilfe%3AInfobox_Module</id>
	<title>Hilfe:Infobox Module - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://star-citizen.wiki/index.php?action=history&amp;feed=atom&amp;title=Hilfe%3AInfobox_Module"/>
	<link rel="alternate" type="text/html" href="https://star-citizen.wiki/index.php?title=Hilfe:Infobox_Module&amp;action=history"/>
	<updated>2026-05-16T06:00:12Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Star Citizen Wiki</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://star-citizen.wiki/index.php?title=Hilfe:Infobox_Module&amp;diff=46512&amp;oldid=prev</id>
		<title>FoXFTW: Die Seite wurde neu angelegt: „{{NavHeader |main=Hilfeübersicht |prev=« Module |next= }}  Wie in Hilfe:Module beschrieben werden Module hauptsächlich für die Generierung von Infoboxen erstellt. Im folgenden bauen wir beispielhaft eine Vorlage mit Modul für Beiträge aus dem Spectrum.  == Erstellen der Vorlage == Ein Modul sollte nie durch einen Nutzer selbst aufgerufen werden müssen, stattdessen rufen wir ein Modul immer über…“</title>
		<link rel="alternate" type="text/html" href="https://star-citizen.wiki/index.php?title=Hilfe:Infobox_Module&amp;diff=46512&amp;oldid=prev"/>
		<updated>2023-01-21T11:16:28Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „{{NavHeader |main=&lt;a href=&quot;/Hilfe:Star_Citizen_Wiki&quot; title=&quot;Hilfe:Star Citizen Wiki&quot;&gt;Hilfeübersicht&lt;/a&gt; |prev=&lt;a href=&quot;/Hilfe:Module&quot; title=&quot;Hilfe:Module&quot;&gt;« Module&lt;/a&gt; |next= }}  Wie in &lt;a href=&quot;/Hilfe:Module&quot; title=&quot;Hilfe:Module&quot;&gt;Hilfe:Module&lt;/a&gt; beschrieben werden Module hauptsächlich für die Generierung von Infoboxen erstellt. Im folgenden bauen wir beispielhaft eine Vorlage mit Modul für Beiträge aus dem &lt;a href=&quot;/Spectrum&quot; title=&quot;Spectrum&quot;&gt;Spectrum&lt;/a&gt;.  == Erstellen der Vorlage == Ein Modul sollte nie durch einen Nutzer selbst aufgerufen werden müssen, stattdessen rufen wir ein Modul immer über…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{NavHeader&lt;br /&gt;
|main=[[Hilfe:Star_Citizen_Wiki|Hilfeübersicht]]&lt;br /&gt;
|prev=[[Hilfe:Module|« Module]]&lt;br /&gt;
|next=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Wie in [[Hilfe:Module]] beschrieben werden Module hauptsächlich für die Generierung von Infoboxen erstellt. Im folgenden bauen wir beispielhaft eine Vorlage mit Modul für Beiträge aus dem [[Spectrum]].&lt;br /&gt;
&lt;br /&gt;
== Erstellen der Vorlage ==&lt;br /&gt;
Ein Modul sollte nie durch einen Nutzer selbst aufgerufen werden müssen, stattdessen rufen wir ein Modul immer über eine gleichnamige Vorlage auf.&lt;br /&gt;
&lt;br /&gt;
In unsere Fall erstellen wir die Seite &amp;lt;code&amp;gt;Vorlage:Spectrum Beitrag&amp;lt;/code&amp;gt; mit folgendem Inhalt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#invoke:Spectrum Beitrag|main}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Dokumentation}}&lt;br /&gt;
[[Kategorie:Vorlage]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Tags &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;includeonly&amp;gt;...&amp;lt;/includeonly&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;noinclude&amp;gt;...&amp;lt;/noinclude&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; steuern welche Inhalt von der Vorlage auf anderen Seiten angezeigt werden. Dieses Konzept ist im Wiki als [[mw:Transclusion/de|Transklusion]] bekannt.&lt;br /&gt;
&lt;br /&gt;
Dabei sagt &amp;lt;code&amp;gt;includeonly&amp;lt;/code&amp;gt;, dass Inhalte zwischen den Tags ausschließlich auf anderen Seiten angezeigt werden, und &amp;lt;code&amp;gt;noinclude&amp;lt;/code&amp;gt; besagt, dass Inhalte zwischen den Tags &amp;#039;&amp;#039;nicht&amp;#039;&amp;#039; auf anderen Seiten angezeigt werden dürfen.&lt;br /&gt;
&lt;br /&gt;
Der Part &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:Spectrum Beitrag|main}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ruft die Funktion &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; in dem noch zu erstellenden Modul &amp;lt;code&amp;gt;Modul:Spectrum Beitrag&amp;lt;/code&amp;gt; auf.&lt;br /&gt;
&lt;br /&gt;
Anschließend binden wir die [[Vorlage:Dokumentation]] ein, und [[Hilfe:Kategorien|kategorisieren]] die Vorlage in die Kategorie [[:Kategorie:Vorlage|Vorlage]] ein.&lt;br /&gt;
&lt;br /&gt;
Da &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Dokumentation}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Kategorie:Vorlage]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; innerhalb von &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;noinclude&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; stehen, werden diese Inhalte &amp;#039;&amp;#039;nicht&amp;#039;&amp;#039; auf anderen Seiten angezeigt.&lt;br /&gt;
&lt;br /&gt;
Folgende Werte soll der Nutzer unserer Vorlage hinzufügen können:&lt;br /&gt;
* Autor&lt;br /&gt;
* Thema&lt;br /&gt;
* Veröffentlichungsdatum&lt;br /&gt;
* Spectrum Url&lt;br /&gt;
&lt;br /&gt;
Entsprechend würde der Aufruf unserer Vorlage wie folgt aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Spectrum Beitrag&lt;br /&gt;
|Autor=&lt;br /&gt;
|Titel=&lt;br /&gt;
|Thema=&lt;br /&gt;
|Veröffentlichungsdatum=&lt;br /&gt;
|Spectrum Url=&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Erstellen des Moduls ==&lt;br /&gt;
Nun erstellen wir unser Modul, welches sich zum die auszugebende Infobox kümmert. Folgenden Inhalt fügen wir unter &amp;lt;code&amp;gt;Modul:Spectrum Beitrag&amp;lt;/code&amp;gt; ein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Der Name unseres Moduls&lt;br /&gt;
local SpectrumBeitrag = {}&lt;br /&gt;
&lt;br /&gt;
-- Die folgenden drei Zeilen &amp;quot;forcieren&amp;quot;, dass wir objekt orientiert programmieren müssen&lt;br /&gt;
local metatable = {}&lt;br /&gt;
local methodtable = {}&lt;br /&gt;
&lt;br /&gt;
metatable.__index = methodtable&lt;br /&gt;
&lt;br /&gt;
-- Hier binden wir den Inhalt anderer Modulseiten ein. In userem Fall binden wir das Modul:Infobox ein,&lt;br /&gt;
-- welches die Funktionalität zur Erstellung einer Infobox liefert&lt;br /&gt;
local infobox = require( &amp;#039;Module:Infobox&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Diese Methode wird unsere spätere Infobox erstellen.&lt;br /&gt;
-- Das &amp;#039;self&amp;#039; in der Klammer referenziert hierbei unser aktuelles &amp;#039;SpectrumBeitrag&amp;#039;-Objekt.&lt;br /&gt;
-- Über &amp;#039;self&amp;#039; können wir auf die anderen Methoden und Variablen in unserem Objekt zugreifen&lt;br /&gt;
&lt;br /&gt;
function methodtable.getInfoBox( self )&lt;br /&gt;
    -- Wir rufen die Methode &amp;#039;create&amp;#039; auf dem Modul:Infobox auf&lt;br /&gt;
    -- Werte in den geschweiften Klammern steuern das Verhalten der Infobox&lt;br /&gt;
&lt;br /&gt;
    -- Durch &amp;#039;local box&amp;#039; erzeugen wir eine Variable mit dem Namen &amp;#039;box&amp;#039;, sie enthält alle Methoden zur Erstellung unserer Infobox&lt;br /&gt;
    local box = infobox.create( {&lt;br /&gt;
        -- Die CSS Klasse &amp;#039;floatright&amp;#039; lässt die Infobox auf der rechten Seite anzeigen&lt;br /&gt;
        bodyClass = &amp;#039;floatright&amp;#039;,&lt;br /&gt;
        -- Zellen ohne Inhalt werden später nicht in der Tabelle angezeigt,&lt;br /&gt;
        -- dies ist nützlich wenn wir nicht für jedes Argument (z.B. &amp;#039;Titel&amp;#039;) prüfen wollen, ob der Nutzer etwas eingetragen hat&lt;br /&gt;
        removeEmpty = true,&lt;br /&gt;
    } )&lt;br /&gt;
&lt;br /&gt;
    -- Zellen in der Infobox werden in der Reihenfolge angezeigt, in der sie hinzugefügt wurden.&lt;br /&gt;
    -- Daher fügen wir zuerst der Infobox ein Bild hinzu&lt;br /&gt;
    box:addImage( self.frameArgs[ &amp;#039;Bild&amp;#039; ] )&lt;br /&gt;
&lt;br /&gt;
    -- self.frameArgs enthält die Werte, die der Nutzer der Vorlage hinzugefügt hat.&lt;br /&gt;
    -- In unserem Fall ist dies &amp;#039;Autor&amp;#039;, &amp;#039;Titel&amp;#039;, &amp;#039;Thema&amp;#039;, &amp;#039;Veröffentlichungsdatum&amp;#039;, und &amp;#039;Spectrum Url&amp;#039;&lt;br /&gt;
&lt;br /&gt;
    -- Der Titel einer Infobox wird prominent unterhalb des Bilds angezeigt&lt;br /&gt;
	box:addTitle( self.frameArgs[ &amp;#039;Titel&amp;#039; ] )&lt;br /&gt;
&lt;br /&gt;
    -- Ein &amp;#039;Header&amp;#039; ist eine kleinere Überschrift in einer Infobox, der thematische Inhalte voneinander trennt&lt;br /&gt;
    -- In diesem Fall zeigen wir den Text &amp;#039;Ein Spectrum Beitrag von AUTOR&amp;#039; an,&lt;br /&gt;
    -- dabei verwenden wir den durch den Benutzer eingegebenen Autor&lt;br /&gt;
    box:addHeader( &amp;#039;Ein Spectrum Beitrag von &amp;#039; .. self.frameArgs[ &amp;#039;Autor&amp;#039; ] )&lt;br /&gt;
&lt;br /&gt;
    -- Nun wollen wir die Infobox mit dem eigentlichen Inhalt befüllen&lt;br /&gt;
    -- Wir fügen der Infobox dabei &amp;quot;Reihen&amp;quot; (Row) hinzu.&lt;br /&gt;
    -- In diesem Fall wollen wir zwei Reihen nebeneinander anzeigen und nutzen dafür &amp;#039;col2&amp;#039;&lt;br /&gt;
    box:addRow( &amp;#039;Thema&amp;#039;, self.frameArgs[ &amp;#039;Thema&amp;#039; ], nil, &amp;#039;col2&amp;#039; )&lt;br /&gt;
    box:addRow( &amp;#039;Veröffentlichung&amp;#039;, self.frameArgs[ &amp;#039;Veröffentlichungsdatum&amp;#039; ], nil, &amp;#039;col2&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
    -- Nun prüfen wir explizit, ob der Benutzer etwas in das Feld &amp;#039;Spectrum Url&amp;#039; eingefügt hat&lt;br /&gt;
    -- Dies geschieht über &amp;#039;~=&amp;#039; (was ungleich bedeutet) und &amp;#039;nil&amp;#039; (was für &amp;#039;leer&amp;#039; steht)&lt;br /&gt;
    if self.frameArgs[ &amp;#039;Spectrum Url&amp;#039; ] ~= nil then&lt;br /&gt;
        -- Wenn also der Nutzer etwas in das Feld &amp;#039;Spectrum Url&amp;#039; eingetragen hat, dann&lt;br /&gt;
&lt;br /&gt;
        -- Fügen wir der Infobox eine neuen Abschnitt mit Namen &amp;#039;Quelle&amp;#039; hinzu&lt;br /&gt;
        box:addHeader( &amp;#039;Quelle&amp;#039; )&lt;br /&gt;
        -- Und fügen den Link als einzelne Zeile ein&lt;br /&gt;
    	box:addRow( &amp;#039;Geboren&amp;#039;, self.frameArgs[ &amp;#039;Spectrum Url&amp;#039; ] )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Am Ende geben wir die gesamte Infobox als Zeichenkette aus (dies ändert alles was wir gebaut haben zu HTML Code)&lt;br /&gt;
    return tostring( box )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Diese Methode extrahiert die vom Nutzer eingegebenen Daten, und speichert diese auf &amp;#039;self.frameArgs&amp;#039;&lt;br /&gt;
function methodtable.setFrame( self, frame )&lt;br /&gt;
    self.currentFrame = frame&lt;br /&gt;
    self.frameArgs = require( &amp;#039;Module:Arguments&amp;#039; ).getArgs( frame )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Diese Methode erstellt uns ein neues Objekt von SpectrumBeitrag&lt;br /&gt;
function SpectrumBeitrag.new( self )&lt;br /&gt;
    local instance = {}&lt;br /&gt;
&lt;br /&gt;
    setmetatable( instance, metatable )&lt;br /&gt;
&lt;br /&gt;
    return instance&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Diese Methode wird durch usnere Vorlage aufgerufen&lt;br /&gt;
function SpectrumBeitrag.main( frame )&lt;br /&gt;
    -- Wir erstellen ein neues Objekt von unserem SpectrumBeitrag&lt;br /&gt;
    -- Dabei rufen wir die Methode &amp;#039;new&amp;#039; auf. Der Doppelpunkt (:) sorgt dafür, dass &amp;#039;self&amp;#039; mit unserem Objekt befüllt wird&lt;br /&gt;
    local instance = SpectrumBeitrag:new()&lt;br /&gt;
&lt;br /&gt;
    -- Wir rufen die Methode &amp;#039;setFrame&amp;#039; auf, und übergeben damit die Daten die der Benutzer eingegeben hat&lt;br /&gt;
    -- Auch hier sorgt der : wieder dafür, dass &amp;#039;self&amp;#039; in der Methode &amp;#039;setFrame&amp;#039; befüllt ist&lt;br /&gt;
    instance:setFrame( frame )&lt;br /&gt;
&lt;br /&gt;
    -- Wir rufen die Methode &amp;#039;getInfoBox()&amp;#039; auf, und zeigen das generierte HTML an&lt;br /&gt;
    return instance:getInfoBox()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return SpectrumBeitrag&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unsere &amp;lt;code&amp;gt;Vorlage:Spectrum Beitrag&amp;lt;/code&amp;gt; ruft also die Methode &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; des neu erstellen &amp;lt;code&amp;gt;Modul:Spectrum Beitrag&amp;lt;/code&amp;gt; auf.&lt;br /&gt;
Diese Methode extrahiert die Eingaben des Nutzers und erstellt letztentlich die am Ende angezeigte Infobox.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Automatische Kategorisierung ===&lt;br /&gt;
Verwenden wir nun die &amp;lt;code&amp;gt;Vorlage:Spectrum Beitrag&amp;lt;/code&amp;gt; wird uns eine entsprechende Infobox generiert. Allerdings werden diese Seiten keiner Kategorie hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
Wir ändern die Methode &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; wie folgt ab:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- Diese Methode wird durch usnere Vorlage aufgerufen&lt;br /&gt;
function SpectrumBeitrag.main( frame )&lt;br /&gt;
    -- [Vorheriger Inhalt] --&lt;br /&gt;
&lt;br /&gt;
    -- Neben der Infobox fürgen wir nun noch die Kategorie &amp;#039;Spectrum Beitrag&amp;#039; hinzu&lt;br /&gt;
    return instance:getInfoBox() .. &amp;#039;[[Kategorie:Spectrum Beitrag]]&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
[[Kategorie:Hilfe]]&lt;/div&gt;</summary>
		<author><name>FoXFTW</name></author>
	</entry>
</feed>