Probleme nach Update: Backend-Menu, Shopperfields und OSpam-a-not-Konflikt

  • Hallo VirtueMart-Community,

    nach einem kürzlich durchgeführten Update meiner Joomla- und VirtueMart-Installation bin ich auf einige Probleme gestoßen und hoffe, dass ihr mir bei der Lösungsfindung helfen könnt.


    Technische Systemdaten

    • Joomla-Version: 5.3.3
    • VirtueMart-Version: 4.4.10
    • PHP-Version: 8.3.25
    • Verwendetes Joomla-Template: Cassiopeia (child)
    • Verwendete Plugins/Erweiterungen: OSpam-a-not

    Problembeschreibung

    Ich habe drei Probleme:

    • a) Backend-Menü-Ansicht:
      • Problem: Das VirtueMart-Menü im Backend ist standardmäßig aufgeklappt und schiebt das Standard-Joomla-Menü zur Seite, welches ich aber lieber dauerhaft geöffnet hätte.
      • Frage: Gibt es eine Möglichkeit, die Standardansicht zu ändern, sodass das VirtueMart-Menü wieder standardmäßig eingeklappt ist und das Joomla-Menü sichtbar bleibt?
    • b) Falsche Anzeige von Shopper Fields im Backend:
      • Problem: In der Backend-Bestellübersicht unter "Rechnung an" werden zwei benutzerdefinierte Shopper Fields (CartHinweis und Zustimmung) angezeigt, die eigentlich nur für das Frontend im Warenkorb vorgesehen sind.
      • weitere Infos:
        • Das Problem trat erst nach dem Update auf.
        • Die Felder wurden manuell erstellt.
        • Shopper Field-Einstellungen: beide Felder „Veröffentlicht“ und „Show in cart form“ sowie das Feld Zustimmung zusätzlich „Required“
      • Frage: Ist dies ein bekanntes Verhalten der neuen VirtueMart-Version? Und gibt es eine saubere Methode (z. B. ein Template-Override), um die Anzeige dieser Felder im Backend zu verhindern?
    • c) Konflikt Shopper Field mit "OSpam-a-not" Erweiterung:
      • Problem: Wenn ein Kunde im Warenkorb die Checkbox für mein Shopper Field Zustimmung aktiviert, wird ein eigentlich unsichtbares Eingabefeld der Erweiterung "OSpam-a-not" plötzlich sichtbar.
      • weitere Infos:
        • Dies geschieht nur, wenn die Checkbox aktiviert wird.
        • Es handelt sich um ein leeres, nicht gekennzeichnetes Eingabefeld (Honeypot).
        • Ich nutze die kostenfreie Version von "OSpam-a-not" und habe keine Konfigurationsoptionen, um dies zu verhindern.
        • Das Feld hat keine einzigartige ID oder CSS-Klasse, die ich per CSS gezielt ansprechen könnte.
      • Frage: Gibt es bekannte Konflikte zwischen VirtueMart Shopper Fields und dieser oder ähnlichen Erweiterungen? Was könnte die Ursache für das Auslösen der Sichtbarkeit sein (z. B. ein JavaScript-Konflikt), und wie lässt sich das beheben?

    Vielen Dank im Voraus für eure Hilfe!

    Karin

  • Hallo Karin,


    zu a:

    /administrator/templates/vmadmin/html/com_virtuemart/sublayouts/startadmin.php
    hat ein Skript, das dort das Menü schließt, glaub ich. Das könnte man sicher ändern.


    zu b:

    Welche Kundenfelder an welcher Stelle angezeigt werden, hängt von der Position in der Kundenfeldliste ab.
    Dort gibt es "Delimiter".
    In der Sortierung unterhalb des Delimiters für die Rechnungsadresse setzen, wäre jetzt mein Ansatz.


    zu c:

    Da kann ich leider ohne hinein zu schauen wenig zu sagen, das muss man sich individuell anschauen, welches Skript da was verändert.
    IDs könnte man für die Felder evtl. angeben, indem man im Sublayout customfield.php oder customfields.php eine ID oder Klasse einfügt.


    Grüße

    Stefan

  • Gelöste Probleme nach dem VirtueMart 4 & Joomla! 5 Update

    Hallo zusammen,

    nach langer Fehlersuche möchte ich hier eine Lösung für die drei Probleme teilen, die bei mir nach der Aktualisierung auf VirtueMart 4 unter Joomla! 5 auftraten. Ein großes Dankeschön geht an Stefan, der mit seiner Hilfe entscheidend zur Lösung des Problems mit dem Menü beigetragen hat.

    1. Menü im Backend

    • Problem: Das VirtueMart-Menü im Backend ist standardmäßig aufgeklappt und schiebt das Standard-Joomla-Menü zur Seite, welches ich aber lieber dauerhaft geöffnet hätte.
    • Lösung: In der Override-Datei /administrator/templates/vmadmin/html/com_virtuemart/sublayouts/startadmin.php den Wert von autoCloseJMenu von 1 auf 0 setzen, um das automatische Schließen zu verhindern:
    Code
    1. Zeile 83: if(JVM_VERSION>3 and VmConfig::getInt('autoCloseJMenu',0))


    Das Ergebnis ist ein dauerhaft geöffnetes Joomla-Menü und ein standardmäßig zugeklapptes VM-Menü, das sich bei Bedarf manuell über die bekannten Icons ausklappen lässt.


    2. Sichtbare Shopper Fields in der Bestellübersicht

    • Problem: In der Backend-Bestellübersicht unter „Rechnung an“ werden zwei benutzerdefinierte Shopper Fields (CartHinweis und Zustimmung) angezeigt, die eigentlich nur für das Frontend im Warenkorb vorgesehen sind.
    • Lösung: In der Override-Datei administrator/templates/vmadmin/html/com_virtuemart/orders/order_btststatus.php in der Schleife, die die Userfields rendert, die unerwünschten Felder ausschließen. Wichtig hierbei ist die Verwendung des Präfixes „BT_“:

    PHP
    1. <?php foreach ($this->userfields['fields'] as $_field) {
    2. if ($_field['name'] === 'BT_CartHinweis' || $_field['name'] === 'BT_Zustimmung') {
    3. continue; } ?>


    3. Konflikt Shopper Field mit der "OSpam-a-not" Erweiterung

    • Problem: Wenn ein Kunde im Warenkorb die Checkbox für mein Shopper Field „Zustimmung“ aktiviert, wird ein eigentlich unsichtbares Eingabefeld (Honeypot) der Erweiterung "OSpam-a-not" plötzlich sichtbar.
    • Lösung: Das OSpam-a-not-Plugin wählt zufällig einen von sechs möglichen Feldnamen für das Honeypot-Feld. Durch die Aktivierung der Shopperfield-Checkbox wird die Seite kurz neu geladen, wodurch sich der Name des Honeypot-Feldes ändert, aber ohne die notwendige CSS-Anpassung (display:none;), weshalb das Feld sichtbar wird. Aber: Alle möglichen Namen sind in der Datei plugins/system/ospamanot/library/alledia/Ospamanot/Method/HoneyPot.php aufgelistet. Das Feld lässt sich somit auch bei einem Namenswechsel dauerhaft ausblenden, indem alle möglichen Namen in der user.css (oder einer ähnlichen Template-CSS-Datei) mit folgender einfachen Regel angesprochen werden:
    Code
    1. input[name="my_name"],
    2. input[name="your_name"],
    3. input[name="your_name_here"],
    4. input[name="my_address"],
    5. input[name="your_address"],
    6. input[name="your_address_here"] {
    7. display: none !important;
    8. }

    Ich hoffe, dieser Beitrag hilft auch anderen, diese oder ähnliche Probleme zu lösen! Ich wünsche euch allen ein frohes Schaffen!


    Viele Grüße

    Karin

  • Hallo Karin,


    zu 1:

    Du hast da ein VmConfig gefunden, das ist im gesamten Code nur in der der startadmin.php zu finden.

    VMConfig heißt, dass es eine Einstellung von VirtueMart ist. Entweder ist die in der VM Konfiguration zu finden oder wie in diesem Fall nicht. Dann kann man diesen Wert in der "Hidden Config/versteckten Konfiguration"

    /administrator/components/com_virtuemart/virtuemart.cfg

    eintragen. Damit muss man sonst keine Dateien ändern und hat später kein Problem mit alten Overrides oder bei Aktualisierung überschriebenen Dateinen.


    Zur versteckten Konfiguration habe ich hier etwas geschrieben:
    https://www.jooglies.com/tutor…-versteckte-konfiguration


    Grüße

    Stefan

  • Hallo Stefan,


    vielen Dank für den Hinweis auf die versteckte Konfigurationsdatei. Ich habe die Änderung in dem Override /administrator/templates/vmadmin/html/com_virtuemart/sublayouts/startadmin.php zurück genommen und stattdessen der /administrator/components/com_virtuemart/virtuemart.cfg den Eintrag "autoCloseJMenu=0" am Ende des [config]-Blocks eingefügt. - Es funktioniert alles wie gewünscht :)


    Leider habe ich nicht herausgefunden, wie ich den Beitrag auf gelöst setzen kann. Beim Versuch das über die FAQs zu erfahren, erhalte ich die Meldung "Fehler: Umleitungsfehler" und auch über das Suchfeld bin ich nicht fündig geworden. Vielleicht magst du mir ja auf die Sprünge helfen?


    Ich wünsche dir ein schönes Wochenende und gutes Gelingen bei allem was noch so ansteht ;)

    Karin