Cómo obtener la identificación de la tienda del código

23

Así que tengo el código de la tienda y realmente me gustaría simplemente la identificación de la tienda. Idealmente, no quiero simplemente cargar la tienda por completo, ya que solo necesito la identificación.

Una idea que tuve fue cargar esto a través de una colección, pero me preguntaba si había otra forma a través de un ayudante o recurso.

David modales
fuente
3
Para mí esto funciona perfectamente:Mage::app()->getStore($storeCode)->getId();
Odio

Respuestas:

10

No he probado esto, pero creo recordar que puede obtener la identificación utilizando el método loadConfigen el modeloMage_Core_Model_Store

Después de eso, puede obtener la identificación llamando getId()al modelo.

El loadConfigmétodo utiliza la configuración cargada para recuperar datos de la tienda.

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

Que te da los siguientes valores

  • carné de identidad
  • código
  • website_id
Sander Mangel
fuente
3
Extraño: para mí (Magento 1.9.0.0) esto devuelve NULL. Lo que funcionó para mí fueMage::getConfig()->getNode('stores')->{$code}
Doug McLean
O incluso mejor: Mage :: getConfig () -> getNode ('stores') -> {$ code} -> {'system'} -> {'store'} -> {'id'};
anshuman
@dougMcLean tiene el mismo problema en EE 1.14.1.0, esto aparece cuando la caché "config" está habilitada - parece un problema de caché de Magento. Sander, ¿sería tan amable de editar su respuesta usando Mage :: getConfig () -> getNode ('stores') -> {$ code}, por lo que la solución funciona para ambos casos de caché habilitado / deshabilitado?
Kate Suykovskaya
Tengo varios niveles, ¿cómo puedo mostrar los productos de la tienda seleccionados usando la identificación de la tienda, mi código -> justpaste.it/6fi1f
Gema
21

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

¿No es esta la forma más sencilla de hacerlo?

Zifius
fuente
2
Puede ser más simple, pero podría no ser el mejor para el rendimiento del sitio para cargar la tienda completa cuando solo necesito la identificación.
David Manners
Ok, tiene sentido. A continuación, SQL directa en un modelo de recursos :)
Zifius
5

No sé si esto es algo que es peculiar de 1.9.0.0, pero no pude obtener ninguno ( Mage::getConfig()->getNode()->stores->{$code}o lo Mage::getModel('core/store')->loadConfig($code)que de hecho llama Mage::getConfig()->getNode()->stores->{$code} ) para devolver nada.

El primero fue cercano ... con un cambio sutil en la forma, esto obtiene un resultado, aunque es mucho más información de la que necesita:

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

Lo que funcionó para mí, para obtener solo la identificación de la tienda, fue esto:

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

... sigue siendo ineficiente, por supuesto, cargando toda esa información de configuración solo por un pequeño número. Pero bueno, ese es Magento para ti.

Doug McLean
fuente
4

Lo siguiente debería funcionar:

<?php echo Mage::getModel('core/store')->loadConfig($code)->getId(); ?>
Mayers
fuente
Gracias por la respuesta, aunque parece ser la misma que la anterior :)
David Manners
Sí, lo noté después de que publiqué mi respuesta :)
Mayers