Joomla: Unterschied zwischen den Versionen

Aus Mediawiki Ferdinand Gruber
Zur Navigation springen Zur Suche springen
K
K
Zeile 205: Zeile 205:
 
     return $return;
 
     return $return;
 
} </pre>
 
} </pre>
 
=== Overrides verwalten ===
 
Die Änderungen, die man im Code durchführt, sollten möglichst gut kommentiert werden.
 
 
Hat man von einer Komponente ein Override im Template angelegt, so wird das nicht überschrieben bei einem Update der Core Komponenten, was ja der Sinn von Overrides ist.
 
Das hat aber auch zur Folge, dass Verbesserungen im Core nicht wirksam werden im Override.
 
 
Falls man einmal Overrides nach Core-Updates ändern muss, ist es hilfreich, wenn man das Override sauber mit Kommentaren versehen hat.
 

Version vom 11. Dezember 2024, 18:33 Uhr

Installation und Upgrade

Upgrade Joomla Version 3 auf Version 4

Joomla Templates

Joomla Tipps

Joomla Benutzerverwaltung

Benutzer

Gruppen und Zugriffsebenen

https://blog.formativ.net/joomla-benutzergruppen-und-zugriffsebenen/

Benutzeranmeldung mit Modul

Ein Modul vom Typ Benutzer-Anmeldung auf der Seite platzieren - eventuell in der Navigationsleiste.

Dies ist die einfachere Variante mit dem einzigen Nachteil, dass etwas mehr Platz benötigt wird. Der Vorteil ist, dass die An- und Abmeldeweiterleitung einfach zu realisieren sind, d.h. man kann auf die zuletzt angezeigte Seite weiterleiten (Standard).

Benutzeranmeldung mit einem Menüeintrag

Einen Menüeintrag vom Typ Benutzer-Anmeldeformular erzeugen.

Nachteil: Die An- und Abmeldeweiterleitung vom Typ Standard leitet weiter zum Anmeldeformular, da die zuletzt angezeigte Seite eben das Anmeldeformular ist.

Das ist nicht sehr sinnvoll. Man kann statt der Standard-Option einen bestimmten Menüeintrag als Weiterleitungsziel nehmen, z.B. die Startseite der Joomla-Site.

Login Menüpunkt ausblenden

Möchte man nach Anmeldung eines Benutzer den Menüpunkt Login ausblenden, so muss man einige Änderungen in der Benutzerverwaltung durchführen.

  • Eine neue Benutzergruppe anlegen
# Beispiel:
Name: NonRegistered
Hinweis: Ab Joomla 3 wird angeblich eine Benutzergruppe Gast automatisch nach der Installation angelegt.
  • Eine neue Zugriffsebene anlegen
# Beispiel:
Name: Gast

Nur die neue Benutzergruppe NonRegistered soll Zugriff haben (anklicken).

  • Zugriffsebene Public ändern

In der Zugriffsebene Public muss nun die neue Gruppe NonRegistered zusätzlich aktiviert werden.

  • Benutzer Optionen ändern

Auf das Optionen Symbol klicken (rechts oben) und als Gast Benutzergruppe die neue Gruppe NonRegistered eintragen.

Authentifizierung über LDAP

  • Das Plugin Authentifikation - LDAP aktivieren
  • Plugin konfigurieren
Host:        localhost
Port:        389
LDAP V3:     Ja
Autorisierungsmethode: Verbinden und Suchen
Basis-DN:    dc=network
Suchstring:  &(uid=[search]) (gidNumber=601)

Voller Name: gecos 	
E-Mail:      mail	
Benutzer-ID: uid

Hinweis: Das LDAP Attribut mail muss bei jedem Benutzer vorhanden sein.

Phoca Gallery

Konfiguration und Anwendung

  • Phocagallery Plugin

Zur Phocagallery gibt es ein Plugin, mit dem man in einen Beitrag Fotos aus einer Galerie einbinden kann.

http://www.phoca.cz/download/category/14-phoca-gallery-plugin

Folgende Zeile in den Artikel einfügen:

# Beispiel
{phocagallery view=category|categoryid=15}

Nach der Installation muss das Plugin aktiviert werden.

Optionen

  • Thumbnails
Große Thumbnails = Detailansicht: 800 x 600
Mittlere Thumbnails: 175 x 175
Kleine Thumbnails: 100 x 100
Detail Fenstergröße: 820 x 680

Bildergalerie hinzufügen

Upload

Am Server ein neues Verzeichnis erstellen

images/phocagallery/neuerOrdner

Fotos mit Dateimanager, z.B. Dolphin oder mit einem FTP Client, z.B. Filezilla, in den neuen Ordner hochladen

Sicherstellen, dass der Benutzer wwwrun (... wenn openSuse) Schreibrechte in diesem Ordner hat

Joomla Backend

Komponenten / Phocagallery / Bilder / Mehrfaches Hinzufügen

Auf der rechten Seite werden alle Gallery Ordner angezeigt. Den neuen Ordner auswählen per Checkbox und dann auf Speichern und Schließen klicken.

Nun sollten die Thumbnails automatisch generiert werden.

