Récupérer par programme la liste de toutes les méthodes d'expédition
Je suis en train d'écrire un quick-and-dirty module de restreindre les méthodes d'expédition sur la base de produits dans le panier. Par exemple, si le client ajoute de la nourriture, je ne veux expédition durant la nuit des méthodes pour être sélectionné. Certaines des extensions commerciales sont simplement surpuissant et ils ont bien plus de fonctionnalités dont j'ai besoin.
Chaque produit aura une liste déroulante attribut appelé "l'Expédition de la Classe". L'administrateur sera en mesure de créer l'Expédition de ces Classes dans le backend. Ils vont lui donner un nom et choisir les méthodes sont autorisés.
Quand vient le temps d'obtenir l'expédition de devis, nous allons seulement montrer a permis à des méthodes basées sur l'Expédition de Classe.
Ma principale question est: comment puis-je récupérer une liste de toutes les méthodes d'expédition pour l'administrateur de sélectionner lors de la création de ces classes d'expédition?
Et comme une question secondaire, est-il judicieux de faire le filtrage des méthodes autorisées à l'intérieur de Mage_Sales_Model_Quote_Address::requestShippingRates? (Je vais être substitution de cette méthode de cours)
EDIT:
Grâce à @BrianVPS, j'ai été en mesure de venir avec le code ci-dessous. Il affiche toutes les méthodes individuelles auprès des transporteurs à l'aide de optgroups. Fonctionne très bien avec multiselect! Je ne pense pas qu'il vérifie si les méthodes sont bien activé.
public function getAllShippingMethods()
{
$methods = Mage::getSingleton('shipping/config')->getActiveCarriers();
$options = array();
foreach($methods as $_ccode => $_carrier)
{
$_methodOptions = array();
if($_methods = $_carrier->getAllowedMethods())
{
foreach($_methods as $_mcode => $_method)
{
$_code = $_ccode . '_' . $_mcode;
$_methodOptions[] = array('value' => $_code, 'label' => $_method);
}
if(!$_title = Mage::getStoreConfig("carriers/$_ccode/title"))
$_title = $_ccode;
$options[] = array('value' => $_methodOptions, 'label' => $_title);
}
}
return $options;
}
source d'informationauteur Colin O'Dell
Vous devez vous connecter pour publier un commentaire.
Ici est un bloc de code que j'ai dans un source_model pour une expédition à l'extension que j'ai écrit. J'espère que c'est ce que vous cherchez.
...quant à votre deuxième question, pas sûr....
Prenant @BrianVPS réponse, je suis en utilisant le segment de code ci-dessous (avec la structure représentée) pour les aider dans ma situation, si je voulais un simple humain étiquette du code de la navigation.
J'ai créé une fonction pour cela par les réponses déjà fournies. Cela crée une option de groupe de toutes les méthodes d'expédition:
La
$_methods
argument est un objet à partir de Magento:Donc, nous pouvons appeler la fonction et passer le
$_methods
objet comme suit:Espère que ça aide quelqu'un d'autre.