©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