Drupal Modul WebForm. Erstellung eines Bestellformulars
Kehren wir zu unserem Produktkatalog zurück, den wir in einer der vorherigen Lektionen erstellt haben. Der Katalog wird erfolgreich gefüllt und mehr oder weniger korrekt angezeigt, aber die Bestellung eines Produkts über das Kontaktformular ist ziemlich umständlich: Man muss den Namen und den Produktcode kopieren, dann in das Formular einfügen und eine Nachricht schreiben. Lassen Sie uns ein Formular erstellen, das den Bestellprozess vereinfacht. Dafür benötigen wir das Modul Webform, das zur Erstellung von Formularen in Drupal dient. Über das Formular werden wir den Produktnamen und die Menge übermitteln. Falls Sie auch den Produktcode benötigen, können Sie diesen auf ähnliche Weise übergeben.
Laden Sie das Modul Webform herunter und installieren Sie es.
Nach der Installation sollte der Inhaltstyp Webform erscheinen. Erstellen Sie einen Inhalt vom Typ Webform und nennen Sie ihn z.B. Bestellformular (oder wie es Ihnen passt). Nach der Erstellung werden Sie zur Konfigurationsseite des Webform-Inhalts weitergeleitet.
Wir müssen zwei Felder für Produktname und Menge erstellen, dafür fügen wir zwei Textfelder (textfield) hinzu.
Im Feld für den Produktnamen schreiben Sie: %get[product]
Im Feld für die Menge setzen wir den Standardwert auf "1".
Fügen Sie außerdem ein Textfeld für die E-Mail und ein Textbereich (textarea) für Wünsche und Anmerkungen der Kunden hinzu.
%get[product]
ist vergleichbar mit der PHP-Variable $_GET['product']
, die den Wert aus der URL erhält.
Das Formular ist fertig. Jetzt müssen wir einen Link zu diesem Formular erstellen und diesem Link den Parameter product
anhängen, der den Produktnamen enthält. Wir gestalten diesen Link als eigenen Block, der am unteren Rand der Produkt-Nodes angezeigt wird.
Für die nächsten Schritte müssen Sie das eingebaute Modul PHP filter aktivieren, das das Einfügen von PHP-Code direkt in Blöcke oder Inhalte ermöglicht. Nach der Aktivierung steht das Eingabeformat "PHP code" zur Verfügung.
Erstellen Sie einen neuen Block und wählen Sie das Eingabeformat "PHP code". Fügen Sie folgenden Code in den Blocktext ein:
<a href="<?php print base_path(); ?>node/6?product=<?php print drupal_get_title(); ?>">Produkt bestellen</a>
Hier ist node/6
die Adresse der Webform-Bestellformular-Node.
Die Funktion drupal_get_title()
gibt den Titel der Node zurück, in unserem Fall ist der Titel der Produktname. Die Funktion base_path()
gibt den Pfad zur Website-Root zurück (z.B. drupalbook.org/).
Jetzt müssen Sie den Block in die Region "Inhalt" (Content) platzieren und die Sichtbarkeit des Blocks im PHP-Modus (PHP mode) mit folgendem Code einschränken:
$types['tovar'] = 1; $match = false; if ((arg(0) == 'node') && is_numeric(arg(1))) { $node = node_load(arg(1)); $match = isset($types[$node->type]); } return $match;
Hierbei ist tovar
der maschinenlesbare Name des Inhaltstyps "Produkt".
Unser Bestellformular ist nun fertig.