Tipps und Tricks

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 (v7.1.2)
  • Datenbank Typ + Version (MySQL v10.1.2)
  • Admidio Version (v3.2.10)
  • Verwendete Plugins + Versionen (Mitgliedsbeitrag v4.2.1, Geburtstagsliste)
  • 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, …)

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

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.

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.

Seit Version 2.2 besitzen die meisten Plugins Überschriften, die über dem Plugininhalt angezeigt werden. Sollen diese nicht angezeigt werden, da du selber eine Überschrift auf der Homepage nutzt, oder es einfach nicht in das Layout der Seite passt, so kann man diese Überschriften mit einem einfachen CSS-Schnipsel entfernen. Dazu ergänzt du folgenden Code in der system.css in deinem Themeordner im Unterordner css:

.admPluginHeader {
    display:            none;
}

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.

Icons
Im Ordner Icons des von euch gewählten Themes findet ihr alle Icons die in Admidio verwendet werden. Alle Icons sind entweder 16×16 (z.B.) oder 32×32 (z.B.) Pixel groß. Solltet ihr die bestehenden Icons ändern wollen, ersetzt einfach die bestehenden Dateien durch eure eigenen. Dabei solltet ihr darauf achten, dass ihr die Größe entsprechend anpasst. Manche Symbole werden in beiden Größen verwendet. Damit eure Nutzer ein einheitliches Bild vorfinden, solltet ihr wenn beide Formate erneuern.

Sonstige verwendete Grafiken
Hier werden einige der für das “modern”-Layout verwendeten Grafiken als Photoshop-Rohdaten zur Verfügung gestellt. So lassen sich z.B. die Farben recht einfach anpassen. Noch ein Tipp: Nach den Änderungen das Bild einfach über “Datei > Für Web und Geräte speichern” ins png-Format umwandel und in den richtigen Ordner speichern.

no_profile_pic
Diese Grafik wird angezeigt, wenn ein Benutzer kein eigenes Foto in sein Profil geladen hat.http://www.admidio.org/daten/no_profile_pic.psd

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.

Mit Version 3.3 wird das Menü jetzt nicht mehr statisch in der Datei my_body_bottom.php zusammengebaut, sondern aus der Datenbank ausgelesen. Damit dies dann auch bei euch funktioniert, müsst ihr die my_body_bottom.php bei einem Update auf die Version 3.3 oder neuer anpassen.

