Wie erstelle ich neue Feldtypen in den Artikel-Tabellen


Folgende Schritte/Anpassungen sind notwendig um einen neuen Feldtyp in einer Artikel-Tabellen zu definieren:

Feldtyp definieren (Datenbank)

Bearbeiten Sie die MySQL Tabelle field_def und fügen Sie den Ident ihres Feldtyps zur Enum-Liste des Felds F_TYP hinzu. Beispiel-SQL:

ALTER TABLE ´field_def´ 
CHANGE COLUMN ´F_TYP´ ´F_TYP´ ENUM('TEXT','FLOAT','INT','CHECKBOX','MULTICHECKBOX','MULTICHECKBOX_AND','LIST','LONGTEXT','DATE','VARIANT','MEINFELDTYP') NOT NULL DEFAULT 'TEXT' AFTER ´IS_SPECIAL´;

(Hier wurde der Typ "MEINFELDTYP" hinzugefügt)

Feldtyp definieren (PHP-Seitig)

Öffnen Sie die Datei /admin/sys/tabledef.php und fügen Sie ihrem Feldtyp zur Variable $ar_field_types hinzu. Diese sieht etwa wie folgt aus:

   public $ar_field_types = array(     // fieldtypes
       'TEXT' => array
       (
           'DESC' => 'Textfeld (255 Zeichen)',
           'SQL' => "ALTER TABLE ´#TABLE#´ ADD ´#FIELD#´ ´#FIELD2#´ VARCHAR(255) NULL ;",
           'FK' => NULL,
       ),
       'LONGTEXT' => array
       (
           'DESC' => 'Textfeld unbegrenzte Länge',
           'SQL' => "ALTER TABLE ´#TABLE#´ ADD ´#FIELD#´ ´#FIELD2#´ LONGTEXT NULL ;",
           'FK' => NULL,
       ),
       'INT' => array
       (
           'DESC' => 'Zahlenfeld (Ganzzahlen)',
           'SQL' => 'ALTER TABLE ´#TABLE#´ ADD ´#FIELD#´ ´#FIELD2#´ BIGINT UNSIGNED NOT NULL',
           'FK' => NULL,
       ),
       // ... weitere Definitionen von Feldtypen
   );

Am einfachsten duplizieren Sie einen vorhandenen Feldtyp (der dem hinzuzufügenden ähnlich ist) und modifizieren diesen entsprechend ihrer Bedürfnisse. Das Feld DESC ist die im Admin-Bereich dargestellte Beschreibung des Feldtyps. Unter SQL steht ein mit Platzhaltern versehener SQL-Befehl um ein Feld dieses Typs zu einer Artikel-Tabelle hinzuzufügen. Stellen Sie sicher auch den Ident des Feldtyps zu ändern, denn dieser darf niemals doppelt vorkommen. (Die Bezeichnung vor dem "=> array" wie z.B. 'LONGTEXT')

Templates anpassen

Bearbeiten Sie das Template /design/user/default/tpl/my-marktplatz-neu.fields.row.htm (falls nicht vorhanden Kopieren von /design/default/default/tpl) und fügen Sie einen If-Block für ihren neuen Feldtyp hinzu. Standardmäßig sieht ein solcher Block wie folgt aus:

 {if field_type==2}
        <!-- Text -->
        <input type="hidden" name="tmp_type[{field_field}]" value="text" />
        {if field_unit}<div class="input-group">{endif}
        {if field_unit}
            <span class="input-group-addon">{htm(field_unit)}</span>
        {endif}
        <input type="text" {if field_needed==1} required="required"{endif} onchange="validateInput(this);" onkeyup="validateInputLive(this);" class="form-control" id="{field_field}" name="{field_field}" placeholder="{htm(field_desc)}" title="{htm(field_desc)}" value="^{field_field}°" />
        {if field_unit}</div>{endif}
    {endif}

Um unnötige PHP-Änderungen zu vermeiden können Sie anstelle einer Nummer (wie in diesem Fall 2) mit dem Ident ihres Feldtyps vergleichen. Dies sieht dann z.B. wie folgt aus:

   {if field_type_MEINFELDTYP}
       <input type="hidden" name="tmp_type[{field_field}]" value="multicheckbox_and" />
       <input type="text" {if field_needed==1} required="required"{endif} onchange="validateInput(this);" onkeyup="validateInputLive(this);" class="form-control" id="{field_field}" name="{field_field}" placeholder="{htm(field_desc)}" title="{htm(field_desc)}" value="^{field_field}°" />
   {endif}
1 Tags: Artikel-Tabellen, Feldtyp ---
Letzte Änderung:
07.01.2022 13:15
Verfasser:
Bernhard Bauder
Revision:
1.4
Durchschnittliche Bewertung: 5 (10 Abstimmungen)

Kommentieren nicht möglich

Chuck Norris has counted to infinity. Twice.