Görev önemsiz. Belirli bir mağaza görünümü için düz bir katalog etkinleştirilmiş ürünlerin listesini almam gerekiyor. En belirgin çözüm şudur:
$collection = Mage::getResourceModel('catalog/product_collection')
->setStore($storeId);
Aslında setStore()
yöntem burada bir fark yaratmıyor, çünkü _initSelect()
yöntemin Mage_Catalog_Model_Resource_Product_Collection
mağaza kimliğine dayanarak düz tablonun adını alan adı verildi. Mağaza kimliği henüz ayarlanmadığından, geçerli mağaza kimliğini alır.
Dolayısıyla, bariz geçici çözüm, bir model almadan önce mevcut bir mağaza kimliği belirlemek olacaktır.
Mage::app()->setCurrentStore($storeId);
$collection = Mage::getResourceModel('catalog/product_collection');
Çalışacak. Ancak sadece bir kez koleksiyon almanız gerekiyorsa. Döngüde bir koleksiyona ihtiyacınız varsa veya sadece arka arkaya iki koleksiyona ihtiyacınız varsa, onlar için belirli bir mağaza ayarlayamazsınız.
Bunun nedeni, Mage_Catalog_Model_Resource_Product_Flat
sınıfın kendi _storeId
özelliğine sahip olması ve yapıcıda geçerli mağaza kimliğine ayarlanmış olmasıdır. Bu yüzden ilk kez ayarlanacak. Sonra bir nedenden ötürü (cennet bir tane olduğunu umuyorum) Mage_Eav_Model_Entity_Collection_Abstract::_init
her bir kaynak modülünde tekil olarak alınır. Yani 2. çağrı için yapıcı yok.
Bunların hepsi o kadar yanlış görünüyor ki, yanlış olduğumdan ve başka bir Magento böceği (ya da iki) olmadığından eminim. Umarım birileri ışık tutabilir.