Skip to content

Commit 92e848e

Browse files
committed
MC-15941: Product media_gallery_entries / types only present if image, thumbnail, small_image is requested
1 parent c7ac6df commit 92e848e

File tree

3 files changed

+58
-3
lines changed

3 files changed

+58
-3
lines changed

app/code/Magento/CatalogGraphQl/Model/Resolver/Products/DataProvider/Product.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,6 @@ public function getList(
8686
$collection->load();
8787

8888
// Methods that perform extra fetches post-load
89-
if (in_array('media_gallery_entries', $attributes)) {
90-
$collection->addMediaGalleryData();
91-
}
9289
if (in_array('options', $attributes)) {
9390
$collection->addOptionsToResult();
9491
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessor;
9+
10+
use Magento\Catalog\Model\ResourceModel\Product\Collection;
11+
use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessorInterface;
12+
use Magento\Framework\Api\SearchCriteriaInterface;
13+
use Magento\Catalog\Model\Product\Media\Config as MediaConfig;
14+
15+
/**
16+
* Add attributes required for every GraphQL product resolution process.
17+
*
18+
* {@inheritdoc}
19+
*/
20+
class MediaGalleryProcessor implements CollectionProcessorInterface
21+
{
22+
/**
23+
* @var MediaConfig
24+
*/
25+
private $mediaConfig;
26+
27+
/**
28+
* Add media gallery attributes to collection
29+
*
30+
* @param MediaConfig $mediaConfig
31+
*/
32+
public function __construct(MediaConfig $mediaConfig)
33+
{
34+
$this->mediaConfig = $mediaConfig;
35+
}
36+
37+
/**
38+
* @inheritdoc
39+
*/
40+
public function process(
41+
Collection $collection,
42+
SearchCriteriaInterface $searchCriteria,
43+
array $attributeNames
44+
): Collection {
45+
if (in_array('media_gallery_entries', $attributeNames)) {
46+
$mediaAttributes = $this->mediaConfig->getMediaAttributeCodes();
47+
foreach ($mediaAttributes as $mediaAttribute) {
48+
if (!in_array($mediaAttribute, $attributeNames)) {
49+
$collection->addAttributeToSelect($mediaAttribute);
50+
}
51+
}
52+
$collection->addMediaGalleryData();
53+
}
54+
55+
return $collection;
56+
}
57+
}

app/code/Magento/CatalogGraphQl/etc/di.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
<item name="search" xsi:type="object">Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessor\SearchCriteriaProcessor</item>
4747
<item name="stock" xsi:type="object">Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessor\StockProcessor</item>
4848
<item name="visibility" xsi:type="object">Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessor\VisibilityStatusProcessor</item>
49+
<item name="mediaGallery" xsi:type="object">Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Product\CollectionProcessor\MediaGalleryProcessor</item>
4950
</argument>
5051
</arguments>
5152
</type>

0 commit comments

Comments
 (0)