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.


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

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?


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ê.


4

O seguinte deve funcionar:

<?php echo Mage::getModel('core/store')->loadConfig($code)->getId(); ?>

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.