Tipps und Tricks
Hilfreiche Informationen bei Problemen
Wenn Admidio einmal nicht wie gewünscht funktioniert und deshalb im Forum etc um Hilfe gesucht wird, bitte immer ein paar zusätzliche Informationen mit angeben damit wir Admidio-Entwickler den Fehler einfacher und schneller finden können.
Zu diesen Informationen gehören (Beispiele):
- PHP Version (v8.2.5)
- Datenbank Typ + Version (MySQL v10.1.2)
- Admidio Version (v4.2.12)
- Verwendete Plugins + Versionen (statistics v3.1.3, written communication)
- Eigene Anpassungen die durchgeführt wurden (anderes Design, eigene Code Änderungen)
- Exception Messages → Siehe Debugmodus setzen (auf sensible Informationen achten!)
- Logdatei Auszüge → Siehe Debugmodus setzen (auf sensible Informationen achten!)
- Genaue Anleitung der Schritte wie es zum Fehler gekommen ist → Nicht reproduzierbare Fehler sind sehr schwer zu finden
- Screenshots wenn sinnvoll
- Wenn Fehler nach Update → Überprüfen ob auch wirklich alles aktualisiert wurde (Plugins, Libs, Theme, …)
Debugmodus setzen
Auch Admidio ist nicht frei von Problemen oder Fehlern. Sollte es bei euch mal zu einem Problem kommen, so könnt ihr zur besseren Analyse den Debugmodus einschalten. In diesem Modus wird jeder Befehl aufgezeichnet, der an die Datenbank gesendet wird. Außerdem werden noch viele weitere Informationen bei jedem Seitenaufruf protokolliert. All dies wird dann in einer Logdatei gespeichert.
Bitte nutzt diesen Modus wirklich nur, wenn wir euch im Forum dazu auffordern oder wenn ihr selber mit den Informationen aus der Logdatei umgehen könnt. Der Debugmodus sollte im Produktivsystem nur zeitlich begrenzt eingesetzt werden.
Ihr könnt den Debugmodus in der config.php einschalten indem ihr dort folgende Zeile ergänzt, falls diese noch nicht vorhanden ist:
$gDebug = 1;
Nun werden Exceptions und andere schwerwiegende Fehler direkt in der Webseite ausgegeben, sowie erweiterte Informationen in die Logdateien geschrieben. Für jeden Tag wird eine eigene Datei angelegt. Diese könnt ihr mit jedem beliebigen Texteditor öffnen und analysieren.
adm_my_files/logs/admidio-2017-08-23.log
PHP-Code in Template-Dateien einbauen
Admidio nutzt seit Version 4.0 die Template-Engine Smarty. Im Theme-Ordner adm_themes/simple/templates
befinden sich die Template-Dateien, welche von euch angepasst werden können um das Layout von Admidio euren Wünschen anzupassen.
PHP-Code kann man aus Sicherheitsgründen dort nicht einbinden. Wollt ihr dennoch eigenen PHP-Code in einer Template-Datei nutzen, so könnt ihr dies über ein Plugin machen. Erstellt im Ordner adm_plugins
einen neuen Ordner mit einem beliebigen Namen z.B. skripte. In diesem Ordner erstellt ihr nun für jeden PHP-Schnipsel den ihr irgendwo einbinden wollt eine eigene Datei z.B. date.php. In dieser Datei könnt ihr nun HTML und PHP hinterlegen:
<b>Das heutige Datum ist <?php echo date('d.m.Y', time()); ?></b>
Im nächsten Schritt könnt ihr mit dem folgenden Code die Ausgabe dieser Datei in jeder Template-Datei an einer beliebigen Stelle hinterlegen:
{load_admidio_plugin plugin="skripte" file="date.php"}
Dieser Code kann einfach direkt im HTML der Template-Datei abgelegt werden. Dabei wird bei plugin=“xyz”
der Name eures Unterordners von adm_plugins angegeben und mit file=“xyz”
der Dateiname.
Probleme beim Fotoupload
Bei manchen Servern gibt es Probleme beim Fotoupload. Dies kann verschiedene Ursachen haben, die hier nochmal aufgelistet sind:
- Der Ordner adm_photos hat nicht die Rechte 777.
- Der Ordner adm_photos/upload hat nicht die Rechte 777.
- Die ausgewählten Dateien übersteigen die vom Server bearbeitbare Bildgröße soweit, dass die Maße nicht mehr erfasst werden können und eine entsprechende Fehlermeldung ausgegeben wird. (Die maximal bearbeitbare Bildgröße findet ihr in den Organisationseinstellungen unter Systeminformationen)
- Manche Server unterbinden den Dateiupload über Flash. Diese Unterbindung lässt sich teilweise umgehen. Legt dazu ein .htaccess Datei mit folgendem Inhalt im Admidioverzeichnis ab:
<IfModule mod_security.c> SecFilterEngine Off SecFilterScanPOST Off </IfModule>
- (Gilt nur für Profilfoto) Manche Datenbanken lassen die Speicherung von Bildern in der Datenbank selbst nicht zu. In diesem Fall könnte ihr Admidio in den Organisationseinstellungen > Module > Profil > Speicherort der Profilbilder so umstellen, dass Profilbilder in einem Ordner unter adm_my_files gespeichert werden.
Fehler nach Editieren von Dateien
Werden Dateien bearbeitet und gespeichert, so kann es danach bei der Anzeige der Seite zu folgendem Fehler kommen:
 Warning: Cannot modify header information - headers already sent by (output started at serverpfad/config.php:1) in /serverpfad/index.php on line 6
