©Sergey Emelyanov 2025 | Alle Rechte vorbehalten
In diesem Artikel zeige ich, wie Sie Felder in Vtiger serverseitig ausblenden – ohne JavaScript und ohne Ladeverzögerungen. Die Lösung ist ideal für Szenarien, bei denen Felder basierend auf anderen Feldwerten (z. B. Deal-Status) angezeigt/versteckt werden sollen.
Erstellen Sie vtiger_detailview_list.php im Vtiger-Stammverzeichnis:
<?php
$detailview_list = [
'Potentials' => [
'checkField' => 'cf_1269', // Feld, das den Status prüft
'checkValue' => 'Submission Received', // Wert, bei dem Felder sichtbar sind
'allowedFields' => [ // Erlaubte Felder im Detailview
'potentialname', 'potential_no', 'cf_1269',
'cf_3709', 'cf_3713', 'cf_3867',
'forecast_amount', 'cf_1926'
]
]
];
Fügen Sie diese Zeile in config.inc.php ein:
require_once 'vtiger_detailview_list.php';
Öffnen Sie modules/Vtiger/models/DetailRecordStructure.php und fügen Sie diese Methode hinzu:
protected function isFieldAllowed(string $fieldName, ?Vtiger_Record_Model $record): bool {
global $detailview_list;
if (!$record || !isset($detailview_list[$record->getModuleName()]['checkField'])) {
return true;
}
$config = $detailview_list[$record->getModuleName()];
$fieldValue = $record->get($config['checkField']);
// Nur erlaubte Felder anzeigen, wenn der Status übereinstimmt
return ($fieldValue === $config['checkValue'])
? in_array($fieldName, $config['allowedFields'], true)
: true;
}
Ändern Sie die Zeile (~Zeile 39) in getStructure()
von:
if ($fieldModel->isViewableInDetailView())
zu:
if ($fieldModel->isViewableInDetailView() && $this->isFieldAllowed($fieldName, $recordModel))
checkField
) überprüft wird.checkValue
) die Filterung auslöst.allowedFields
) in diesem Fall sichtbar sind.cf_1269
(Beispiel: "Submission Received").potentialname
, forecast_amount
usw.config.inc.php?module=Utilities&action=rebuild
). 'checkValue' => ['Submission Received', 'In Review'],
'Leads' => [
'checkField' => 'status',
'checkValue' => 'Converted',
'allowedFields' => [...]
]
Kriterium | PHP-Methode | JavaScript-Lösung |
---|---|---|
Ladezeit | Felder werden nie übertragen | Felder laden + nachträglich hide |
SEO | Keine versteckten Inhalte | Inhalte im DOM vorhanden |
Komplexität | Mittel (PHP-Kenntnisse nötig) | Einfach (UI-Experten freuen sich) |
Mit dieser Methode behalten Sie die Kontrolle über die Datendarstellung – effizient und serverfreundlich. Bei Fragen posten Sie gerne einen Kommentar! 🚀
„Weniger ist manchmal mehr – besonders wenn es um übersichtliche Datensätze in CRM-Systemen geht.“
©Sergey Emelyanov 2025 | Alle Rechte vorbehalten