Exemple #1
0
 /**
  * Generate urls for UrlRewrite and save it in storage
  *
  * @param \Magento\Framework\Event\Observer $observer
  * @return void
  */
 public function processUrlRewriteSaving(EventObserver $observer)
 {
     /** @var \Magento\Catalog\Model\Product $product */
     $product = $observer->getEvent()->getProduct();
     if (!$product->getUrlPath() || $product->getOrigData('url_key') != $product->getData('url_key')) {
         $product->setUrlPath($this->catalogUrlRewriteHelper->generateProductUrlKeyPath($product));
     }
     if (!$product->getData('url_key') || $product->getOrigData('url_key') != $product->getData('url_key')) {
         $this->urlSave->save($this->productUrlGenerator->generate($product));
     }
 }
Exemple #2
0
 /**
  * Generate urls for UrlRewrite and save it in storage
  *
  * @param \Magento\Framework\Event\Observer $observer
  * @return void
  */
 public function processUrlRewriteSaving(EventObserver $observer)
 {
     /** @var \Magento\Catalog\Model\Category $category */
     $category = $observer->getEvent()->getCategory();
     if (!$this->catalogUrlRewriteHelper->isRootCategory($category) && (!$category->getData('url_key') || $category->getOrigData('url_key') != $category->getData('url_key'))) {
         $this->urlSave->save($this->categoryUrlGenerator->generate($category));
         $products = $category->getProductCollection()->addAttributeToSelect('url_key')->addAttributeToSelect('url_path');
         foreach ($products as $product) {
             $product->setData('save_rewrites_history', $category->getData('save_rewrites_history'));
             $this->urlSave->save($this->productUrlGenerator->generateWithChangedCategories($product, [$category->getId() => $category]));
         }
     }
 }
Exemple #3
0
 /**
  * Generate urls for UrlRewrite and save it in storage
  *
  * @param \Magento\Framework\Event\Observer $observer
  * @return void
  * @throws Exception|\Exception
  */
 public function processUrlRewriteSaving(EventObserver $observer)
 {
     /** @var $cmsPage \Magento\Cms\Model\Page */
     $cmsPage = $observer->getEvent()->getObject();
     if ($cmsPage->getOrigData('identifier') !== $cmsPage->getData('identifier')) {
         $urls = $this->urlGenerator->generate($cmsPage);
         try {
             $this->urlSave->save($urls);
         } catch (\Exception $e) {
             if ($e->getCode() === 23000) {
                 // Integrity constraint violation: 1062 Duplicate entry
                 throw new Exception(__('A page URL key for specified store already exists.'));
             }
             throw $e;
         }
     }
 }