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.


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

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?


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.


4

Lo siguiente debería funcionar:

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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.