firegento / firegento-germansetup

FireGento_GermanSetup
61 stars 27 forks source link

Performance Speedup in Catalog Configuration Helper #51

Open mklooss opened 12 years ago

mklooss commented 12 years ago

Im Helper der Überschrieben wird, damit die Attribute angezeigt werden sollen, wird das Komplette Model zum Produkt geöffnet, was bei vielen Artikeln zu Performance Problemen führen kann.

Damit die Attribute im Checkout hinzufügt werden können kann man per XML Definieren in der Extension. Siehe: http://svn.magentocommerce.com/source/branches/1.7/app/code/core/Mage/Sales/Model/Quote/Config.php (Habe geschaut, geht bis 1.4 runter das Model)

in der Class gibt es auch ein Event (sales_quote_config_get_product_attributes), welches man per Observer ansteuern könnte, und alle Attribute lädt, die die Option "is_visible_on_checkout"

Ich hatte dazu schon mal was geschrieben (mit Caching), allerdings das Model komplett überschrieben: https://github.com/mklooss/Loewenstark_Button/blob/master/app/code/local/Loewenstark/Button/Model/Sales/Quote/Config.php

avstudnitz commented 11 years ago

Methode FireGento_GermanSetup_Helper_Catalog_Product_Configuration::_getProduct

datenbrille commented 11 years ago

Dazu müssen dann auch ein Template anlegen. Die Attribute werden in: checkout/cart, checkout/review und checkout/multishipping angezeigt.

mklooss commented 11 years ago

Template braucht man an sich bei der Methode hier nicht, da dieses bei den CustomOptions ausgegeben wird. man könnte wenn man es im Design hervorheben will, im array eine Flag mit liefern, die man im Template dann auswerten kann...

datenbrille commented 11 years ago

Ich habe mich gegen die Custom Options entschieden, weil es keine sind. Anstatt dessen werden nun die additional.product.info Blöcke genutzt. Die werden fast über all im Standard Template verwendet.

mklooss commented 11 years ago

schaut soweit ganz gut aus... habe mir es jetzt nicht installiert, aber glaube du wirst, einige Attr nicht angezeigt bekommen. da die in der Collection fehlen, es müssen, alle Attr. die im Checkout angezeigt werden sollen auch in der Config geladen werden, dazu muss dieses Event angesteuert werden: sales_quote_config_get_product_attributes

datenbrille commented 11 years ago

Werden über den Observer:

 <sales_quote_config_get_product_attributes>
                <observers>
                    <germansetup_observer_checkout_attributes>
                        <class>germansetup/observer</class>
                        <type>model</type>
                        <method>addProductAttributesToCheckout</method>
                    </germansetup_observer_checkout_attributes>
                </observers>
            </sales_quote_config_get_product_attributes>

eingelesen und sind dann in der Collection verfügbar. Den Rest besorgen der Helper und die Blöcke.

riconeitzel commented 11 years ago

Kann nach Merge von #85 geschlossen werden.

mklooss commented 10 years ago

wie sieht es mit dem verknüpften PullRequest aus? zumindest sollte doch das Event mit übernommen werden. hatten dieses WE ein Problem in einem Shop mit vielen Käufen, da immer das komplette Produkt geladen wurde, ging der Server stark in die Knie, nach der Änderung ging er bei der gleichen Last normal weiter.

https://github.com/mklooss/Loewenstark_Performance/blob/master/app/code/community/Loewenstark/Performance/Model/Observer.php#L15 https://github.com/mklooss/Loewenstark_Performance/blob/master/app/code/community/Loewenstark/Performance/Helper/Catalog/Product/Configuration.php#L11

https://github.com/mklooss/Loewenstark_Performance/blob/master/app/etc/modules/Loewenstark_Performance.xml#L19

sprankhub commented 10 years ago

Es macht denke ich Sinn, den Pull Request noch einmal zu aktualisieren und an das Nachfolger-Projekt FireGento_MageSetup zu stellen. Falls es da noch nicht eingebaut ist...

mklooss commented 10 years ago

korrekt, sollte aber nicht direkt übernommen werden, da die Attribute nicht richt geladen werden, wenn ein Attribute ein Frontend-Model hat, so wird dieses aktuell in der Version von @datenbrille noch nicht verwendet, sonst sieht es gut aus.

ist mir gerade beim Drüber schauen aufgefallen.

https://github.com/firegento/firegento-germansetup/blob/65c782c904eb739018312f8bcf3ba16164f9950b/src/app/code/community/FireGento/GermanSetup/Helper/Checkout/Data.php#L80