2010-11-04 51 views
0

我最近在Magento開發者指南的幫助下,在Magento 1.3.2中創建了一個新的發貨模塊。我的模塊工作正常,但是我似乎無法正常工作,在管理區域內創建貨件時,如何獲得它的功能,以便成爲運營商下拉列表的一部分。magento shipping

一旦我在這個下拉列表中有我的承運人,我將需要應用附加功能,以便如果我的承運人被選中,當發貨順序被放置時,它會完成一大堆事情。

所以事情,我需要制定出有:

  1. 怎樣才能讓我的貨件選項,在下拉列表
  2. 我必須擴展哪些類以添加功能或我可以簡單地增加它的載體我的貨運模式?

回答

0

您是否在app/code/local/yournamespace/yourmodule/Blocks/Adminhtml以及app/design/adminhtml/default/default/layout的佈局xml文件中添加了必要的塊?

+0

我不知道。你有什麼樣的樣子?當我們說話時我正在四處尋找。我會發布,如果我發現任何東西 – 2010-11-07 21:26:55

+0

也許最好的選擇是找到一個Magento Connect上的運輸模塊的社區擴展,並將其用作模型。 – 2010-11-07 22:53:53

+0

感謝您的全力幫助。非常感謝:) – 2010-11-07 23:36:38

3

我發現了這個問題。

總體問題是我沒有設置方法isTrackingAvailable()(在我的發貨模型中)返回true。

對於任何人想知道如何解決這個問題。

我查看了所有與shipping相關的模板文件。有一次,我發現這個文件,我發現那裏的下拉列表中創建:

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

看到是正在使用$此調用之後。我做了一個echo 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()。

在這個函數中,它從db的core_config_data表中返回了所有的載體。

所以跳回到getCarriers()函數..我們現在有所有的載體。再往下看,我可以看到有一個IF語句被詢問是否載波有函數isTrackingAvailable()在返回載波之前返回true。

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

如果有人有任何問題..給我發電子郵件。 [email protected](請注意,我仍在學習自己,但我會盡我所能回答任何問題)

+0

感謝您的更新馬克。順便說一句,你可以打開管理界面的模板和塊提示,所以你不必做'echo get_class($ this)'。在'core_config_data'中,插入一行scope = websites,scope_id = 0,value = 1和path ='dev/debug/template_hints'的行。重複scope = websites,scope_id = 0,value = 1和path ='dev/debug/template_hints_blocks'。或者,從Magento Connect安裝HM_DeveloperToolbar並點擊便捷鏈接! – 2010-11-09 00:19:57