Cara mendapatkan id toko dari kode

23

Jadi saya punya kode toko dan saya hanya ingin id toko saja. Idealnya saya tidak ingin hanya memuat toko sepenuhnya karena saya hanya perlu id.

Satu ide yang saya miliki adalah memuat ini melalui koleksi tetapi saya bertanya-tanya apakah ada cara lain melalui pembantu atau sumber daya.

David Manners
sumber
3
Bagi saya ini bekerja dengan sempurna:Mage::app()->getStore($storeCode)->getId();
Hatef

Jawaban:

10

Belum menguji ini, tetapi saya ingat Anda bisa mendapatkan ID dengan menggunakan metode loadConfigdalam modelMage_Core_Model_Store

Setelah itu Anda bisa mendapatkan ID dengan memanggil getId()model.

The loadConfigMetode menggunakan konfigurasi dimuat untuk mengambil data store

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

Yang memberi Anda nilai-nilai berikut

  • id
  • kode
  • situs web_id
Sander Mangel
sumber
3
Strange - for me (Magento 1.9.0.0) ini mengembalikan NULL. Apa yang berhasil bagi saya adalahMage::getConfig()->getNode('stores')->{$code}
Doug McLean
Atau bahkan lebih baik: Mage :: getConfig () -> getNode ('stores') -> {$ code} -> {'system'} -> {'store'} -> {'id'};
anshuman
@dougMcLean mendapatkan masalah yang sama pada EE 1.14.1.0, ini muncul ketika cache "config" diaktifkan - sepertinya masalah cache Magento. Sander, bisakah Anda mengedit jawaban menggunakan Mage :: getConfig () -> getNode ('stores') -> {$ code}, sehingga solusinya bekerja untuk kedua kasus cache yang diaktifkan / dinonaktifkan?
Kate Suykovskaya
Saya memiliki multistore, bagaimana saya bisa menampilkan produk toko yang dipilih menggunakan id toko, kode saya -> justpaste.it/6fi1f
Permata
21

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

Bukankah ini cara paling sederhana untuk dilakukan?

Zifius
sumber
2
Ini mungkin paling sederhana tetapi mungkin bukan yang terbaik untuk kinerja situs untuk memuat seluruh toko ketika saya hanya membutuhkan id.
David Manners
Ok, masuk akal. Kemudian mengarahkan SQL dalam model sumber daya :)
Zifius
5

Saya tidak tahu apakah ini sesuatu yang khas 1.9.0.0 tapi saya tidak bisa mendapatkan keduanya Mage::getConfig()->getNode()->stores->{$code}atau Mage::getModel('core/store')->loadConfig($code)(yang sebenarnya disebut Mage::getConfig()->getNode()->stores->{$code} ) untuk mengembalikan apa pun.

Yang pertama dekat ... dengan perubahan bentuk yang halus, ini mendapatkan hasil, meskipun ini lebih banyak info daripada yang Anda butuhkan:

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

Apa yang berhasil bagi saya, hanya untuk mendapatkan id toko, adalah ini:

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

... masih tidak efisien, tentu saja, memuat semua informasi konfigurasi hanya untuk satu nomor kecil. Tapi hei, itu Magento untukmu.

Doug McLean
sumber
4

Berikut ini harus bekerja:

<?php echo Mage::getModel('core/store')->loadConfig($code)->getId(); ?>
Mayers
sumber
Terima kasih atas jawabannya, meskipun ini tampaknya sama dengan yang sebelumnya :)
David Manners
Ya, perhatikan setelah saya memposting respons saya :)
Mayers