0

私のフロント ページには、 という名前のカスタム製品イメージで 2 つの最新製品を取得するブロックがありますimage_feature_front_right

このコードをクエリとして使用します。

$_helper = $this->helper('catalog/output');
$_productCollection = Mage::getModel("catalog/product")->getCollection();
$_productCollection->addAttributeToSelect('*');
$_productCollection->addAttributeToFilter("image_feature_front_right", array("notnull" => 1));
$_productCollection->addAttributeToFilter("image_feature_front_right", array("neq" => 'no_selection'));
$_productCollection->addAttributeToSort('updated_at', 'DESC');
$_productCollection->setPageSize(2);

私は得ることができます:

  • 画像:echo $this->helper('catalog/image')->init($_product, 'image_feature_front_right')->directResize(230,315,4)
  • 製品の URL:echo $_product->getProductUrl()
  • 製品名:$this->stripTags($_product->getName(), null, true)

入手できないのは、カスタム画像ラベルだけです。試してみecho $this->getImageLabel($_product, 'image_feature_front_right')ましたが、何もしないようです。

誰かが私を正しい方向に向けることができますか?

ありがとう!

トレ

4

1 に答える 1

3

これはある種のマジェントのバグだと思います。問題は、Magento コアが custom_image_label 属性を設定していないことです。デフォルトの組み込み画像[image、small_image、thumbnail_image]の場合、これらの属性を設定します-したがって、次のようなことができます:

$_product->getData('small_image_label');

あなたがそれを見ると、2番目のパラメータとして渡したものにMage_Catalog_Block_Product_Abstract::getImageLabel()「_label」を追加して呼び出すだけです。$mediaAttributeCode$_product->getData()

お電話$_product->getData('media_gallery'); いただければ、カスタム イメージ ラベルが利用可能であることがわかります。配列にネストされているだけです。したがって、この関数を使用します。

function getImageLabel($_product, $key) {
    $gallery = $_product->getData('media_gallery');
    $file = $_product->getData($key);
    if ($file && $gallery && array_key_exists('images', $gallery)) {    
        foreach ($gallery['images'] as $image) {
            if ($image['file'] == $file)
                return $image['label'];
        }
    }
    return '';
}

Magento コア コードを拡張するのが賢明ですMage_Catalog_Block_Product_Abstractが (理想的には、Magento で Abstract クラスをオーバーライドできるとは思いません)、簡単なハックが必要な場合は、この関数を phtml ファイルに貼り付けてから、次のように呼び出します。

<?php echo getImageLabel($_product, 'image_feature_front_right')?>
于 2012-09-08T00:56:20.447 に答える