Skip to content

Commit c638120

Browse files
ENGCOM-6785: [26054-Do not duplicate SEO meta data when duplicating a product] #26659
- Merge Pull Request #26659 from dasharath-wagento/magento2:feature-seo-meta-data-duplicating - Merged commits: 1. 1f96b87 2. 89b0a9d 3. 99383fc 4. 2d19477 5. 5aea4ac
2 parents 79ab7c8 + 5aea4ac commit c638120

File tree

2 files changed

+133
-86
lines changed

2 files changed

+133
-86
lines changed

app/code/Magento/Catalog/Model/Product/Copier.php

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@
88
use Magento\Catalog\Api\Data\ProductInterface;
99
use Magento\Catalog\Model\Attribute\ScopeOverriddenValue;
1010
use Magento\Catalog\Model\Product;
11+
use Magento\Catalog\Model\Product\Attribute\Source\Status;
1112
use Magento\Catalog\Model\Product\Option\Repository as OptionRepository;
1213
use Magento\Catalog\Model\ProductFactory;
1314
use Magento\Framework\App\ObjectManager;
1415
use Magento\Framework\EntityManager\MetadataPool;
16+
use Magento\Store\Model\Store;
1517
use Magento\UrlRewrite\Model\Exception\UrlAlreadyExistsException;
1618

1719
/**
@@ -72,40 +74,37 @@ public function __construct(
7274
/**
7375
* Create product duplicate
7476
*
75-
* @param \Magento\Catalog\Model\Product $product
76-
*
77-
* @return \Magento\Catalog\Model\Product
78-
*
79-
* @throws \Exception
77+
* @param Product $product
78+
* @return Product
8079
*/
81-
public function copy(Product $product)
80+
public function copy(Product $product): Product
8281
{
8382
$product->getWebsiteIds();
8483
$product->getCategoryIds();
8584

8685
$metadata = $this->metadataPool->getMetadata(ProductInterface::class);
8786

88-
/** @var \Magento\Catalog\Model\Product $duplicate */
87+
/** @var Product $duplicate */
8988
$duplicate = $this->productFactory->create();
9089
$productData = $product->getData();
9190
$productData = $this->removeStockItem($productData);
9291
$duplicate->setData($productData);
9392
$duplicate->setOptions([]);
93+
$duplicate->setMetaTitle(null);
94+
$duplicate->setMetaKeyword(null);
95+
$duplicate->setMetaDescription(null);
9496
$duplicate->setIsDuplicate(true);
9597
$duplicate->setOriginalLinkId($product->getData($metadata->getLinkField()));
96-
$duplicate->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED);
98+
$duplicate->setStatus(Status::STATUS_DISABLED);
9799
$duplicate->setCreatedAt(null);
98100
$duplicate->setUpdatedAt(null);
99101
$duplicate->setId(null);
100-
$duplicate->setStoreId(\Magento\Store\Model\Store::DEFAULT_STORE_ID);
102+
$duplicate->setStoreId(Store::DEFAULT_STORE_ID);
101103
$this->copyConstructor->build($product, $duplicate);
102104
$this->setDefaultUrl($product, $duplicate);
103105
$this->setStoresUrl($product, $duplicate);
104106
$this->optionRepository->duplicate($product, $duplicate);
105-
$product->getResource()->duplicate(
106-
$product->getData($metadata->getLinkField()),
107-
$duplicate->getData($metadata->getLinkField())
108-
);
107+
109108
return $duplicate;
110109
}
111110

@@ -118,11 +117,11 @@ public function copy(Product $product)
118117
*/
119118
private function setDefaultUrl(Product $product, Product $duplicate) : void
120119
{
121-
$duplicate->setStoreId(\Magento\Store\Model\Store::DEFAULT_STORE_ID);
120+
$duplicate->setStoreId(Store::DEFAULT_STORE_ID);
122121
$resource = $product->getResource();
123122
$attribute = $resource->getAttribute('url_key');
124123
$productId = $product->getId();
125-
$urlKey = $resource->getAttributeRawValue($productId, 'url_key', \Magento\Store\Model\Store::DEFAULT_STORE_ID);
124+
$urlKey = $resource->getAttributeRawValue($productId, 'url_key', Store::DEFAULT_STORE_ID);
126125
do {
127126
$urlKey = $this->modifyUrl($urlKey);
128127
$duplicate->setUrlKey($urlKey);
@@ -175,7 +174,7 @@ private function setStoresUrl(Product $product, Product $duplicate) : void
175174
$productResource->saveAttribute($duplicate, 'url_path');
176175
$productResource->saveAttribute($duplicate, 'url_key');
177176
}
178-
$duplicate->setStoreId(\Magento\Store\Model\Store::DEFAULT_STORE_ID);
177+
$duplicate->setStoreId(Store::DEFAULT_STORE_ID);
179178
}
180179

181180
/**
@@ -197,7 +196,7 @@ private function modifyUrl(string $urlKey) : string
197196
* @param array $productData
198197
* @return array
199198
*/
200-
private function removeStockItem(array $productData)
199+
private function removeStockItem(array $productData): array
201200
{
202201
if (isset($productData[ProductInterface::EXTENSION_ATTRIBUTES_KEY])) {
203202
$extensionAttributes = $productData[ProductInterface::EXTENSION_ATTRIBUTES_KEY];

0 commit comments

Comments
 (0)