Falls ein Fehler auftritt, wird der Vorgang abgebrochen und die automatische Thumbnailerstellung deaktiviert. Im Phocagallery Kontrollzentrum kann man unter Optionen diese wieder einschalten.

Phoca Mail

Abmelden vom Newsletter nicht möglich

In der Komponente JCE Editor muss man Relative URLs einschalten.

JCE Administration / Editor Profiles / Default / Editor Parameters

Sicherheit

Kontaktformular gegen SPAM Bots absichern

Folgende Datei bearbeiten:

/components/com_contact/views/contact/tmpl/default_form.php
  • Ein verstecktes Formularfeld hinzufügen:
<input type="text" name="security" style="display: none;">

Die JavaScript Funktion validate_form ändern:

... 
if (frm.security === "") {
    frm.submit();
}

Ein SPAM Bot wird automatisch alle Felder ausfüllen. Das Formular wird jedoch nur dann abgeschickt, wenn dieses versteckte Feld leer ist.

reCAPTCHA

Plugin aktivieren

Im Joomla Backend das Plugin Captcha - reCAPTCHA aktivieren.

Schlüssel beziehen

Man muss einen öffentlichen und einen geheimen Schlüssel eingeben.

Diese zwei Schlüssel bekommt man, indem man auf folgender Seite jene Domain registriert, über welche die Joomla Seite erreichbar ist.

https://www.google.com/recaptcha/admin

Klick auf das '+' Symbol rechts oben.

reCAPTCHA Version

  • reCAPTCHA Version 2
  • Kästchen Ich bin kein Roboter
  • Die zwei Schlüssel kopieren und im Joomla-Plugin einfügen

Kontaktformular

Im Joomla Backend muss unter Benutzer / Optionen" reCAPTCHA aktiviert werden, wenn es für das Kontaktformular verwendet werden soll.

Falls reCAPTCHA im Kontaktformular nicht erscheint, dann unter Komponenten / Kontakte / Option die Formulareinstellungen überprüfen.

Troubles

Komponenteninstallation nicht möglich

Fehlermeldung:

Es wurde kein Installationsplugin aktiviert ...

Lösung:

Erweiterungen / Verwalten / Überprüfen

Die gewünschten Installtionsplugins auswählen und auf Installieren klicken und dann ...

Erweiterungen / Plugins

... die neu installierten Installer - Plugins aktivieren.

HTML wird entfernt nach Speichern einer Seite

Für die Benutzergruppe ist ein Textfilter gesetzt auf den Wert Kein HTML

Joomla | Globale Konfiguration | Textfilter

Den Textfilter ändern auf den Wert Keine Filterung

Overrides

Offline Seite

Die Offline Seite kann man durch eigenen Code ersetzen bzw ergänzen.

Folgende Datei in den Ordner template/mein_template kopieren und bearbeiten:
template/system/offline.php

oder gleich eine eigene Offline-Seite mit PHP erstellen.

Joomla verwendet dann nicht diese Standardseite im system Verzeichnis, sondern den Override im aktuell verwendeten Template.

Das ist ein Beispiel meiner Offline Seite(n):

<?php
defined('_JEXEC') or die; ?>
<head>
</head>
<body>
    <style>
        .offline-container {
            max-width:100%;
            margin-top:4px;
            padding: 10px;
            background: #DDD;
            border: solid thin #999;
        }
        @media only screen and (min-width: 721px) {
            .offline-container {
                position: absolute;
                left: 50%;
                width: 600px;
                margin-left: -300px;
            }
        }
    </style>

    <div class="offline-container"> <?php
        require_once("/srv/www/include/php/application.php");
        define ("DEVELOP",false);
        define ("PROJ_NAME","abendmusik.at");
        define ("APP_NAME","Abendmusik in der Magdalenabergkirche");
        echo application::render_offlinePage(array(
            "referer" => "joomla",
            "offline" => true,
            "days" => 1,
            "hours" => 2
        )); ?>
    </div>
</body>
</html>

Die in obigem Code aufgerufene Funktion application::renderOfflinePagezeigt an, wie lang die Seite offline ist.

Hier der Code meiner Offline Funktion:

static function renderOfflinePage($params=array()) {
    date_default_timezone_set('Europe/Vienna');
    foreach ( $params as $key => $value ) $$key = $value;

    $start = mktime(date('H'), 0, 0, date("m"), date("d") , date("Y"));
    $sec = ($days * 24 + $hours) * 60 * 60;
    $ende_timestamp = $start + $sec;
    $Uhrzeit = strftime ("%H:00",$ende_timestamp);
    if ( $days == 0 ) {
        $Datum = "heute";
    } else {
        $Datum = strftime ("%d. %B %Y",$ende_timestamp);
    }
    $return = "<h1>Wartung</h1>";
    $return .= "<h2>".$caption."</h2>";
    $return .=  "<p>Diese Seite ist voraussichtlich bis <strong>".$Datum." ".$Uhrzeit."</strong> nicht verfügbar.</p>";
    $return .=  "<p>Bitte um Verständnis.</p>";
    $return .=  "<a href='mail@example.com'>Mail</a>an Webmaster.";
    return $return;
}