Anzeige benutzerdefinierter Felder in Virtuemart

  • Hallo,


    ich wunderer mich gerade über folgendes:


    Im aktuellen Virtuemart habe ich benutzerdefinierte Felder angelegt. Diese funktionieren soweit. In Verbindung mit einem Template, welches auf T3_blank BS3 beruht, ergeben sich Probleme mit der Anzeige der Drop-Down-Liste.


    Im Demo-Shop funktioniert alles. Im aktualisierten Shop sind die Listenpunkte scheinbar soweit verschoben, dass ich nur eine weiße Fläche ohne Inhalt sehe. Ändere ich beispielsweise die errechnete width-Angabe, werden sie sichtbar.


    Der einzige Unterschied im Browser-Quellcode ergibt sich durch eine Klasse, welche auf meiner Seite fehlt. Ergänze ich die folgende Klasse (Firefox), dann ist die Anzeige korrekt:


    chzn-container-single-nosearch (Zeile 1)



    Nun bin ich auf der Sucher nach der php-Datei, in welcher ich die Klasse ergänzen kann. Ich kann lediglich einige CSS-Dateien (chosen.css, edit.css ...) ausfindig machen. Beim Datei-Vergleich (Demo-Shop / Mein Shop) kann ich keine relevanten Unterschiede feststellen.

    Kann es sein, dass die Klasse irgendwie über eine Einstellung im Backend generiert wird? Auch dort habe ich vergeblich gesucht.


    Hat jemand einen Tipp für mich?

    Beide Shops laufen momentan nur lokal (Xampp).

    PHP 7.1

    Joomla, VM, T3-Framework, Template und Erweiterungen sind alle aktuell.

  • Hallo JoomlaWunder,


    so ein ähnliches Problem hatte ich schonmal mit VM. Dabei beschränkten sich solche Anzeigefehler nur auf die Nutzung von "Xampp".

    Seither arbeite ich immer mit einer Spiegelung meines Shops Live auf dem Server in einem Unterordner mit natürlich einer eigenen DB, um solche Sachen zu Testen. Hast Du das mal versucht?


    Gruß Faro

  • Puh........ Lege ich ein "Custom Feld" in Virtuemart neu an und füge es einem Produkt hinzu, so wird alles korrekt angezeigt.

    Das DIV hat dann die richtigen Klassen.


    Scheinbar wurde bei dem VM-Update einer älteren VM3-Version auf die aktuelle Version etwas nicht korrekt "mitgenommen". Das muss ich mir morgen einmal genauer anschauen.


    Online habe ich das gleiche Problem und der Debug-Modus hat mir leider auch nicht weitergeholfen. Möglicherweise ein DB-Problem. "DB reparieren" habe ich auch erfolglos getestet.

  • Aktueller Kenntnisstand:

    Nur bei neu erstellten "Custom Fields" wird dem DIV die Klasse chzn-container-single-nosearch hinzugefügt und die Drop-Down-Liste dadurch einwandfrei angezeigt. Leider kann ich aber nicht für alle Produkte die CF komplett neu anlegen -> Zu hoher Zeitaufwand


    Die bestehenden "Custom Fields" bzw. "Produkte" einfach nur erneut abzuspeichern, das bringt leider nichts.

    Die alten und neuen DB-Einträge weisen auch keinen Unterschied auf. Sonst hätte man das leicht in der DB ändern können.


    Weitere Vermutung:

    Nun kann man in den VM-Custom Fields "Strings" die Option "searchable" de-/aktivieren. Als Hinweis steht da allerdings "experimentell" bei. Deren Änderung hat aber keinen Einfluss auf die Klasse. Womöglich hat dies auch gar nichts mit dem Problem zu tun, obwohl das nosearch diesbezüglich ja auffällig ist.

    Ich weiß auch nicht, wo der Wert für "searchable" in den DB-Tabellen gespeichert wird.


    Weiß jemand, ob es bei den VM-Updates ab 3.0.7 irgendwelche Probleme mit den Custom Fields gab. Ich habe selber etliche VM-Shops aktualisiert, aber nie derartige Probleme gehabt?

  • Hallo JoomlaWunder,


    leider kann ich dir bei diesem Problem auch nicht weiterhelfen. Ich habe meinen Shop seit VM 1 bis zur momentanen Version VM 3.2.13 upgedatet und nie Probleme mit meinen "Custom Fields" gehabt.


    Das hilft dir jetzt auch nur soweit weiter, als dass man denken könnte es ist leider ein Einzelproblem?


    Gruß

    Faro

  • Ich habe gerade folgendes gefunden:


    http://forum.virtuemart.net/in…29787.msg446953#msg446953


    Das erklärt aber nicht, warum die Code-Generierung (chosen.jquery.min.js) auf alte und neu erstellte "Custom Fields" anders reagiert. Ich werde die Dateien auch noch mal vergleichen und nach Overrides "absuchen"!


    EDIT: Meine funktionierenden Updates habe ich auch immer zeitnah gemacht. Eventuell hätte ich es in diesem Fall mit mehreren Zwischenschritten machen müssen.

  • Dies hier sorgt für das Hinzufügen oder Weglassen der entscheidenden Klasse (Teil herauskopiert):


    Code
    if(this.form_field.options.length<=this.disable_search_threshold)
    {this.container.addClass("chzn-container-single-nosearch")}
    else
    {this.container.removeClass("chzn-container-single-nosearch")}}}


    Wie muss ich das deuten? Was könnte dieser "Schwellwert" sein?

  • Danke dir!


    Ich kann solch einen Fix zwar nicht in der Datei finden, aber man erhält ja auch keine Fehlermeldung. Von daher gehe ich weniger von einem Problem mit der Chosen.jquery.min.js aus.

    Nach dem Anlegen von neuen "VM-Custom Fields" werden diese ja auch korrekt angezeigt.


    Das Problem betrifft einzig und allein die alten "Custom Fields" mit denen alle Produkte ausgestattet sind. Deshalb versuche ich nun einen Zusammenhang zwischen dieser IF-Anweisung und den DB-Einträgen herzustellen, die für die CF zuständig sind.

    Gibt es eventuell weitere Tabellen, an die man nicht denkt, weil sie nicht mit virtuemart..... beginnen?

  • Ich bin jetzt auf folgende Seite gestoßen, die mir weitergeholfen hat: https://harvesthq.github.io/chosen/options.html


    Daraufhin habe ich mal alle Overrides nach diesem "disable_search_threshold" durchsucht und bin fündig geworden. Es gibt ein Override für die Produktdetails-Seite, welche mir die Anzahl der Einträge in der Drop-Down-Liste auf 5 begrenzt. Und tatsächlich: Erst ab 6 Werten für ein "Custom Field" tritt das Problem auf. Bis zu 5 funktioniert es einwandfrei.


    Code
    $script =
        'Virtuemart.updateChosenDropdownLayout = function() {
            var vm2string = {'.$vm2string.'};
            jQuery(function($) {
                '.$selector.'.chosen({enable_select_all: true,
    select_all_text : vm2string.select_all_text,
    select_some_options_text:vm2string.select_some_options_text,
    disable_search_threshold: 5});
            });


    Nun muss ich mal schauen, wie sich die Darstellung verhält, wenn ich die 5 einfach mal höher setze.

    Zumindest habe ich nun die Ursache gefunden und glücklicherweise müssen die Felder nicht neu angelegt werden.


    Blöderweise habe ich neue Felder zum Testen immer nur mit maximal 3 Werten angelegt, so dass es reibungslos funktionierte und mich auf eine falsche Fährte führte. Hätte ich es mal mit 6 Werten versucht, wäre ich vermutlich schneller auf die Lösung gestoßen.


    Danke für eure Anregungen!