Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Versandkosten mit Sperrgutzuschlag
 
genji
Jr. Member
 
Total Posts:  16
Joined:  2012-01-27
 

Hallo,

in den Versandkosten möchte ich für bestimmte Produkte einen Sperrgutzuschlag erheben, Der Zuschlag soll ab einer bestimmten Länge erhoben werden. In den “Versandarten” benutze ich Tabellenbasierte Versandkosten nach Preisen.

In app/code/core/Mage/Checkout/Block/Onepage/Shipping/Method/Available.php gibt es eine Methode getShippingPrice($price, $flag), die den Betrag für die Versandkosten ausgibt. Ich versuche nun die Produkte mit folgendem Aufruf zu bekommen. Allerdings bekomme ich die items nicht zu fassen.

foreach ($request->getAllItems() as $_item)
        
{
            
if ($_item->getProduct() instanceof Mage_Catalog_Model_Product)
            
{
                $_length 
$_item->getProduct()->getAttributeById('length');  
                if (
$_length 120{ $price += 10}
            }            
        }
Hat jemand eine Idee, wie ich daran komme?
 
Magento Community Magento Community
Magento Community
Magento Community
 
Siggi_Schmitz
Enthusiast
 
Avatar
Total Posts:  811
Joined:  2011-07-03
 

Kann sein dass du das Produktmodel noch explizit laden mußt um an das Attribut zu kommen, versuch`s mal (hab`s nicht getestet) mit:

foreach ($request->getAllItems() as $_item)
        
{
            
if ($_item->getProduct() instanceof Mage_Catalog_Model_Product)
            
{
                $_length 
Mage::getModel('catalog/product')->load($_item->getProduct()->getId())->getAttributeById('length');  
                if (
$_length 120{ $price += 10}
            }            
        }
 
Magento Community Magento Community
Magento Community
Magento Community
 
genji
Jr. Member
 
Total Posts:  16
Joined:  2012-01-27
 

Danke für die Antwort.

Das Problem ist, dass $request->getAllItems() nicht funktioniert.

Die Frage ist, wie komme ich an die Produkte im Warenkorb und dann an die Attribute.
Ich bin mir nicht sicher ob app/code/core/Mage/Checkout/Block/Onepage/Shipping/Method/Available.php die richtige Datei ist. Da hier die Methode public function getShippingPrice($price, $flag) aufgerufen wird bietet sich aber an.

Gibt es die Möglichkeit hier an die Produkte im Warenkorb und dann an die Attribute heranzukommen?

 
Magento Community Magento Community
Magento Community
Magento Community
 
Siggi_Schmitz
Enthusiast
 
Avatar
Total Posts:  811
Joined:  2011-07-03
 

An Produkte im Warenkorb kommst du von überall aus mit:

$quote Mage::getSingleton('checkout/session')->getQuote();
$cartItems $quote->getAllVisibleItems();

Dann kannst du $cartItems in ner foreach - Schleife durchgehen, denke die Produkt ID bekommst du jeweils mit getProductId(), damit dann das Produktmodel laden und das entsprechende Attribut auslesen.

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top