Como obter o código da loja a partir do código

23

Então, eu tenho o código da loja e gostaria realmente de simplesmente o ID da loja. Idealmente, não quero simplesmente carregar a loja completamente, pois preciso apenas do ID.

Uma idéia que tive foi carregar isso por meio de uma coleção, mas fiquei pensando se havia outra maneira através de um auxiliar ou recurso.

David Manners
fonte
3
Para mim, isso funciona perfeitamente:Mage::app()->getStore($storeCode)->getId();
Hatef 24/07/2015

Respostas:

10

Não testei isso, mas lembro-me de que você pode obter o ID usando o método loadConfigno modeloMage_Core_Model_Store

Depois disso, você pode obter o ID chamando getId()o modelo.

O loadConfigmétodo usa a configuração carregada para recuperar dados da loja

$store = Mage::getConfig()->getNode()->stores->{$code};

O que fornece os seguintes valores

  • identidade
  • código
  • website_id
Sander Mangel
fonte
3
Estranho - para mim (Magento 1.9.0.0) isso retorna NULL. O que funcionou para mim foiMage::getConfig()->getNode('stores')->{$code}
Doug McLean
Ou melhor ainda: Mage :: getConfig () -> getNode ('stores') -> {$ code} -> {'system'} -> {'store'} -> {'id'};
Anshuman
O @dougMcLean obteve o mesmo problema no EE 1.14.1.0, isso aparece quando o cache "config" está ativado - parece um problema de cache do Magento. Sander, você gostaria de editar sua resposta usando Mage :: getConfig () -> getNode ('stores') -> {$ code}, para que a solução funcione para os casos de cache ativado / desativado?
Kate Suykovskaya
Eu tenho multistore, armazenar produtos como posso exibir selecionados usando loja ID, o meu código -> justpaste.it/6fi1f
Gem
21

Mage::getModel('core/store')->load($storeCode, 'code')->getId()

Esta não é a maneira mais simples de fazer?

Zifius
fonte
2
Pode ser mais simples, mas pode não ser o melhor para o desempenho do site carregar o armazenamento completo quando eu só preciso do ID.
David Manners
Ok, faz sentido. Em seguida, SQL direta em um modelo de recurso :)
Zifius
5

Não sei se isso é algo peculiar à 1.9.0.0, mas não consegui Mage::getConfig()->getNode()->stores->{$code}ou Mage::getModel('core/store')->loadConfig($code)( ou que realmente chama Mage::getConfig()->getNode()->stores->{$code} ) retornar qualquer coisa.

O primeiro foi encerrado ... com uma mudança sutil no formulário, isso gera um resultado, embora haja mais informações do que você precisa:

$store = Mage::getConfig()->getNode('stores')->{$code}

O que funcionou para mim, para obter apenas o ID da loja, foi o seguinte:

$storeId = Mage::getConfig()->getNode('stores')->{$code}->system->store->id;

... ainda ineficiente, é claro, carregando todas essas informações de configuração apenas por um pequeno número. Mas ei, isso é Magento para você.

Doug McLean
fonte
4

O seguinte deve funcionar:

<?php echo Mage::getModel('core/store')->loadConfig($code)->getId(); ?>
Mayers
fonte
Obrigado pela resposta, embora isso pareça o mesmo que o anterior :) #
194 David Manners
Sim, notei isso depois que eu postei a minha resposta :)
Mayers