2010-11-04 4 views
0

J'ai récemment créé un nouveau module d'expédition dans Magento 1.3.2 à l'aide du guide des développeurs Magento. Mon module fonctionne correctement, mais je ne peux pas sembler travailler pour obtenir la fonctionnalité pour qu'il devienne une partie de la liste déroulante des transporteurs lorsqu'un envoi est créé dans la zone d'administration. Une fois que j'ai mon transporteur dans cette liste déroulante, je vais devoir appliquer des fonctionnalités supplémentaires de sorte que si mon transporteur est sélectionné lors de la commande d'expédition, il fait tout un tas de choses.magento shipping

donc des choses que je dois travailler sont:

  1. Comment faire mon option envoi d'un support dans la liste déroulante
  2. Quelle classe dois-je prolonger pour ajouter la fonctionnalité ou puis-je ajouter simplement à mon modèle d'expédition?

Répondre

0

Avez-vous ajouté les blocs nécessaires sous app/code/local/yournamespace/yourmodule/Blocks/Adminhtml et un fichier XML de mise en page dans app/design/adminhtml/default/default/layout?

+0

Je ne sais pas. Avez-vous un échantillon de ce à quoi cela devrait ressembler? Je cherche autour pendant que nous parlons. Je vais poster si je trouve quelque chose –

+0

Probablement la meilleure option est de trouver une extension de la communauté pour un module d'expédition sur Magento Connect et l'utiliser comme un modèle. –

+0

Merci pour votre aide. Très apprécié :) –

3

J'ai trouvé le problème.

Le problème global était que je n'avais pas défini la méthode isTrackingAvailable() (dans mon modèle d'expédition) pour renvoyer true.

Pour tous ceux qui se demandent comment cela a fonctionné. J'ai regardé tous les fichiers modèles liés à l'expédition. Une fois que j'ai trouvé le fichier, j'ai trouvé où la liste déroulante a été créé:

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

Après avoir vu qui a été appelé en utilisant cette $. J'ai fait un echo get_class ($ this) pour trouver le nom de la classe qui l'appelait, qui était Mage_Adminhtml_Block_Sales_Order_Shipment_Create_Tracking.

Dans là est où j'ai trouvé la fonction getCarriers().

Là, il rassemblait toutes les porteuses en créant un objet appelé Mage_Shipping_Model_Config.

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

et d'appeler sa fonction getAllCarriers().

Dans cette fonction, elle renvoyait toutes les porteuses de la table core_config_data dans la base de données. Donc, en revenant à la fonction getCarriers(), nous avons maintenant tous les opérateurs. Un peu plus bas, je pouvais voir qu'il y avait une instruction IF qui demandait que le transporteur avait la fonction isTrackingAvailable() retournant true avant de renvoyer le transporteur.

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

Si vous avez des questions, envoyez-moi un courriel. [email protected] (attention, je m'apprends encore mais je vais répondre à toutes les questions du mieux que je peux)

+0

Merci pour la mise à jour Mark.En passant, vous pouvez activer les indicateurs Template et Block pour l'interface Admin, vous n'avez donc pas besoin de faire le 'echo get_class ($ this)'. Dans 'core_config_data', insérez une ligne avec scope = sites, scope_id = 0, value = 1 et path = 'dev/debug/template_hints'. Répétez pour scope = sites, scope_id = 0, value = 1 et path = 'dev/debug/template_hints_blocks'. Sinon, installez HM_DeveloperToolbar à partir de Magento Connect et cliquez sur le lien approprié! –