CCK Auswahllisten und Checkboxen überprüfen

Bild des Benutzers tobiasb

In CCK kann man ja Auswahllisten oder Checkboxen usw erstellen, zb seine Stadt, AGB!
Nix besonderes!Aber lesen Sie weiter...

Als Inhaltstyp muss mal Story (Artikel) herhalten.

Man legt also eines neues Feld an, als Name "stadt" dann als Feldtyp--> Text--> Select list!
Abspeichern und den Namen anpassen, der dann den Benutzer angezeigt wird zb.Wohnort.

Hinweis: Der Code wurde nur in Drupal 5 getestet.

Jetzt definiert man also seine gültigen Werte zb.

  1. bl|Berlin
  2. mue|München
  3. do|Dortmund

Jetzt setzt man noch ein Häkchen auf erforderlich oder so!
Nur dann beim testen, bemerkt man, oh. Es wird immer der erste wert(Berlin) als Standard genommen, gut man könnte jetzt zb. "wahl|-Stadt bitte auswählen-" hinzufügen, dann wird dies als Standard genommen!
Das Problem nur wenn nix anders ausgewählt wird. Wohnt dieser Benutzer jetzt in "wahl"!

Also muss ein wenig gecodet werden, damit wenn nix ausgewählt wurde als der Standard! Eine Warnmeldung erscheint!

1. Schritt
neue Datei anlegen mit zb den Namen stadt.info, die Datei muss mind das beinhalten:

  1. name = Stadt

2.Schritt
Dann erstellen sie eine neue Datei, die z.b. stadt.module nennen.In diese Datei müssen Sie die Funktion zur Überprüfung der Auswahlliste oder Checkboxen, reinschreiben. Also,wenn wir alles so nennen wie in dieser Anleitung! Muss es so aus sehen!

  1. function stadt_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
  2.   if ($node->type == 'story') {
  3.     switch ($op) {
  4.       case 'validate':
  5.        if ($node->field_stadt[0]['value'] == 'wahl') {
  6.           form_set_error('field_stadt', 'Bitte wählen Sie eine von den vorgegebene Städte aus.');
  7.         }
  8.       break;
  9.     }
  10.   }
  11. }

3.Schritt
Diese beiden Dateien packen Sie in ein Ordner namens zb Stadt. Und installieren es in dein Drupalverzeichnis.

Hier nochmal was wohin muss!

  1. function modulname_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
  2.   if ($node->type == 'der_name_vom_inhaltstyp') {
  3.     switch ($op) {
  4.       case 'validate':
  5.      if ($node->field_feldname[0]['value'] == 'Der Wert , der vor der | Pipe steht') {
  6.           form_set_error('field_feldname', 'Hier die Warnmeldung.');
  7.         }
  8.       break;
  9.     }
  10.   }
  11. }

Nehmen wir an , wir wollen noch eine AGB überprüfen! Diesmal ist es keine Select list sondern Single on/off checkbox!
Und die gültigen Werte sind :

  1. off|Abgelehnt
  2. on|Akzeptiert

Setzen kein Standard Wert, sodass beim Inhalt erstellen, in diesen Beispiel Page(Seite) ein leeres Kästchen zusehen ist, mit dem Namen "Akzeptiert"!

Wir müssen das bestehende Modul "Stadt" anpassen bzw etwas hinzufügen!

  1. function stadt_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
  2.   if ($node->type == 'story'||'page') {
  3.     switch ($op) {
  4.       case 'validate':
  5.        if ($node->field_stadt[0]['value'] == 'wahl') {
  6.           form_set_error('field_stadt', 'Bitte wählen Sie eine von den vorgegebene Städte aus.');
  7.         }
  8.        if ($node->field_agb[0]['value'] == 'off') {
  9.           form_set_error('field_agb', 'AGB bitte akzeptieren.');
  10.         }
  11.       break;
  12.     }
  13.   }
  14. }

Das 'story'||'page' bedeutet , entweder story und/oder page! Und haben der Überprüfung noch eine weitere if (Wenn) Anweisung gegeben!

Falls man also bei mehreren Inhaltstypen, die AGB bestätigt werden soll! Inhaltstyp bearbeiten und Feld hinzufügen und oben aus den bestehenden Felder wählen! Modul bearbeiten und bei ($node->type == 'story'||'page') den Inhaltstyp hinzufügen! zb. ($node->type == 'story'||'page'||'name_des_Inhaltstyp')

Bei Fragen zu diesem Beitrag, Kommentare hinterlassen.

Re: CCK Auswahllisten und Checkboxen überprüfen

Hi,

Ich hab das mit der AGB-Checkbox gerade ausprobiert, bekomme jedoch die Meldung, dass das Modul nicht mit Drupal 6 kompatibel ist. Hab sowas noch nie gemacht, wie passe ich das denn an die aktuelle Version an?

LG, Nico

Bild des Benutzers tobiasb

Re: CCK Auswahllisten und Checkboxen überprüfen

Pauschal ohne zutesten. musst du in der info Datei des Moduls core = 6.x hinzufügen.