====== 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 [[de:2.0:probleme_rund_um_admidio#debugmodus_setzen|Debugmodus setzen]] (auf sensible Informationen achten!)
* Logdatei Auszüge -> Siehe [[de:2.0:probleme_rund_um_admidio#debugmodus_setzen|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 [[https://www.smarty.net|Smarty]]. Im Theme-Ordner ''adm_themes/simple/templates'' befinden sich die Template-Dateien, welche von euch angepasst werden können um das [[de:2.0:admidio_customization|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: Das heutige Datum ist
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:
SecFilterEngine Off
SecFilterScanPOST Off
*(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 [[http://de.wikipedia.org/wiki/Utf8|UTF-8]] Kodierung ohne [[http://de.wikipedia.org/wiki/Byte_Order_Mark|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 [[http://notepad-plus.sourceforge.net/de/site.htm|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 [[http://www.vim.org|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}
{$l10n->get('SYS_BACK')}
{/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.