🖼️ Automatisches Erstellen des User-Ordners
🎯 Ziel
Jeder Benutzer erhält in MODX 3 einen eigenen Datei-Ordner und sieht im Manager (Dateibrowser/TVs) nur diesen Ordner:
/assets/modx/content/user/<USER-ID>/
Tags werden in Media Sources geparst
1) Benutzer-Ordnerstruktur vorbereiten
Lege den Basisordner an:
assets/modx/content/user/
2) Snippet getUserID erstellen
Elemente → Snippets → Neu
<?php
/**
* getUserID (MODX 3)
* - holt die aktuell eingeloggte User-ID im mgr-Kontext
* - legt bei Bedarf den User-Ordner unter assets/modx/content/user/<ID>/ an
* - gibt die User-ID als String zurück
*/
$contextKey = 'mgr';
// aktuell eingeloggten User im Manager holen
$user = $modx->getUser($contextKey);
if (!$user || !$user->isAuthenticated($contextKey)) {
return '';
}
$userId = (int) $user->get('id');
if ($userId <= 0) {
return '';
}
// Basis-Pfad aus System-Setting assets_path holen
$assetsPath = $modx->getOption('assets_path', null, MODX_ASSETS_PATH);
// Zielordner: assets/modx/content/user/<UserID>/
$usersFolder = $assetsPath . 'modx/content/user/' . $userId . '/';
// Ordner anlegen, falls nicht vorhanden
if (!is_dir($usersFolder)) {
mkdir($usersFolder, 0755, true);
}
return (string) $userId;
(MODX-API: $modx->getUser() / $user->get('id'))
3) Menü Medien → Medienquellen
Passe deine Medienquelle an:
- basePath:
assets/modx/content/user/[[!getUserID]]/ - baseUrl:
assets/modx/content/user/[[!getUserID]]/ - basePathRelative:
Ja - baseUrlRelative:
Ja
Hinweis: Endet jeweils mit
/.