2010-12-31 6 views

Antwort

10

standardmäßig Magento speichert nur die remote_ip in Tabelle sales_flat_order für einen Auftrag, der Ort ist durch den Kunden (während die Admin-Reihenfolge auf null gesetzt ist).

diese So versuchen:

if(!empty($order->getRemoteIp()){ 
    //place online 
} 
else{ 
    // place by admin 
} 

Siehe Programmatically differentiate between admin & customer-placed orders

+0

Danke für nette Haken +1 von mir @RS –

+0

Ich versuche mir vorzustellen, dass, wenn Magento auf einem Cloud-Host installiert wurde, die Bestellung entweder vom Kunden oder Admin eine Remote-IP-Adresse hat . Ich stehe korrigiert – burntblark

8

Jede Bestellung hat eine store_id, wenn sie durch Administration eingegeben wird, wird entweder 0 (für 'admin' speichern) oder null sein.

if ($order->getStoreId()) { 
    // was placed via frontend 
} 

Sie getStore() als dass nicht nicht immer Rück das Admin-Speicherobjekt zuverlässig verwenden.

Funktioniert nicht mit den neuesten Versionen von Magento. (Siehe Kommentar)

+2

clockworkgeek Antwort richtig ist. Ich füge einen anderen Weg hinzu, der vor allem für administrative Benutzer hilfreich ist, die keine Programmierer sind. Wenn Sie die Bestellung im Administrationsbildschirm ansehen (Admin -> Verkauf -> Bestellungen), wird ein Feld "Von IP-Adresse gesendet" angezeigt, wenn die Bestellung vom Frontend erstellt wurde, aber wenn es über das Admin-Backend erfolgt wird nicht da sein. – shaune

+0

@sdek - Das ist ein netter Tipp, ich war mir vorher nicht bewusst. – clockworkgeek

+9

Funktioniert nicht mit den neuesten Versionen von Magento. Sie müssen die Store-ID vor dem Erstellen der Bestellung im Admin-Backend auswählen. Also store_id wird immer einen anderen Wert als 0 haben. –

0

Sie den is_super_mode Wert überprüfen (ich habe nur auf das Angebot prüfen: $quote->getIsSuperMode())

+0

Wo haben Sie dieses Feld gefunden? Ich kann es nicht finden für Magento 1.7 – Alex