Как найти название перевозчика в Magento?

Я пытаюсь отследить название/метод доставки отправлений в моем магазине для использования во всплывающем окне отслеживания. В шаблоне всплывающего окна у меня есть объект Mage_Shipping_Model_Tracking_Result_Status, который выглядит так:

object(Mage_Shipping_Model_Tracking_Result_Status)#182 (7) 
{ 
    ["_data":protected]=> array(5) 
    { 
        ["carrier"]=> string(3) "ups" 
        ["carrier_title"]=> string(21) "United Parcel Service" 
        ["tracking"]=> string(22) "9102969006713002493469" 
        ["popup"]=> int(1) 
        ["url"]=> string(211) "http://wwwapps.ups.com/WebTracking/processInputRequest?HTMLVersion=5.0&error_carried=true&tracknums_displayed=5&TypeOfInquiryNumber=T&loc=en_US&InquiryNumber1=9102969006713002493469&AgreeToTermsAndConditions=yes" 
    } 
    ["_hasDataChanges":protected]=> bool(true) 
    ["_origData":protected]=> NULL 
    ["_idFieldName":protected]=> NULL 
    ["_isDeleted":protected]=> bool(false) 
    ["_oldFieldsMap":protected]=> array(0) { } 
    ["_syncFieldsMap":protected]=> array(0) { } 
}

Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно знать, что такое «название» для отправки, как это видно в панели администратора. В админке вижу это:

+-----------------------+------------------------+------------------------+--------+
|        Carrier        |         Title          |         Number         | Action |
+-----------------------+------------------------+------------------------+--------+
| United Parcel Service | MI Expedited Irregular | 9102969006713002493469 | Delete |
+-----------------------+------------------------+------------------------+--------+

Теперь то, что я ищу, это заголовок из таблицы, "MI Expedited Irregular". Я хочу, чтобы я мог поставить галочку в коде, чтобы он использовал другой URL-адрес отслеживания, а не тот, который указан в переменной URL-адреса для объекта. Но я не могу понять, как использовать объект, который я перечислил выше, чтобы получить Mage_Sales_Model_Order_Shipment_Track, где я считаю, что конкретная часть данных, которые я ищу, живет. В моих последних попытках я пробовал это

$forder = Mage::getModel('sales/order')->loadByIncrementId($shipid);
foreach($forder->getShipmentsCollection() as $shipment){
    var_dump($shipment);
}

$ship_col = Mage::getResourceModel('sales/order_shipment_collection')->setOrderFilter($forder)->load();
var_dump($ship_col);
foreach($ship_col as $sc){
    var_dump($sc);
}
$ship_col = Mage::getResourceModel('sales/order_shipment_collection');
$ship_col->addAttributeToFilter('order_id', $forder->getId());
foreach($ship_col as $sc){
    $ship = Mage::getModel('sales/order_shipment');
    $ship->load($sc->getId());
    $ftrack = Mage::getModel('sales/order_shipment_track')->loadById($ship->getId());
    foreach($ftrack as $tr){
        var_dump($tr);
    }
}

Во всех этих попытках все, что я получаю, это NULL/пустые результаты в var_dumps. Файл, в который я пытаюсь добавить функциональность, называется popup.phtml, который находится в папке app/design/frontend/default//template/shipping/tracking.

Итак, я думаю, что я пытаюсь найти две вещи: 1) Где находится поле «название», как видно из таблицы, которая показана на странице сведений о доставке в панели администратора, в сочетании объектов и таблиц, которые Мадженто? 2) Как мне получить это значение, чтобы я мог проверить его?


person Mike Levy    schedule 19.02.2013    source источник
comment
Вы можете проверить сетку, откуда взялось это название.   -  person Fabian Blechschmidt    schedule 20.02.2013


Ответы (2)


Так что я, наконец, понял это. Моя конечная цель состояла в том, чтобы я хотел указать переключатель для разных перевозчиков, чтобы у меня всегда была ссылка для отслеживания для каждой отправки. Я знал, что данные, которые я искал, находились в таблице sales_flat_order_shipment и обычно находились в объекте Mage_Sales_Order_Model_Shipment_Track, но не мог понять, как туда попасть из приложения/дизайна/внешнего интерфейса/по умолчанию//шаблона/доставки/отслеживания/всплывающего окна. .phtml. После продолжения с var_dumps и чтения error_logs и просто проб и ошибок. Вот код, который я придумал, который работает.

<?php
    $ship_col = Mage::getResourceModel('sales/order_shipment_track_collection')->addAttributeToFilter('track_number', $track->getTracking())->load();
    foreach($ship_col as $sc){
        $trackMethod = $sc->getTitle();
    }
?>

Мне еще предстоит провести небольшое тестирование, чтобы убедиться, что все работает хорошо при работе с частичными отгрузками и т.п., но это то, что у меня есть для поставок отдельных предметов, и это работает как шарм.

person Mike Levy    schedule 20.02.2013

Это сработало для меня при поиске пользовательского заголовка:

$order         = Mage::getModel('sales/order')->loadByIncrementId($orderId);
$shippingTitle = $order->getTracksCollection()->getFirstItem()->getTitle();
person Christoffer Bubach    schedule 05.09.2014