logo

Extra Block Types (EBT) - Neue Erfahrung im Layout Builder❗

Extra Block Types (EBT) - gestylte, anpassbare Blocktypen: Diashows, Registerkarten, Karten, Akkordeons und viele andere. Eingebaute Einstellungen für Hintergrund, DOM Box, Javascript Plugins. Erleben Sie die Zukunft der Layouterstellung schon heute.

Demo EBT-Module EBT-Module herunterladen

❗Extra Absatztypen (EPT) - Erfahrung mit neuen Absätzen

Extra Paragraph Types (EPT) - analoger, auf Absätzen basierender Satz von Modulen.

Demo EPT-Module EPT-Module herunterladen

Scroll

Drupal Modul WebForm. Erstellung eines Bestellformulars

26/05/2025, by Ivan

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]

Drupal webform

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.