JoomlaCamp 2018 Essen - 03.02.2017 in Essen

Aktuelle Seite nicht als Link im Menü

    Aktuelle Seite nicht als Link im Menü

    Hallo,

    zwar nutze ich Joomla! schon einige Jahre, aber eher im Bastler-Modus. Daher hoffe ich, dass meine Ausführungen verständlich sind. Ansonsten liefere ich gerne Infos nach :)

    Kurz zu den Rahmenbedingungen: Ich nutzte Version 3.8.2 und ein eigenes Template auf der Grundlage von Metro Pro von JoomlaShine (Version 2.1.3)

    Ich habe ein Menü, in dem der Eintrag für die aktuelle Seite stets so aussieht:


    Spoiler anzeigen

    Quellcode

    1. <ul class="menu-mainmenu menu-iconmenu">
    2. <li class="current active first jsn-icon-home">
    3. <a class="current" href="/index.php" ><i class="jsn-icon-home "></i><span class="jsn-menutitle">Startseite</span></a>
    4. </li>
    5. ...



    Bisher konnte ich das durch ein Override der /mod_menu/default_url.php so ändern, dass hieraus semantisch sinnvolles HTML entsteht:

    Spoiler anzeigen

    Quellcode

    1. <ul class="menu-mainmenu menu-iconmenu">
    2. <li class="current active first jsn-icon-home">
    3. <strong><i class="jsn-icon-home
    4. "></i><span
    5. class="jsn-menutitle">Startseite</span></strong>
    6. </li>
    7. ...



    Nach dem letzten Template-Update gab es neue Overrides von JoomlaShine und auch die Original-Datei von Joomla! scheint an keiner Stelle mehr direkt Links zu erzeugen.

    Ich verfüge nur über sehr rudimentäre PHP-Kenntnisse. Jedenfalls kann ich nirgendwo die Stelle finden, wo die Links für das Menü schlussendlich erzeugt werden.

    Kann mir jemand sagen, welche Datei ich modifizieren muss, um o.g. HTML zu erhalten? Besten Dank im Voraus für eure Hilfe :)


    LG Stefan
    Wenn ich das richtig verstehe, dann hat das Template Override-Dateien, von denen du mindestens 1 Datei geändert hast?
    Ohne dass man das Template und die Dateien kennt, ist es schwierig zu helfen. Selbst wenn man diese kennt, sucht man sich in der Tat oft 'nen Wolf, um die richtige Stelle zu finden.

    Hast du denn momentan die aktuelle vollständige Template-Version installiert, also ohne Änderungen deinerseits? Und läuft die Seite so korrekt?
    Wird der Link angezeigt oder nicht? Wenn ja, dann gib mal einen Link zur Webseite an und beschreibe genau, was du ändern möchtest!

    Eventuell lässt sich das viel leichter in einer css-Datei einstellen!
    Gruß!
    JoomlaWunder
    Irgendwie ist meine Antwort verschwunden, daher noch einmal.

    Ja genau. ich nutze vorgegebene Overrides des Templates. Allerdings erzeugt Joomla bei mir auch ohne Override den im 1. Post beschriebenen HTML-Output, den ich gerne ersetzen würde.

    Es geht um die Seite http://brecht-gym.de/. Auf der Startseite soll im Menü oben der Button "Startseite" nicht mit einem Link versehen werden. Stattdessen soll der Schriftzug als strong im HTML ausgezeichnet werden.

    Natürlich kann ich auch mit CSS sämtliche Darstellungen des (aktiven) Links deaktivieren. Aber ich würde es gerne semantisch korrekt lösen.

    Neu

    Danke für eure Rückmeldungen. Habe nun endlich Zeit, zu antworten.

    JoomlaWunder schrieb:

    Vielleicht findet sich jemand, der das Template im Einsatz hat und die Zeit hat, da mal nachzuschauen, welche Datei zu bearbeiten ist.


    Ich habe inzwischen die Overrides des Templates gelöscht und nutze daher den originalen HTML-Output von Joomla. Das Ergebnis ist immer noch für mich unbefriedigend.

    chr-hl schrieb:

    a) wenn ich mir die default_url.php ansehe, würde mich schon interessieren, wie Du da sinnhaft geändert hast.
    b) M.E eher schon in der Default.php von mod_menu,


    Ja kann sein. Meine Overrides wurden bei einem Update des Templates überschrieben, so dass ich nicht nachsehen konnte.

    chr-hl schrieb:

    Jedoch stelle ich mir die Frage: Warum? Es doch ein "Standard", dass die aktive Menüpunkt als Link vorhanden ist, ggf. anders gestylt.


    Das sehe ich ehrlich gesagt anders. Websites sollten niemals sich selbst verlinken. Das hat u.a. folgende Gründe:

    * User erwarten beim Anwählen des Links eine Aktion. Da sich in diesem Fall die Seite lediglich neu lädt kann das irritieren.
    * Semantisch handelt es sich nicht um einen Link. Natürlich kann ich das Aussehen per CSS modifizieren, das ändert allerdings nicht die Semantik des HTML.

    So wie ich das sehe, wird der eigentliche Link irgendwie tief in der Joomla-API generiert ohne Möglichkeit, durch ein Override dort einzugreifen. Oder was übersehe ich ? :)

    Neu

    Bigga schrieb:

    und nutze daher den originalen HTML-Output von Joomla.


    Legst dir als Overrides wieder an.

    Am Beispiel default_component.php und default_url

    Da steht am Ende die Zeile

    Quellcode

    1. echo JHtml::_('link', JFilterOutput::ampReplace(htmlspecialchars($item->flink, ENT_COMPAT, 'UTF-8', false)), $linktype, $attributes);


    und die ersetzt du durch

    Quellcode

    1. $url = JFilterOutput::ampReplace(htmlspecialchars($item->flink, ENT_COMPAT, 'UTF-8', false));
    2. $attributes = Joomla\Utilities\ArrayHelper::toString($attributes);
    3. // Hat das LI eine Klasse current?
    4. if (strpos($class, ' current') !== false)
    5. {
    6. echo '<strong>' . $linktype. '</strong>';
    7. }
    8. else
    9. {
    10. echo '<a href="' . $url . '" ' . $attributes . '>' . $linktype . '</a>';
    11. }


    Der Code, den du gesucht hast, findet sich übrigens in /libraries/src/HTML/HTMLHelper.php
    function link($url, $text, $attribs = null).

    Andere Variante könnte sein, du holst dir den alten Code/die alten Dateien aus der Joomla 3.5.1 als Overrides, z.B.
    github.com/joomla/joomla-cms/b…mpl/default_component.php
    Denke mal, die sollten auch noch funktionieren (?)
    Joomla-Fachmann: ghsvs.de

forum.joomla.de is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters the trademark holder in the United States and other countries.