Profilbilder und Usernamen neuer User auf der Startseite?

Hallo zusammen,

wie schaffe ich es, dass die Profilbilder und dessen Usernamen auf der Startseite bzw. der Loginseite angezeigt werden, man aber angemeldet sien muss, damit man das Profil sieht?
Vielen Dank im Voraus

 

  • Sofern Du das custom_index-Plugin verwendest, sollte auf der Indexseite ja bereits ein Widget mit den neuesten Mitgliedern der Seite angezeigt werden. Ist dies bei Dir der Fall? Dann kann ich mir diesen Teil der Erklärung sparen. :-)

    Ich nehme an, dass Du nicht grundsätzlich eine Walled Garden-Seite betreiben willst, bei der bis auf wenige Ausnahmen die Seiten für nicht-angemeldete Besucher sowieso nicht zugänglich sind, sondern dass Du nur den Zugriff auf die Profilseiten sperren willst. Korrekt? Andernfalls wäre es wohl einfacher, bei aktivierter Walled Garden-Option (oder Verwendung des Login Required-Plugins) für die Seiten, die nicht gesperrt sein sollen, Ausnahmen zu machen.

    Sperren nur der Profilseiten aber weiterhin Anzeigen der Profilbilder (wo immer sie auf der Seite außerhalb der Profilseiten angezeigt werden) kann man unter Verwendung des 'route' Plugin-Hooks erreichen. Dafür mußt Du entweder ein kleines Plugin schreiben oder den folgenden Code in ein schon vorhandenes Plugin hinzufügen (beispielsweise ein Plugin, dass alle solche kleinen Modifikationen zusammenfaßt). Ich würde Dir abraten, den Code in ein Core-Plugin aufzunehmen, da Du ansonsten permanent aufpassen mußt, keine Änderungen zu verlieren, wenn Du Deine Seite mal aktualisierst.

    In der init-Funktion des Plugins Deiner Wahl wird die neue Callback-Funktion für den 'route'  Plugin-Hook registriert:

    elgg_register_plugin_hook_handler('route', 'profile', 'profile_deny_logged_out');

    und dann noch diese Callback-Funktion definiert:

    function profile_deny_logged_out($hook, $type, $return, $params) {

        // Logged in users can access profile pages
        if (elgg_is_logged_in()) {
            return $return;
        }

        if ($return['handler'] == 'profile') {
            forward(REFERER);
            return false;
        } else {
            return $return;
        }
    }

    Damit wird dann für nicht-angemeldete Besucher der Zugriff auf die Profilseiten unterbunden (es passiert scheinbar gar nichts).

    Schon mal vorsorglich für Elgg 1.9: anstatt $return['handler'] muss hier in der Callback-Funktion $return['identifier'] verwendet werden. Ansonsten bleibt der Code gleich.

  • UFFF...

    Ich glaube du hast mich gerade ein wenig überfordert haha

     

    Also: Ich habe meine Community im allgemeinen auf registrierte Mitglieder beschränkt.Cunstom-Index 1.8 ist aktiv, durch ein anderes Plugin (Liang Lee Zhuye) habe ich einen Teil der Startseite geändert und somit auch die Möglichkeit HTML Code zu verwenden.

  • Dann ist es wohl gerade andersherum als ich dachte: wenn Deine Seite auf registrierte User beschränkt ist, können nicht angemeldete Besucher nicht auf die Profilseiten zugreifen. Aber die neuesten User werden aufgrund der Verwendung des Liang Lee Zhuye-Plugins nicht auf der Startseite angezeigt.

    Ich bin nicht gerade ein Freund der Plugins dieses Entwicklers (ziemlich chaotischer Code, Verknüpfung mit dem "Framework" dessen Sinn sich mir noch nie erschlossen hat...). Mit HTML-Code alleine wirst Du aber leider die neuesten Mitglieder nicht angezeigt bekommen. Die Information über die Mitglieder muss ja irgendwie aus der Datenbank abgerufen werden und das geht nur mit php (und Funktionen der Elgg-API).

    Im custom_index-Plugin wäre der Code schon drin (die neusten Mitglieder werden wahrscheinlich auf Deiner Seite auch auf der Indexseite angezeigt, sofern man angemeldet ist). Der Code, um die Mitglieder aus der Datenbank abzurufen und darzustellen, ist nicht so kompliziert:

    //get the newest members who have an avatar
    $newest_members = elgg_list_entities_from_metadata(array(
        'metadata_names' => 'icontime',
        'type' => 'user',
        'limit' => 10,
        'full_view' => false,
        'pagination' => false,
        'list_type' => 'gallery',
        'gallery_class' => 'elgg-gallery-users',
        'size' => 'small',
    ));
    echo elgg_view_module('featured',  elgg_echo("custom:members"), $newest_members, array('class' => 'elgg-module-highlight'));

    Die Frage ist nur: wohin mit dem Code? Du müßtest den Code im Liang Lee Zhuye-Plugin einbauen. Es ist mir aber nicht ganz klar, in welcher Datei und wo genau innerhalb der Datei. Ohne Walled Garden wäre es wahrscheinlich in LiangLeeZhuye/views/default/page/layouts/custom_index.php. Vielleicht aber auch mit Walled Garden in dieser Datei. Oder der Code muss mit Walled Garden in eine der Dateien in LiangLeeZhuye/WalledGarden/views/default/page/ (inklusive dem Unterverzeichnis darin).

    Du kannst mal probieren, den obigen Code in diesen Dateien entweder direkt nach der Zeile

    LiangLee_view('LiangleeFramework', 'forms/login');

    oder der Zeile

    LiangLee_view('LiangleeFramework', 'forms/reg');

    einzubauen. Dann sollte ein Widget mit den neuesten Mitgliedern unterhalb des Login-Widgets bzw. der Registrierungsmaske angezeigt werden. Ich hab das allerdings jetzt nicht selbst ausprobiert, daher kann ich nicht garantieren, dass es funktioniert bzw. dass es gut aussieht.

German Support Group

German Support Group

The German support group within the Elgg community.