2010-12-31 3 views

ответ

10

По умолчанию, Magento хранит только remote_ip в таблице sales_flat_order для заказа, который является местом клиента (в то время как для заказа администратора установлено значение null).

Так попробуйте это:

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

Посмотреть ответ Programmatically differentiate between admin & customer-placed orders

+0

Спасибо за хороший крюк +1 от меня @RS –

+0

Я пытаюсь представить, что если magento был установлен на облачном узле, заказ, размещенный заказчиком или администратором, будет иметь удаленный IP-адрес , Я стою исправлен – burntblark

8

В каждом заказе есть store_id, при вводе через администрацию он будет либо 0 (для магазина 'admin'), либо null.

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

Не используйте getStore() как это не всегда будет возвращать администратор магазина объекта надежно.

Не работает с последними версиями Magento. (См комментария)

+2

clockworkgeek является правильным. Я добавлю еще один способ, который в основном полезен для администраторов, которые не являются программистами. Если вы посмотрите на заказ на экране администрирования (Admin -> sales -> Orders), он будет иметь поле «Размещено от IP», если заказ был создан из внешнего интерфейса, но если это было сделано с помощью экранов бэкэнда администратора, там не будет. – shaune

+0

@sdek - Это хороший совет, я раньше этого не знал. – clockworkgeek

+9

Не работает с последними версиями Magento. Вы должны выбрать идентификатор магазина перед тем, как создать заказ в бэкэнде администратора. Так что store_id всегда будет иметь значение, отличное от 0. –

0

Вы можете проверить значение is_super_mode (я только проверить на цитатах: $quote->getIsSuperMode())

+0

Где вы нашли это поле? Я не могу найти его для Magento 1.7 – Alex

Смежные вопросы