/**
  * Generate urls for UrlRewrite and save it in storage
  *
  * @param \Magento\Framework\Event\Observer $observer
  * @return void
  */
 public function execute(\Magento\Framework\Event\Observer $observer)
 {
     /** @var Category $category */
     $category = $observer->getEvent()->getCategory();
     if ($category->getParentId() == Category::TREE_ROOT_ID) {
         return;
     }
     if ($category->dataHasChangedFor('url_key') || $category->getIsChangedProductList()) {
         $urlRewrites = array_merge($this->categoryUrlRewriteGenerator->generate($category), $this->urlRewriteHandler->generateProductUrlRewrites($category));
         $this->urlPersist->replace($urlRewrites);
     }
 }
 /**
  * @param \Magento\Framework\Event\Observer $observer
  * @return void
  */
 public function execute(\Magento\Framework\Event\Observer $observer)
 {
     /** @var Category $category */
     $category = $observer->getEvent()->getCategory();
     if ($category->dataHasChangedFor('parent_id')) {
         $saveRewritesHistory = $this->scopeConfig->isSetFlag(UrlKeyRenderer::XML_PATH_SEO_SAVE_HISTORY, ScopeInterface::SCOPE_STORE, $category->getStoreId());
         $category->setData('save_rewrites_history', $saveRewritesHistory);
         $urlRewrites = array_merge($this->categoryUrlRewriteGenerator->generate($category), $this->urlRewriteHandler->generateProductUrlRewrites($category));
         $this->urlRewriteHandler->deleteCategoryRewritesForChildren($category);
         $this->urlPersist->replace($urlRewrites);
     }
 }
Example #3
0
 /**
  * @param int $rootCategoryId
  * @param int $storeId
  * @return array
  */
 protected function generateCategoryUrls($rootCategoryId, $storeId)
 {
     $urls = [];
     $categories = $this->categoryFactory->create()->getCategories($rootCategoryId, 1, false, true);
     foreach ($categories as $category) {
         /** @var \Magento\Catalog\Model\Category $category */
         $category->setStoreId($storeId);
         $urls = array_merge($urls, $this->categoryUrlRewriteGenerator->generate($category));
     }
     return $urls;
 }
Example #4
0
 public function testSkipGenerationForGlobalScope()
 {
     $this->category->expects($this->any())->method('getStoreIds')->will($this->returnValue([1, 2]));
     $this->storeViewService->expects($this->exactly(2))->method('doesEntityHaveOverriddenUrlKeyForStore')->will($this->returnValue(true));
     $this->assertEquals([], $this->categoryUrlRewriteGenerator->generate($this->category));
 }