forked from ConvertGroupsAS/magento2-patches
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathPatch-Magento_CatalogUrlRewrite-M2.1.4-regeneration-without-changes-fix.patch
60 lines (58 loc) · 2.79 KB
/
Patch-Magento_CatalogUrlRewrite-M2.1.4-regeneration-without-changes-fix.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
--- Observer/CategoryProcessUrlRewriteSavingObserver.php
+++ Observer/CategoryProcessUrlRewriteSavingObserver.php
@@ -49,9 +49,9 @@ class CategoryProcessUrlRewriteSavingObserver implements ObserverInterface
if ($category->getParentId() == Category::TREE_ROOT_ID) {
return;
}
- if ($category->dataHasChangedFor('url_key')
- || $category->dataHasChangedFor('is_anchor')
- || $category->getIsChangedProductList()
+ if ($category->getUrlKeyChanged()
+ || $category->getIsAnchorChanged()
+ || $category->getUrlRegenerationRequired()
) {
$urlRewrites = array_merge(
$this->categoryUrlRewriteGenerator->generate($category),
--- Observer/CategoryUrlPathAutogeneratorObserver.php
+++ Observer/CategoryUrlPathAutogeneratorObserver.php
@@ -24,19 +24,25 @@ class CategoryUrlPathAutogeneratorObserver implements ObserverInterface
/** @var StoreViewService */
protected $storeViewService;
+ /** @var \Magento\Catalog\Model\CategoryFactory */
+ protected $categoryFactory;
+
/**
* @param CategoryUrlPathGenerator $categoryUrlPathGenerator
* @param ChildrenCategoriesProvider $childrenCategoriesProvider
* @param \Magento\CatalogUrlRewrite\Service\V1\StoreViewService $storeViewService
+ * @param \Magento\Catalog\Model\CategoryFactory $categoryFactory
*/
public function __construct(
CategoryUrlPathGenerator $categoryUrlPathGenerator,
ChildrenCategoriesProvider $childrenCategoriesProvider,
- StoreViewService $storeViewService
+ StoreViewService $storeViewService,
+ \Magento\Catalog\Model\CategoryFactory $categoryFactory
) {
$this->categoryUrlPathGenerator = $categoryUrlPathGenerator;
$this->childrenCategoriesProvider = $childrenCategoriesProvider;
$this->storeViewService = $storeViewService;
+ $this->categoryFactory = $categoryFactory;
}
/**
@@ -47,6 +52,15 @@ class CategoryUrlPathAutogeneratorObserver implements ObserverInterface
{
/** @var Category $category */
$category = $observer->getEvent()->getCategory();
+ if ($category->getId()) {
+ $categoryOrig = $this->categoryFactory->create()->load($category->getId());
+ if ($categoryOrig->getUrlKey() != $category->getUrlKey()) {
+ $category->setUrlKeyChanged(true);
+ }
+ if ($categoryOrig->getIsAnchor() != $category->getIsAnchor()) {
+ $category->setIsAnchorChanged(true);
+ }
+ }
if ($category->getUrlKey() !== false) {
$category->setUrlKey($this->categoryUrlPathGenerator->getUrlKey($category))
->setUrlPath($this->categoryUrlPathGenerator->getUrlPath($category));