Magento 2でデフォルトの製品画像サイズを変更するにはどうすればよいですか?


25

Magentoの1.xxの、我々は管理者に画像のサムネイルデフォルトを変更できます。

システム>設定>カタログ

しかし、magento 2.0では、これらの値を変更するにはどうすればよいですか?これを許可する設定は見つかりませんか?問題は、私の製品画像が大きな白い縞模様で表示されていることであり、これを防止したいのです。

回答:


39

Magentoは、view.xmlアプリケーションのテーマレベルで維持されるというファイルを使用します。

たとえば、デフォルトのテーマlumaを使用している場合は、view.xml下にあるはずですvendor/magento/theme-frontend-luma/etc/view.xml

このファイルでは、<images/>ノード内に<media>ノードがあります。

<view xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/view.xsd">
    <media>
        <images module="Magento_Catalog">
            <image id="bundled_product_customization_page" type="thumbnail">
                <width>140</width>
                <height>140</height>
            </image>
            <image id="cart_cross_sell_products" type="thumbnail">
                <width>200</width>
                <height>248</height>
            </image>
            <image id="cart_page_product_thumbnail" type="small_image">
                <width>165</width>
                <height>165</height>
            </image>
            ........
        </images>
    </media>
    ......
</view>

ここで、画像の寸法は<image/>ノードの下で維持されます。

ノードのid属性値は<image/>コードベースで参照されます。

例えば:

<image id="related_products_list" type="small_image">
    <width>152</width>
    <height>190</height>
</image>

id値はビューファイルで使用されます vendor/magento/module-catalog/view/frontend/templates/product/list/items.phtml

case 'related':
    /** @var \Magento\Catalog\Block\Product\ProductList\Related $block */
    if ($exist = $block->getItems()->getSize()) {
        $type = 'related';
        $class = $type;

        $image = 'related_products_list';
        $title = __('Related Products');
        $items = $block->getItems();
        $limit = 0;
        $shuffle = 0;
        $canItemsAddToCart = $block->canItemsAddToCart();

        $showWishlist = true;
        $showCompare = true;
        $showCart = false;
        $templateType = null;
        $description = false;
    }
break;

ここで、$imageは画像サイズの値を参照しています:

<?php echo $block->getImage($_item, $image)->toHtml(); ?>

テーマにがない場合、ファイルview.xmlがあるフォールバックテーマ(親テーマ)を使用している可能性がありview.xmlます。

<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd">
    <title>Magento Luma</title>
    <parent>Magento/blank</parent>
    .....
</theme>

これMagento/blankが親テーマです。

view.xmlファイルの値を変更/上書きする場合は、ファイル全体view.xmlをカスタムテーマに完全にコピーして、値を変更する必要があります。

view.xmlノード値フォールバックシステムがないため、ノードの値がカスタムテーマに存在しない場合、親テーマのview.xml値にフォールバックしview.xml ないため、ファイル全体をコピーする必要があります。

値の変更が完了したら、実行する必要があります

php bin/magento catalog:images:resize

これにより、新しい画像サイズが再生成されます。


ありがとう。これがどこで生成されているのか、私は考えもしなかったでしょう。+1
アンディジョーンズ

5
これがいかに過度に設計されていて、まだドキュメントに欠けているかを愛するようになりました。これらの名前を理解するために、コードを調べたり、dbスキーマを調べたりする必要があります。
ミゲルフェリペギレンカロ

答えてくれてありがとう、しかし、私は疲れて、最後のセットアップの実行php bin/magento catalog:images:resize が必要ないことを見つけました(それは多くの時間を要します)、私たちはキャッシュをクリアする必要があり、それから動作します。
キーシャン

@KeyShang正解です。サイズ変更された画像は、まだ存在しない場合は実行時に生成されます。しかし、それは生産上のパフォーマンスで助けとしてこのコマンドを実行するお勧めします
Atishゴスワミ

6

Magento製品は、vendor / magento / theme-frontend-luma / etc / view.xmlのパスで画像サイズの寸法にview.xmlファイルを使用します

ここで、ノード内にノードがあります。

ファイルview.xmlをコピーしてテーマパスに配置し、app / design / frontend / MyThemePackage / MyTheme / etc / view.xmlのように変更します。

<view xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/view.xsd">
<media>
    <images module="Magento_Catalog">
        ........
        <image id="category_page_list" type="small_image">
             <width>270</width>
             <height>450</height>
        </image>
        ........
    </images>
</media>
......
</view>

キャッシュをクリアし、カテゴリリストページをロードします。変更が反映されます。


拡張パス「vendor / magento / theme-frontend-luma / etc / view.xml」は、デフォルトのテーマパッケージに応じて「vendor / magento / theme-frontend-blank / etc / view.xml」にもなります。あなたが使う。
ダイノマイト

製品詳細ページでサムネイル画像のサイズを変更するには?
ジャファーピンジャー18年

1

次のように、テンプレートファイルで画像の寸法を直接指定することもできます。

<?php
/**
* @var $block \Magento\Catalog\Block\Product\Widget\NewWidget
*/
$image = 'new_products_content_widget_grid';
$items = $block->getProductCollection()->getItems();
$width = 100;
$height = 100;
foreach ($items as $_item) {
    $resizedUrl = $block->resizeImage($_item, $image , $width, $height)->getUrl();
    echo '<img src="'.$resizedUrl .'" alt="alt text" />';
}

その他のサンプルはこちら-https://nwdthemes.com/2017/12/19/magento-2-product-image-size/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.