0

私は奇妙ですが、おそらく簡単に解決できる状況にあります。

ブロックに次のコードがあります。

<div class="home-categories">
    <?php $_helper = Mage::helper('catalog/category') ?>
    <?php $_categories = $_helper->getStoreCategories() ?>
    <?php foreach($_categories as $_category): ?>
        <a href="<?php echo $_helper->getCategoryUrl($_category) ?>">
            <img src="<?php echo $_category->getStoreIds(); ?>"/>
            <div class="category-title">
                <p><?php echo $_category->getName(); ?></p>
            </div>
        </a>
      <?php endforeach; ?>
</div>

結果として得られる HTML は、img src 以外のすべての正しい詳細を返します。私はこれを正しくやっていますか?

4

2 に答える 2

4

画像の URL を取得していない理由は、デフォルトでは、Magento モデルにすべての属性がロードされていないためです。これは、必要な属性のみをロードし、DB クエリの費用がかからないようにするためです。以下はトリックを行います。

$_helper = Mage::helper('catalog/category');
$_categories = $_helper->getStoreCategories(false, true, false);
$_categories->addAttributeToSelect('image');

getStoreCategories のメソッド定義を見てみましょう。

getStoreCategories($sorted=false, $asCollection=false, $toLoad=true)

まだロードされていないコレクションを返すメソッドが必要なため、false、true、false 引数が必要です。画像属性もロード​​されていることを確認したいカテゴリをループする前に、これが addAttributeToSelect('image') 呼び出しの目的です。

これは $_category->load( $_category->getId()); よりも効率的でした。エンティティ全体をロードしていないためです。カテゴリをループすると、次のことができます。画像タグに画像 URL が含まれている必要があります。

<img src="<?php echo $_category->getImageUrl(); ?>"/>
于 2013-01-25T04:29:22.810 に答える
1

これは、読み込まれたカテゴリ コレクションにカテゴリ属性が含まれておらず、基本的なカテゴリ データのみが含まれているためです。それらを自分でロードするか、ロードする前にコレクションに追加する必要があります(ヘルパー関数を見ていないので、呼び出し後にそれを実行できるかどうかはわかりません...)。

最も簡単な解決策は、ラインを交換することです

<img src="<?php echo $_category->getStoreIds(); ?>"/>

<img src="<?php $_category->load( $_category->getId()); echo  $_category->getImageUrl(); ?>"/>
于 2013-01-24T23:57:51.787 に答える