3

親カテゴリIDごとにサブカテゴリのリストを表示していて、カテゴリ名の代わりにカテゴリ画像を表示したいと考えています。

これが私がこれまでに持っているものです...

<div id="menu_brands">
<div class="brand_head">
    <h3><?php echo $this->__('Browse By Brand') ?></h3>
</div>
<div class="brand_list">
    <?php
        $cats = Mage::getModel('catalog/category')->load(6)->getChildren();
        $catIds = explode(',',$cats);

        $categories = array();
            foreach($catIds as $catId) {
                $category = Mage::getModel('catalog/category')->load($catId); 
                $categories[$category->getName()] = $category->getUrl();
                $img = $category->getImageUrl(); //I suspect this line is wrong
        }

        ksort($categories, SORT_STRING);
    ?>

        <ul>
            <?php foreach($categories as $name => $url): ?>
                <li>
                    <!--<a href="<?php echo $url; ?>"><?php echo $name; ?></a>-->
                    <a href="<?php echo $url; ?>" title="<?php echo $name; ?>">
                        <img src="<?php echo $img; ?>" width="auto" alt="<?php echo $name; ?>" /> <!--I suspect this line is wrong-->
                    </a>
                </li>
            <?php endforeach; ?>
        </ul>
</div>
</div>

カテゴリ名の代わりに画像を表示する方法を無数に試しましたが、画像が表示されないようです。現在、上記の場合、出力は空の'img src'であるため、私が試していることには明らかにエラーがあります(そして、おそらく私が求めていることを達成するためのより良い方法です)。

誰かが問題が何であるかを親切に指摘してもらえますか?

関連性がある場合は、後でカテゴリ画像をグリッド形式(1行あたり3または4)で表示する予定です。

よろしくお願いします。

4

3 に答える 3

8

zigojackoによるソリューションは、モデルをループで個別にロードするため、理想的ではありません。これは適切に拡張できず、多くのカテゴリでデータベースが破壊されます。理想的には、画像を子コレクションに追加します。

より高速な解決策は、B00MERのようなIDフィルターを使用して画像属性をコレクションに追加することです。

// Gets all sub categories of parent category 'Brands'
$parent = Mage::getModel('catalog/category')->load(6);

// Create category collection for children
$childrenCollection = $parent->getCollection();
// Only get child categories of parent cat
$childrenCollection->addIdFilter($parent->getChildren());
// Only get active categories
$childrenCollection->addAttributeToFilter('is_active', 1);

// Add base attributes
$childrenCollection->addAttributeToSelect('url_key')
        ->addAttributeToSelect('name')
        ->addAttributeToSelect('all_children')
        ->addAttributeToSelect('is_anchor')
        ->setOrder('position', Varien_Db_Select::SQL_ASC)
        ->joinUrlRewrite();

// ADD IMAGE ATTRIBUTE
$childrenCollection->addAttributeToSelect('image');

?>
<ul>
    <?php foreach($childrenCollection as $cat): ?>
        <li>
            <a href="<?php echo $cat->getURL(); ?>" title="<?php echo $cat->getName(); ?>">
                <img class="cat-image" src="<?php echo $cat->getImageUrl(); ?>" />
            </a>
        </li>   
    <?php endforeach; ?>
</ul>
于 2014-09-23T11:18:02.837 に答える
4

私たちはこれを自分たちで解決することができました-以下の修正を参照してください。

<?php
    //gets all sub categories of parent category 'Brands'
    $cats = Mage::getModel('catalog/category')->load(6)->getChildren();
    $catIds = explode(',',$cats);

    $categories = array();
    foreach($catIds as $catId) {
        $category = Mage::getModel('catalog/category')->load($catId); 
        $categories[$category->getName()] = array(
            'url' => $category->getUrl(),
            'img' => $category->getImageUrl()
        );
    }

    ksort($categories, SORT_STRING);
?>
    <ul>
        <?php foreach($categories as $name => $data): ?>
            <li>
                <a href="<?php echo $data['url']; ?>" title="<?php echo $name; ?>">
                    <img class="cat-image" src="<?php echo $data['img']; ?>" />
                </a>
            </li>   
        <?php endforeach; ?>
    </ul>

驚いたことに、これは比較的単純なMagentoの問題であるため、これ以上のサポートは得られませんでした。しかし、あなたの答えをありがとうB00MER。

于 2012-04-10T15:05:30.193 に答える
2

$img = $category->getImageUrl();あなたの代わりにこの方法を試してみてください$img = getCategoryImage($category);

function getCategoryImage($category) {
    $categoryCollection = Mage::getModel('catalog/category')->setStoreId(Mage::app()->getStore()->getId())->getCollection()->addAttributeToSelect('image')->addIdFilter($category->getId());

    foreach($categoryCollection as $category) {
        return $category->getImageUrl();
    }
}

(現在は機能していません)リファレンス: http: //www.magentocommerce.com/boards/viewthread/5026/P45/

于 2012-04-04T14:49:59.470 に答える