Magento 2 Измените изображение продукта на миникарте с миниатюры на обычное изображение
После редактирования мини-карты в течение нескольких дней я заметил, что изображения являются уменьшенными версиями изображений, которые вы увидите на страницах товаров. Это означает, что по мере того, как я увеличиваю их, чтобы они соответствовали большему контейнеру, они теряют качество.
Файл, содержащий ссылку на изображение, находится в пределах Magento_Catalog/web/template/product/image_with_borders.html
, хотя src изображения задан следующим образом:
data-bind="attr: {src: src, alt: alt}
Я действительно не знаю, как бы я изменил src изображения, но я полагаю, что есть другой файл где-то, где это упоминается, но я не могу его найти. Любая помощь приветствуется.
2 answers
Попробуйте это,
Вы можете редактировать view.xml в приведенном ниже пути
Приложение/дизайн/{Пакет}/{Название темы}/etc/view.xml
Добавьте в него приведенный ниже код
<image id="mini_cart_product_image" type="image">
<width>100</width>
<height>100</height>
</image>
Вы можете изменить тип изображения и ширину/высоту в соответствии с вашими потребностями
Тип - Это означает, какой тип изображения должен отображаться в соответствующих местах интерфейса.
Объяснение:
- изображение – соответствует роли базового изображения
- маленькое изображение – соответствует роли малого изображения
- swatch_image – соответствует роли изображения образца
- swatch_thumb – соответствует роли изображения образца
- миниатюра – соответствует роли миниатюры изображения
Для получения дополнительной информации Посмотрите на это
Надеюсь, это поможет
В этом разделе мы расскажем, как изменить изображение товара в миникарте
Step 1: Create di.xml file
Step 2: Create Image.php file
Изображение продукта в миникарте будет отображаться функцией doGetItemData()
в классе Magento\Checkout\CustomerData\DefaultItem
, но эта функция защищена, поэтому мы не можем использовать плагин для нее. Вместо этого он расширяется от Magento\Checkout\CustomerData\AbstractItem
и использует функцию getItemData()
Сначала нам нужно создать файл регистрации и модуля в соответствии со структурой magento 2, затем выполните следующие действия.
Step 1: Create di.xml file
Создать di.xml файл в app/code/[Name_Space]/[Your_Module]/etc/frontend
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Checkout\CustomerData\AbstractItem">
<plugin name="Change_Product_Image_In_Minicart" type="[Name_Space]\[Your_Module]\Plugin\Minicart\Image" sortOrder="1"/>
</type>
</config>
Step 2: Create Image.php file
Создать Image.php файл в app/code/[Name_Space]\[Your_Module]\Plugin\Minicart
<?php
namespace [Name_Space]\[Your_Module]\Plugin\Minicart;
class Image
{
public function aroundGetItemData($subject, $proceed, $item)
{
$result = $proceed($item);
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->create('Magento\Catalog\Model\Product')->load($result['product_id']);
/* thum url */
$storeManager = $objectManager->create('Magento\Store\Model\StoreManagerInterface');
$currentStore = $storeManager->getStore();
$mediaUrl = $currentStore->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
if($product->getThumbnail()){
$result['product_image']['src'] = $mediaUrl.$product->getThumbnail();
}
else{
$result['product_image']['src'];
}
return $result;
}
}