magento доставка - PullRequest
       5

magento доставка

0 голосов
/ 04 ноября 2010

Недавно я создал новый модуль доставки в Magento 1.3.2 с помощью руководства для разработчиков Magento.Мой модуль работает правильно, но я не могу понять, как заставить его функционировать, чтобы он стал отдельным из списка поставщиков услуг, когда в пределах административной области создается пересылка.

Как только у меня будет свой оператор в этомВ раскрывающемся списке мне потребуется применить дополнительные функциональные возможности, чтобы, если мой перевозчик был выбран при размещении заказа на отправку, он выполнял целую кучу вещей.

Итак, мне нужно решить следующие задачи:

  1. Как сделать мой вариант доставки перевозчиком в раскрывающемся списке
  2. Какой класс я должен расширить, чтобы добавить функциональность, или я могу просто добавить его в свою модель отгрузки?

Ответы [ 2 ]

3 голосов
/ 08 ноября 2010

Я нашел проблему.

Общая проблема заключалась в том, что я не установил метод isTrackingAvailable () (в моей модели доставки), чтобы он возвращал значение true.

Для тех, кто интересуется, как это решить.

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

 <?php foreach ($this->getCarriers() as $_code=>$_name): ?>
                    <option value="<?php echo $_code ?>"><?php echo $_name; ?></option>
                    <?php endforeach; ?>

Увидев, что вызывается с помощью $ this. Я сделал эхо get_class ($ this), чтобы найти имя класса, которое его вызывало, которое было Mage_Adminhtml_Block_Sales_Order_Shipment_Create_Tracking.

Там я нашел функцию getCarriers ().

Там он собирал всех носителей, создавая объект с именем Mage_Shipping_Model_Config.

$carrierInstances = Mage::getSingleton('shipping/config')->getAllCarriers(
            $this->getShipment()->getStoreId()
);

и вызов его функции getAllCarriers ().

Внутри этой функции она вернула все несущие из таблицы core_config_data в БД.

Итак, вернемся к функции getCarriers (). Теперь у нас есть все носители. Чуть дальше я увидел, что есть оператор IF, который спрашивает, имеет ли перевозчик функцию isTrackingAvailable (), возвращающую true, прежде чем он вернет перевозчика.

    foreach ($carrierInstances as $code => $carrier) {
        if ($carrier->isTrackingAvailable()) {
            $carriers[$code] = $carrier->getConfigData('title');
        }
    }

Если у кого-то есть вопросы ... напишите мне. mark@mbwebstudios.com (заметьте, я все еще учусь, но отвечу на любые вопросы как можно лучше)

0 голосов
/ 05 ноября 2010

Вы добавили необходимые блоки в app/code/local/yournamespace/yourmodule/Blocks/Adminhtml и XML-файл макета в app/design/adminhtml/default/default/layout?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...