6

カスタムカテゴリビューで各画像のURLを取得しています。

そのようです:

foreach ($collection as $cat){
    $cur_category = Mage::getModel('catalog/category')->load($cat->getId());
    $_img = $cur_category->getImageUrl();
    //stuff 
}

これで元の画像が得られます。Magentoに組み込まれているサイズ変更機能を使用してサイズを変更したいと思います。しかし、私は初心者であり、そのコードを製品リストページのコードのように機能させる方法を理解できません。

$this->helper('catalog/image')->init($_product, 'small_image')->resize(306);

元のコードを変更/使用して画像のサイズを変更するにはどうすればよいですか?ありがとう!

4

2 に答える 2

17

カテゴリ画像のサイズを変更するための組み込み機能はありません。Varien_Imageただし、クラスは利用できます。ここで私はあなたが必要とするコードの一部を書きました:

foreach ($collection as $_category){
    $_file_name = $_category->getImage();
    $_media_dir = Mage::getBaseDir('media') . DS . 'catalog' . DS . 'category' . DS;
    $cache_dir = $_media_dir . 'cache' . DS;
    if (file_exists($cache_dir . $_file_name)) {
        echo Mage::getBaseUrl('media') . DS . 'catalog' . DS . 'category' . DS . 'cache' . DS . $_file_name;
    } elseif (file_exists($_media_dir . $_file_name)) {
        if (!is_dir($cache_dir)) {
            mkdir($cache_dir);
        }

        $_image = new Varien_Image($_media_dir . $_file_name);
        $_image->constrainOnly(true);
        $_image->keepAspectRatio(true);
        $_image->keepFrame(true);
        $_image->keepTransparency(true);
        $_image->resize(50, 50);
        $_image->save($cache_dir . $_file_name);

        echo Mage::getBaseUrl('media') . DS . 'catalog' . DS . 'category' . DS . 'cache' . DS . $_file_name;
    }
}
于 2012-12-14T07:05:05.587 に答える
3

Mage :: getBaseDir('media')を使用して画像を直接呼び出してブラウザに出力しないでください。そうしないと、ハッカーがサーバーを改ざんするように誘われます。Mage :: getUrl('media')を使用して、次のようにメディアディレクトリへのURLを取得します。

foreach ($categories as $category) {
        $category = Mage::getModel('catalog/category')->load($category->getId());
        $category_name = $this->stripTags($category->getName(), null, true);
        $category_url = $category->getUrl();
        $category_img = $category->getImage();
        $media_dir = Mage::getBaseDir('media').DS.'catalog'.DS.'category'.DS;
        $cache_dir = $media_dir.'cache'.DS;
        $cache_url = Mage::getUrl('media').'catalog'.DS.'category'.DS.'cache'.DS;

        if (file_exists($cache_dir.$category_img)) {
            $category_img_url = $cache_url.$category_img;
        } elseif (file_exists($media_dir.$category_img)) {
            if (!is_dir($cache_dir)) {
                mkdir($cache_dir);
            }

            $image = new Varien_Image($media_dir.$category_img);
            $image->constrainOnly(true);
            $image->keepAspectRatio(true);
            $image->keepFrame(true);
            $image->keepTransparency(true);
            $image->resize(140, 140);
            $image->save($cache_dir.$category_img);

            $category_img_url = $cache_url.$category_img;
        }
}
于 2013-09-10T08:58:52.223 に答える