Entwickler, der außergewöhnliche CRM- und Laravel-Lösungen liefert

Als erfahrener Entwickler spezialisiere ich mich auf Laravel- und Vue.js-Entwicklung, die Implementierung von Vtiger CRM sowie auf vielfältige WordPress-Projekte. Meine Arbeit zeichnet sich durch kreative, dynamische und benutzerzentrierte Weblösungen aus, die individuell an die Bedürfnisse meiner Kunden angepasst werden.

Vtiger CRM bietet die hervorragende Möglichkeit, in jedem Modul schnell und unkompliziert benutzerdefinierte Felder zu erstellen. Allerdings gibt es einen Haken: Im Feldeditor können Sie zwar die Feldbezeichnung, beispielsweise auch die Länge, festlegen, doch der Systemname des neu erstellten Feldes wird automatisch generiert.

Redakteur für Felder in Vtiger CRM – Eigene Feldnamen aktivieren

Vtiger CRM bietet die hervorragende Möglichkeit, in jedem Modul schnell und unkompliziert benutzerdefinierte Felder zu erstellen. Allerdings gibt es einen Haken: Im Feldeditor können Sie zwar die Feldbezeichnung, beispielsweise auch die Länge, festlegen, doch der Systemname des neu erstellten Feldes wird automatisch generiert. So entstehen Namen wie „cf_997“, wobei „cf“ für „Custom Field“ steht und „997“ die fortlaufende Nummer des Feldes darstellt. Für Entwickler oder bei API-Integrationen ist dies wenig aussagekräftig und erschwert die spätere Pflege des Systems, da man in der Datenbank nach solchen Nummern suchen muss.

Wäre es nicht viel hilfreicher, wenn Sie Ihrem neuen Feld einen sprechenden Namen wie beispielsweise „cf_friend_name“ vergeben könnten? Eine solche Anpassung erleichtert die Wartung und Integration erheblich. Im Folgenden zeige ich Ihnen, wie Sie den Feldeditor von Vtiger CRM so modifizieren, dass Sie eigene Feldnamen festlegen können. Dazu müssen Sie vier Dateien anpassen. Bitte beachten Sie: Führt man solche Änderungen durch, sollten Sie unbedingt vorab vollständige Backups von Datenbank und Dateien erstellen – Änderungen erfolgen auf eigenes Risiko!

Schritt 1: Anpassen der Template-Datei für die Felderstellung

Bearbeiten Sie die Datei
layouts/v7/modules/Settings/LayoutEditor/FieldCreate.tpl
und suchen Sie etwa in Zeile 77 den Abschnitt, der mit
{if !$IS_FIELD_EDIT_MODE}
beginnt. Direkt unter dieser Zeile fügen Sie folgenden HTML-Code ein, damit ein Eingabefeld für den eigenen Feldnamen angezeigt wird:

<div class="form-group">
    <label class="control-label fieldLabel col-sm-5">
      {vtranslate('Field Name', $QUALIFIED_MODULE)}
      &nbsp;<span class="redColor">*</span>
    </label>
    <div class="controls col-sm-7">
      <input type="text" class='inputElement col-sm-9' maxlength="50" {if $IS_FIELD_EDIT_MODE}disabled="disabled"{/if} name="fieldName" value="{vtranslate($FIELD_MODEL->get('label'), $SELECTED_MODULE_NAME)}" data-rule-alphanumeric='true' style='width: 75%' />
    </div>
  </div>

Dieser Codeblock ermöglicht es Ihnen, einen Feldnamen einzugeben, der später als Teil des Systemnamens verwendet wird.

Schritt 2: Anpassen des Moduls zur Erstellung der Feldbeziehung

Öffnen Sie die Datei
 modules/Settings/LayoutEditor/models/Module.php
und navigieren Sie etwa zu Zeile 146. Suchen Sie die folgenden Zeilen:

  $max_fieldid = $db->getUniqueID("vtiger_field");
  $columnName = 'cf_'.$max_fieldid;
  $custfld_fieldid = $max_fieldid;

Ersetzen Sie diese Zeilen durch:

  if(!empty($params['fieldName'])){
    $columnName = 'cf_'.$params['fieldName'];
  } else {
    $max_fieldid = $db->getUniqueID("vtiger_field");
    $columnName = 'cf_'.$max_fieldid;
    $custfld_fieldid = $max_fieldid;
  }

Durch diese Änderung wird, sofern im Feldeditor ein eigener Name eingegeben wurde, der Systemname des Feldes als „cf_[IhrName]“ generiert. Bleibt das Eingabefeld leer, erfolgt weiterhin die automatische Nummerierung.

Schritt 3: Hinzufügen der Validierung für den neuen Feldnamen

Damit der Benutzer nur zulässige Zeichen (kleine Buchstaben, Zahlen und den Unterstrich) eingeben kann – da diese Zeichen auch als Spaltennamen in der Datenbank verwendet werden – müssen Sie zwei Dateien anpassen.

a) Öffnen Sie die Datei
 layouts/v7/modules/Settings/LayoutEditor/resources/LayoutEditor.js
etwa in Zeile 854. Suchen Sie dort die Zeile:

  form.find('[name="fieldLabel"]').attr('data-rule-illegal', "true");

Fügen Sie direkt darunter die folgende Zeile ein:

  form.find('[name="fieldName"]').attr('data-rule-alphanumeric', "true");

b) Öffnen Sie anschließend die Datei
 layouts/v7/modules/Vtiger/resources/validation.js
(ungefähr in Zeile 22) und ergänzen Sie dort folgenden Code, um die Validierungsmethode „alphanumeric“ hinzuzufügen:

  jQuery.validator.addMethod("alphanumeric", function(value, element, params) {
    if(value){
      var regex = /^[a-z0-9_]+$/g;
      if(!value.match(regex)){
        return false;
      }
    }
    return true;
  }, jQuery.validator.format("Small Letters, numbers, and underscores only please"));

Diese Ergänzungen sorgen dafür, dass der eingegebene Feldname nur aus erlaubten Zeichen besteht.

Schritt 4: Abschluss und Systemverhalten

Nach der Umsetzung der Änderungen wird, wenn Sie im Feld „Field Name“ beispielsweise den Text „friendname“ eingeben, im System ein neues Feld mit dem Namen „cf_friendname“ erstellt. Dies erleichtert die Arbeit erheblich, da der Feldname jetzt aussagekräftig ist. Wird das Eingabefeld leer gelassen, verhält sich das System wie bisher, und es wird automatisch ein Name mit Zahlen generiert (z. B. cf_997).

Fazit

Mit den oben beschriebenen Anpassungen im Vtiger CRM-Feldeditor können Sie die Möglichkeit aktivieren, eigene Feldnamen festzulegen. Dies verbessert die Lesbarkeit der Feldnamen und erleichtert die Integration per API sowie die Wartung des Systems. Denken Sie daran, vor jeglichen Änderungen immer Backups Ihrer Datenbank und Dateien zu erstellen, um mögliche Fehler schnell beheben zu können. So haben Sie zukünftig eine bessere Kontrolle über Ihre benutzerdefinierten Felder in Vtiger CRM.