Warum werden Produkte in gesperrten Kategorien veröffentlicht?

  • Hallo,


    mein System: vm 2 ( 2.0.14) shop / Joomla! 2.5.8.


    Ich habe habe folgendes Problem:


    Ich möchte ("ganz simpel"), das VM alle Produkte, die in gesperrten Kategorien liegen, nicht anzeigt.
    Dies sollte eigentlich selbstverständlich sein, macht VM aber anscheinend standardmäßig nicht.


    Die Produkte werden natürlich nicht in den kategorien angezeigt, da sie ja nicht veröffentlicht wurden.
    Aber man sieht diese Produkte z.B. auf der VM Frontseite unter "Top Ten Produkte", oder "neueste Produkte",
    außerdem werden Sie auch über die Produktsuche gefunden.


    Wenn man dann auf ein solches produkt klickt, kommt man in die "details-view" (produktansicht) wo das produkt normal dargestellt ist. allerdings bekommt man eine Fehlermeldung im Menü (logisch!) weil in VM ja die jeweilige Kategorie gesperrt ist:


    Zitat

    Notice: Undefined offset: 8375 in /XXX/XXX/XXX/XXX/modules/mod_vertical_dropmenu/core/MenuBase.php on line 91 Notice: Trying to get property of non-object in /XXX/XXX/XXX/XXX/modules/mod_vertical_dropmenu/core/MenuBase.php on line 92


    Um ehrlich zu sein, ist das absolut unlogisch aus meiner sicht.


    Es sollte so gehen:


    Alle Produkte (egal ob veröffentlicht oder gesperrt) sind so lange in einer Kategorie gesperrt, bis man die ganze Kategorie veröffentlicht. Wenn man diese veröffentlicht sind alle Produkte sichtbar.



    scheint ein altes Problem in VM zu sein.
    Hier zur Info (vielleicht hat dann jemand eine Idee) eine lösung wie´s in VM1 ging (für VM2 hab ich nix gefunden):


    http://forum.virtuemart.net/in…6#msg1781468146#msg178146


    Die erwähnte

    Zitat

    PS_product.php

    gibts aber in VM2 nicht mehr.
    Die heißt jetzt wohl einfach

    Zitat

    product.php

    und ist hier zu finden:


    Zitat

    administrator/components/com_virtuemart/models/product.php


    Allerdings stimmt der Code auch nicht mehr.


    Keine Ahnung ob das hilfreich für ne Lösung ist.
    Evtl. geht´s auch ganz anders.


    Danke jedenfalls schon ´mal für Eure Hilfe!!!

  • Herrlich, Old Fritz. Nun eine Antwort habe ich ja schon im englischem Forum gegeben, aber da ich gerade etwas Zeit habe.


    Hallo,
    mein System: vm 2 ( 2.0.14) shop / Joomla! 2.5.8.


    Probier ein update. Von der 2.0.14 aufwärts bis zur 2.0.20b gibts nur ganz selten Kompatibilitätsprobleme.



    Ich habe habe folgendes Problem:


    Ich möchte ("ganz simpel"), das VM alle Produkte, die in gesperrten Kategorien liegen, nicht anzeigt.
    Dies sollte eigentlich selbstverständlich sein, macht VM aber anscheinend standardmäßig nicht.


    Das ist garnicht selbstverständlich. Du benutzt ja ganz richtig das wort "eigentlich". Und einem einfachem Kategorie system ist es "eigen". Aber einem Multi-kategorie system wie bei VirtueMart 2 ist es eben nicht eigen.
    Das heisst, dadurch, dass man einem Produkt mehrere Kategorien zuordnen kann, fallen mir eben mal 4 Möglichkeiten ein, wie man entscheidet ob ein Produkt letztendlich gesperrt wird, oder nicht. Probe? Kategorie A und B, p für published
    Einer gewinnt Modell, hat 2 Wege;
    Ap und B => published oder eben nicht published, muss man sich entscheiden, muss man lernen
    Beide müssen stimmen Modell, is easy hat nur einen Weg:
    Ap und Bp => published
    A und B => unpublished
    Mit Reihenfolge
    Ap und B =>unpublished
    A und Bp =>published


    Das ist alles schwer und alles sehr wenig transparent. Daher funktioneren die Kategorien in vm2 anders. Eine Kategorie ist eine Art Menge, in der Produkte sind. Ist ein Produkt einer veröffentlichten Kategorie zugeordnet, so kann man das Produkt dort finden. Man kann auch unpublished Kategorien benutzen, um Steuerinformationen (siehe AvaTax) zuzuweisen, oder die Berechnungsregeln für verschiedene Discounts, Mehrwertsteuersätze usw zu benutzen. Gibt ja sogar Leute die machen ihre Differenzenbesteuerung mit den vm2 Rechenregeln.


    Ausserdem so rein aus Informatiker sicht hat man dann 2 checks, die fast das gleiche machen. und man könnte wieder den Workaround schreiben, das man die produkte automatisch gleich unpublished, also in der Datenbank die entsprechenden Werte setzt. Was ewig Probleme nach sich zieht.


    Daher ist unsere Lösung, dass man in die Produkt liste geht, dort nach der Kategorie filtert, unten 400 Produkte einstellt und sich halt durch die paar Seiten durchhangelt (alle Produkte markieren, unpublishen). Ich habe selten Kategorien mit mehr als 500 Produkten gesehen. Selbst für 4000 Produkte geht es noch unter 10 Minuten. Klar, man kann noch einen Button einbauen, man kann aber auch den Code schreiben und uns schicken, oder uns bezahlen es für alle zu schreiben, genauso sind die Bulk Produkt zu Kategorie Buttons entstanden. Da hat einfach einer mal 200 euro in uns investiert. Mehr isses nicht.



    Um das zu verhindern könnte man sich allerdings darauf einigen zu sagen, wenn alle Kategorien unpublished sind, dann zeigs nicht an, ABER das kostet wieder Performance und ist gerade bei der Suchquery teuer. und aus unserer Sicht eigentlich durch den Shopowner einfach zu vermeiden.



    scheint ein altes Problem in VM zu sein.
    Hier zur Info (vielleicht hat dann jemand eine Idee) eine lösung wie´s in VM1 ging (für VM2 hab ich nix gefunden):


    Ahh wirklich. Vm2 ist ein ganz anderer Code. Es ist wirklich in keiner Weise vergleichbar. Wir haben zwar mit dem alten Code gestartet, aber alle Models funktionieren völlig anders. vm1 models waren in den 90ern begonnen worden (phpshop).



    Die erwähnte PS_product.php gibts aber in VM2 nicht mehr.
    Die heißt jetzt wohl einfach product.php und ist hier zu finden: administrator/components/com_virtuemart/models/product.php


    Ahh nicht "einfach". Der Grund ist das wir das OOP Pattern von Joomla einigermassen nutzen. Früher war alles in einem ordner und man hat models mit einem prefix versehen, bei vm1 isses dieses PS, was imho von phpshop kommt. Daher isses nicht einfach, sondern wohl durchdacht. Wir wenden einfach standards an, sozusagen DINs die dafür sorgen, das neue Entwickler sich deutlich schneller zurecht finden, als früher.



    Allerdings stimmt der Code auch nicht mehr.


    Klar, der Teil ist ja auch abstrahiert und liegt in der Funktion sortSearchListQuery und der Trick ist, dass es immer diese Funktion ist. Egal ob category, product oder sonstwas, fast jedes Model hat diese function und die ist auch immmer sehr ähnlich konstruiert. Also was du letztendlich brauchst ist ein Button in der Kategorie, der heisst, "alle Produkte dieser Kategorie unpublishen/publishen".


    Oder hast du diesen komplizierten Fall, dass du sowohl veröffentlichte, als auch gesperrte Produkte hast und du willst einfach mal eben diese per Kategorie an und ausschalten, so... zu testzwecken? Eine echte Anwendung erschliesst sich mir nicht.