Templates

Bei den Vorlagen für die Generierung der Lead-Formulare (Rahmen und Elemente) handelt es sich um reguläre PHP-Dateien im Unterordner templates des Plugin-Verzeichnisses:

/pfad/zur/wp-installation/wp-content/plugins/immonex-lead-generator
╷
├── /templates
│   ╷
│   ├── element_card_select.php ← Element Auswahlkarten
│   ├── element_contact_data.php ← Element Kontaktdatenformular
│   ├── element_dropdown_select.php ← Element Dropdown-Auswahlbox
│   ├── element_flex.php ← Element Flexible Eingaben/Auswahl
│   ├── element_google_location_selection.php ← Element Google-Map-Standortauswahl (VERALTET)
│   ├── element_location.php ← Element Standort-Auswahl/Eingabe
│   ├── element_single_input_field.php ← Element Einzelnes Eingabefeld
│   ├── element_value_slider.php ← Element Wertebereich-Slider
│   ├── main_wrap.php ← Rahmen (Containerelement für Formulare)
│   ├── property_type_form.php ← Objekttyp-Formular (Rahmen für Elemente)
│   └── property_type_selection.php ← Objekttyp-Auswahl

Die Templates der Formularelemente (element_...) enthalten – neben dem Elementnamen und Pflichtfeldern – sowohl Angaben zur Konfiguration via Formulareditor als auch den Code für die eigentliche Ausgabe im Frontend.

Die Konfigurationsdaten sind auf folgende Arrays aufgeteilt:

Name
$info
$config

* Der obligatorische Parameter scope enthält hier einen der folgenden Werte:

  • admin → nur für das Backend relevant, keine Übersetzung nötig
  • frontend → später per Formulargenerator erfasster Wert wird im Frontend angezeigt und soll übersetzbar sein

Individuelle Anpassung

Analog zu den Frontend-Themes können auch eigene Varianten der PHP-Templates im Child-Theme-Ordner unter …

/pfad/zur/wp-installation/wp-content/themes/[CHILD-THEME-NAME]/immonex-lead-generator

… hinterlegt werden, die anstelle der gleichnamigen Original-Templates eingebunden werden.

Custom Templates

Auch zusätzliche, benutzerdefinierte Templates können über den o. g. Ordner ergänzt werden, deren Dateiname ebenfalls mit element_ beginnen muss.

?> Mit Flex-Elementen können beliebige Eingabefelder und Auswahlboxen in einer Formularseite kombiniert werden. Hierfür ist kein Custom Template erforderlich!

Beispiel

Der Code eines einfachen Element-Templates namens "Foobar", mit dem eine Dropdown-Auswahlliste mit frei definierbaren Optionen (Formulareditor) eingefügt werden kann:

<?php
$info = [
    'title'                               => 'Foobar',
    'required_by_default'                 => false,
    'required_user_input_fields'          => [],
    'optional_required_user_input_fields' => [],
];
$config = [
    'internal_field_label' => [
        'type'          => 'text',
        'scope'         => 'admin',
        'required'      => true,
        'label'         => 'Interne Feldbezeichnung',
        'instructions'  => 'Die Bezeichnung wird bei der Ausgabe der zugehörigen Angabe (Wert/Auswahl) in den Backend-Lead-Formularen sowie in Benachrichtigungsmails übernommen.',
        'default_value' => 'Foobar',
    ],
    'required' => [
        'type'     => 'true_false',
        'scope'    => 'admin',
        'required' => false,
        'label'    => 'Pflichtangabe?'
    ],
    'element_title' => [
        'type'         => 'text',
        'scope'        => 'frontend',
        'required'     => true,
        'label'        => 'Formularelement-Titel',
        'instructions' => 'Diese Bezeichnung wird in der Formularschritt-Übersicht am unteren Rand jeder Formularseite angezeigt.',
    ],
    'headline' => [
        'type'     => 'text',
        'scope'    => 'frontend',
        'required' => true,
        'label'    => 'Überschrift',
    ],
    'foo' => [
        'type'         => 'text_array',
        'scope'        => 'frontend',
        'label'        => 'Optionen',
        'instructions' => 'Auswahloptionen',
    ],
];
if ( ! empty( $template_data ) ) :
    $field_id              = 'immonex_lead_gen_field_' . $template_data['element_number'] . '_foobar';
    $is_required           = ! empty( $template_data['config_admin']['required'] );
    $additional_attributes = $template_data['plugin']->template_utils->get_attr_from_template_var(
        $template_data,
        [
            'config_admin',
            'internal_field_label',
        ],
        'data-internal-field-label'
    );
    ?>
    <div class="immonex-lead-gen-element--intro">
        <?php if ( ! empty( $template_data['config_frontend']['headline'] ) ) : ?>
        <h3 class="immonex-lead-gen-element--headline"><?php echo $template_data['config_frontend']['headline']; ?></h3>
        <?php endif; ?>
    </div>
    <?php if ( ! empty( $template_data['config_frontend']['foo'] ) > 0 ) : ?>
    <div class="immonex-lead-gen-element--dropdown-select<?php if ( $is_required ) echo ' is-required'; ?>">
        <el-select
            v-model="dropdown"
            placeholder="Bitte auswählen...<?php if ( $is_required ) echo ' *'; ?>"
            v-on:change="transferValue( '<?php echo $field_id; ?>', $event )"
            <?php if ( $is_required ) : ?>
            @input="updateSlideNav"
            <?php endif; ?>
        >
        <?php foreach ( $template_data['config_frontend']['foo'] as $i => $item ) : ?>
        <el-option label="<?php echo $item['title']; ?>" value="<?php echo $item['title']; ?>"></el-option>
        <?php endforeach; ?>
        </el-select>
        <?php if ( $is_required ) : ?>
        <div class="immonex-lead-gen-field--required-field-notice">
            <span class="immonex-lead-gen-field--required">*</span> Das ist eine Pflichtangabe!
        </div>
        <?php endif; ?>
    </div>
    <?php endif; ?>
    <input id="<?php echo $field_id; ?>" name="<?php echo $field_id; ?>" type="hidden" value="0"<?php echo $additional_attributes; ?>>
    <?php
endif;

Wird dieser Code unter …

/pfad/zur/wp-installation/wp-content/themes/[CHILD-THEME-NAME]/immonex-lead-generator/element_foobar.php

… gespeichert, können anschließend Elemente auf dieser Basis im Formulareditor erstellt werden:

Custom-Template-Auswahl im Formulareditor
Element auf Custom-Template-Basis im Formulareditor

Das Ergebnis im Frontend:

Element auf Custom-Template-Basis im Lead-Formular

Hier geht's weiter ≫