ブルーシュ

IT技術の勉強記録

ホーム > Tips > Magento

magentoのcollection系の小技!

Magentoの気持ちが少しずつ分かってきた今日この頃。
ドキュメントが少ないし英語だから大変。


商品一覧を表示するのに重~いなぁと思っていたけど、ただ単に商品情報を取得したいときは、Mage::getModel(‘catalog/product’)->getCollection()して$collection->load()するより、こちらのほうがいいそうです

$collection = Mage::getResourceModel('catalog/product_collection')
	->addAttributeToSelect("*");

foreach ($collection as $c){
	echo($c->getData("指定のアトリビュート"));
}

これだけ!


じゃあ、あとは最近知った小技を紹介します。

1. 生成されるMySQLクエリを確認したいとき

echo $_productCollection->getSelect()->__toString();


2. アトリビュート(商品属性)のオプションのadmin valueを取得したいとき

※adminとは、全共通ストアのこと。通常は表示しているストアの言語でしか取得できず、不便😢

$attributeDetails = Mage::getSingleton("eav/config")
	->getAttribute("catalog_product", 'アトリビュートのコード');
$admin_label = $attributeDetails->setStoreId(0)
	->getSource()->getOptionText('アトリビュートのオプション値');


3. アトリビュートのコードによってadminのオプション一覧を取得

$collection = Mage::getModel('eav/entity_attribute')
	->loadByCode($entity_type_id, "アトリビュートのコード")->setStoreId(0)
	->getSource()->getAllOptions();
$options= array();
foreach ($collection as $c) {
	$options[$c["value"]] = $c["label"];
}


4. 指定したアトリビュートだけを取得するとき
addAttributeToSelect()だけではentity_idなどの基本情報も取得されてしまう。

$collection = Mage::getResourceModel('catalog/product_collection')
	->addAttributeToSelect("指定のアトリビュート")
	->addFieldToFilter("指定のアトリビュート",array('notnull' => true))
	->distinct(true);

$collection->getSelect()->reset(Zend_Db_Select::COLUMNS);
$collection->getSelect()->columns("指定のアトリビュート");

foreach ($collection as $c){
	echo($c->getData("指定のアトリビュート"));
}


ちなみにaddAttributeToFilter()addFieldToFilter()の違いは、EAVかどうか。EAVならaddAttributeToFilter()

magentoのcollection系の小技! #Magento #ウェブデザイン #ウェブ制作 #WEBデザイン #WEB制作

作者の似顔絵

プログラミング歴19年🌈調べたことをブログにまとめていきます。
記事の感想・質問・間違い指摘などはツイッター ( @blooshcompany ) へお願いします。

秋田のウェブ活用をサポート

ホームページを自作してコスト削減!秋田の事業者は無料で利用できます。
ネットショップ・WordPress・SEO対策などさまざまなお悩みをサポートします。

その他、フロントエンド案件のご依頼はインフォメーション

秋田市 レンタル着物 笹パンダ堂のバナーリンク