Folgende 3 Möglichkeiten habt ihr:

  1. Habt ihr keine Anpassungen in unserem Standard-Theme gemacht, so könnt ihr einfach beim Update den Theme-Ordner adm_themes austauschen.
  2. Habt ihr Anpassungen im Theme vorgenommen, allerdings nicht in der Datei my_body_bottom.php, dann tauscht einfach nur diese Datei aus.
  3. Habt ihr die Datei my_body_bottom.php an eure Bedürfnisse angepasst, so müsst ihr nun dort hineingehen und ein wenig Code austauschen.
    Dazu entfernt ihr bitte folgenden Code:
                   <div id="plugin_menu" class="admidio-plugin-content">
                        <?php
                        // Module Menu
                        $moduleMenu = new Menu('modules', $gL10n->get('SYS_MODULES'));
                        $moduleMenu->addItem('overview', '/adm_program/index.php',
                                             $gL10n->get('SYS_OVERVIEW'), '/icons/home.png');
                        if($gPreferences['enable_announcements_module'] == 1
                        || ($gPreferences['enable_announcements_module'] == 2 && $gValidLogin))
                        {
                            $moduleMenu->addItem('announcements', FOLDER_MODULES . '/announcements/announcements.php',
                                                 $gL10n->get('ANN_ANNOUNCEMENTS'), '/icons/announcements.png');
                        }
                        if($gPreferences['enable_download_module'] == 1)
                        {
                            $moduleMenu->addItem('download', FOLDER_MODULES . '/downloads/downloads.php',
                                                 $gL10n->get('DOW_DOWNLOADS'), '/icons/download.png');
                        }
                        if($gPreferences['enable_mail_module'] == 1 && !$gValidLogin)
                        {
                            $moduleMenu->addItem('email', FOLDER_MODULES . '/messages/messages_write.php',
                                                 $gL10n->get('SYS_EMAIL'), '/icons/email.png');
                        }
                        if(($gPreferences['enable_pm_module'] == 1 || $gPreferences['enable_mail_module'] == 1) && $gValidLogin)
                        {
                            $unreadBadge = '';
                            // get number of unread messages for user
                            $message = new TableMessage($gDb);
                            $unread = $message->countUnreadMessageRecords($gCurrentUser->getValue('usr_id'));
                            if($unread > 0)
                            {
                                $unreadBadge = '<span class="badge">' . $unread . '</span>';
                            }
                            $moduleMenu->addItem('private_message', FOLDER_MODULES . '/messages/messages.php',
                                                 $gL10n->get('SYS_MESSAGES') . $unreadBadge, '/icons/messages.png');
                        }
                        if($gPreferences['enable_photo_module'] == 1
                        || ($gPreferences['enable_photo_module'] == 2 && $gValidLogin))
                        {
                            $moduleMenu->addItem('photo', FOLDER_MODULES . '/photos/photos.php',
                                                 $gL10n->get('PHO_PHOTOS'), '/icons/photo.png');
                        }
                        if($gPreferences['enable_guestbook_module'] == 1
                        || ($gPreferences['enable_guestbook_module'] == 2 && $gValidLogin))
                        {
                            $moduleMenu->addItem('guestbk', FOLDER_MODULES . '/guestbook/guestbook.php',
                                                 $gL10n->get('GBO_GUESTBOOK'), '/icons/guestbook.png');
                        }
                        $moduleMenu->addItem('lists', FOLDER_MODULES . '/lists/lists.php',
                                             $gL10n->get('LST_LISTS'), '/icons/lists.png');
                        if($gValidLogin)
                        {
                            $moduleMenu->addItem('mylist', FOLDER_MODULES . '/lists/mylist.php',
                                                 $gL10n->get('LST_MY_LIST'), '/icons/mylist.png');
                        }
                        if($gPreferences['enable_dates_module'] == 1
                        || ($gPreferences['enable_dates_module'] == 2 && $gValidLogin))
                        {
                            $moduleMenu->addItem('dates', FOLDER_MODULES . '/dates/dates.php',
                                                 $gL10n->get('DAT_DATES'), '/icons/dates.png');
                        }
                        if($gPreferences['enable_weblinks_module'] == 1
                        || ($gPreferences['enable_weblinks_module'] == 2 && $gValidLogin))
                        {
                            $moduleMenu->addItem('links', FOLDER_MODULES . '/links/links.php',
                                                 $gL10n->get('LNK_WEBLINKS'), '/icons/weblinks.png');
                        }
                        echo $moduleMenu->show();
                        // Administration Menu
                        if($gCurrentUser->approveUsers() || $gCurrentUser->editUsers()
                        || $gCurrentUser->manageRoles()  || $gCurrentUser->isAdministrator())
                        {
                            $adminMenu = new Menu('administration', $gL10n->get('SYS_ADMINISTRATION'));
                            if($gCurrentUser->approveUsers() && $gPreferences['registration_mode'] > 0)
                            {
                                $adminMenu->addItem('newreg', FOLDER_MODULES . '/registration/registration.php',
                                                    $gL10n->get('NWU_NEW_REGISTRATIONS'), '/icons/new_registrations.png');
                            }
                            if($gCurrentUser->editUsers())
                            {
                                $adminMenu->addItem('usrmgt', FOLDER_MODULES . '/members/members.php',
                                                    $gL10n->get('MEM_USER_MANAGEMENT'), '/icons/user_administration.png');
                            }
                            if($gCurrentUser->manageRoles())
                            {
                                $adminMenu->addItem('roladm', FOLDER_MODULES . '/roles/roles.php',
                                                    $gL10n->get('ROL_ROLE_ADMINISTRATION'), '/icons/roles.png');
                            }
                            if($gCurrentUser->isAdministrator())
                            {
                                $adminMenu->addItem('dbback', FOLDER_MODULES . '/backup/backup.php',
                                                    $gL10n->get('BAC_DATABASE_BACKUP'), '/icons/backup.png');
                                $adminMenu->addItem('orgprop', FOLDER_MODULES . '/preferences/preferences.php',
                                                    $gL10n->get('SYS_SETTINGS'), '/icons/options.png');
                            }
                            echo $adminMenu->show();
                        }
                        ?>
    </div><!-- closes "div#plugin_menu" -->

    Ergänzt nun nach folgender Zeile:

    require(ADMIDIO_PATH . FOLDER_PLUGINS . '/login_form/login_form.php');

    diese Zeilen Code:

    // create html page object and display Menu
    $page = new HtmlPage();
    echo $page->showMainMenu(false);

Nun sollte die Seitenleiste immer das Menü anzeigen, welches ihr in Admidio konfiguriert habt.

  • de/2.0/probleme_rund_um_admidio.txt
  • Last modified: 2018/06/24 12:39
  • by fasse