Tritt diese Meldung auf (einzelne Angaben in der Meldung können abweichen), so wurde die Datei nicht richtig als UTF8 Datei gespeichert. Admidio erwartet alle Dateien in der UTF-8 Kodierung ohne BOM. Die Standardeinstellung bei den meisten Editoren ist UTF-8 mit BOM. Da allerdings PHP mit dem BOM nicht zurechtkommt und die oben genannte Fehlermeldung auswirft, muss man dies im Editor so einstellen, dass UTF-8 ohne BOM gespeichert wird.
Sollte dein Editor diese Möglichkeit nicht bieten, so hast du folgende Möglichkeiten:
Windows
Hier empfiehlt sich der Editor Notepad++. Dieser Editor ist kostenlos und ein guter Ersatz für das von Windows mitgelieferte Notepad, allerdings musst du hier beim Speichern auch explizit UTF-8 ohne BOM auswählen. Dies ist nicht die Standardeinstellung des Editors.
OS X und Linux
Hier ist es ganz einfach, wenn du dich mit der Konsole und dem Editor Vim auskennst. Öffne die Datei mit Vim und gebe :set nobomb
ein. Jetzt die Datei noch Speichern und alles wird gut.
Massenzuordnung von Rollen über den Import
Will man schnell vielen Benutzern eine bestimmte Rolle zuordnen, so kann man dies auch über den Import tätigen. Dazu erstellt man eine Excelliste mit Vorname und Nachname der Personen, die die Rolle zugeordnet bekommen sollen. Ggf. kann man diese Liste über den Export einer anderen Rolle erstellen lassen und verändert diese Liste nur noch.
Diese Liste gibt man nun beim Import an und wählt den bei Existierende Benutzer den Typ Ergänzen. Im nächsten Schritt ordnet man seine Pflichtfelder zu und danach werden die Benutzer importiert und die Rollenzuordnung angelegt. Da die Benutzer bereits alle existieren und auch keine Änderungen an den Feldinhalten vorgenommen wurden, werden so nur die Rollenzuordnung schnell und einfach angelegt.
Admidio-Ordner verschieben
Möchtest du ein laufendes Admidio auf dem FTP-Server in einen anderen Ordner verschieben, so ist dies in wenigen Schritten möglich.
- Mit Hilfe eines FTP-Programms verschiebst du alle adm_ Ordner und die index.php in den neuen Ordner.
- Nun musst du die Datei config.php im Ordner adm_my_files öffnen und die Variable $g_root_path auf den neuen Ordner anpassen.
- Rufe nun Admidio über den neuen Ordner auf und melde dich als Webmaster auf.
- Gehe nun in die Einstellungen und kontrolliere unter Allgemein die beiden URLs für die Startseite. Sind diese auch von dem Ordnerumzug betroffen, musst du sie entsprechend anpassen.
Jetzt läuft Admidio in dem neuen Ordner.
Zurück-Link ins Theme einbauen
Hin und wieder ist es praktisch einen Link zu haben, der einen Zurück zur vorherigen Seite bringt. Wenn ihr diesen Link benötigt, könnt ihr diesen an beliebiger Stelle in der Templatedatei hinterlegen. Öffnet dazu die Datei adm_themes/simple/templates/index.tpl
und fügt dort an der gewünschten Stelle diesen Codeschnipsel ein:
{if $hasPreviousUrl} <!-- Add link to previous page --> <a id="admidio-back-link" class="" href="{$urlAdmidio}/adm_program/system/back.php"><i class="fas fa-arrow-circle-left fa-fw"></i> {$l10n->get('SYS_BACK')}</a> {/if}
Es wird in diesem Fall nur ein Link angezeigt, sofern auch eine sinnvolle URL von einer vorherigen Seite vorhanden ist. Die optische Gestaltung könnt ihr über CSS noch weiter anpassen oder auch in dem Code-Schnipsel das HTML entsprechend abändern.