/**
  * 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)
 {
     foreach ($observer->getEvent()->getProducts() as $productId) {
         $product = $this->productRepository->getById($productId, false, $this->request->getParam('store_id', Store::DEFAULT_STORE_ID));
         $this->urlPersist->deleteByData([UrlRewrite::ENTITY_ID => $product->getId(), UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE]);
         $this->urlPersist->replace($this->productUrlRewriteGenerator->generate($product));
     }
 }
 /**
  * Generate urls for UrlRewrite and save it in storage
  *
  * @param \Magento\Framework\Event\Observer $observer
  * @return void
  */
 public function execute(EventObserver $observer)
 {
     /** @var $cmsPage \Magento\Cms\Model\Page */
     $cmsPage = $observer->getEvent()->getObject();
     if ($cmsPage->dataHasChangedFor('identifier')) {
         $urls = $this->cmsPageUrlRewriteGenerator->generate($cmsPage);
         $this->urlPersist->replace($urls);
     }
 }
 /**
  * Generate urls for UrlRewrite and save it in storage
  *
  * @param \Magento\Framework\Event\Observer $observer
  * @return void
  */
 public function execute(EventObserver $observer)
 {
     /** @var $cmsPage \Magento\Cms\Model\Page */
     $cmsPage = $observer->getEvent()->getObject();
     if ($cmsPage->dataHasChangedFor('identifier') || $cmsPage->dataHasChangedFor('store_id')) {
         $urls = $this->cmsPageUrlRewriteGenerator->generate($cmsPage);
         $this->urlPersist->deleteByData([UrlRewrite::ENTITY_ID => $cmsPage->getId(), UrlRewrite::ENTITY_TYPE => CmsPageUrlRewriteGenerator::ENTITY_TYPE]);
         $this->urlPersist->replace($urls);
     }
 }
 /**
  * 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 Product $product */
     $product = $observer->getEvent()->getProduct();
     if ($product->dataHasChangedFor('url_key') || $product->getIsChangedCategories() || $product->getIsChangedWebsites() || $product->dataHasChangedFor('visibility')) {
         $this->urlPersist->deleteByData([UrlRewrite::ENTITY_ID => $product->getId(), UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE, UrlRewrite::REDIRECT_TYPE => 0, UrlRewrite::STORE_ID => $product->getStoreId()]);
         if ($product->isVisibleInSiteVisibility()) {
             $this->urlPersist->replace($this->productUrlRewriteGenerator->generate($product));
         }
     }
 }
 /**
  * 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 \Magento\Catalog\Model\Product $product */
     $product = $observer->getEvent()->getProduct();
     $isChangedWebsites = $product->getIsChangedWebsites();
     if ($product->dataHasChangedFor('url_key') || $product->getIsChangedCategories() || $isChangedWebsites) {
         if ($isChangedWebsites) {
             $this->urlPersist->deleteByData([UrlRewrite::ENTITY_ID => $product->getId(), UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE]);
         }
         $this->urlPersist->replace($this->productUrlRewriteGenerator->generate($product));
     }
 }
 /**
  * @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);
     }
 }
 /**
  * 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);
     }
 }
예제 #8
0
 /**
  * @param \Magento\Store\Model\ResourceModel\Group $object
  * @param callable $proceed
  * @param AbstractModel $group
  * @return \Magento\Store\Model\ResourceModel\Group
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function aroundSave(\Magento\Store\Model\ResourceModel\Group $object, \Closure $proceed, AbstractModel $group)
 {
     $originGroup = $group;
     $result = $proceed($originGroup);
     if (!$group->isObjectNew() && ($group->dataHasChangedFor('website_id') || $group->dataHasChangedFor('root_category_id'))) {
         $this->storeManager->reinitStores();
         foreach ($group->getStoreIds() as $storeId) {
             $this->urlPersist->deleteByData([UrlRewrite::STORE_ID => $storeId]);
         }
         $this->urlPersist->replace($this->generateCategoryUrls($group->getRootCategoryId(), $group->getStoreIds()));
         $this->urlPersist->replace($this->generateProductUrls($group->getWebsiteId(), $group->getOrigData('website_id')));
     }
     return $result;
 }
예제 #9
0
파일: Import.php 프로젝트: kid17/magento2
 /**
  * Action after data import.
  * Save new url rewrites and remove old if exist.
  *
  * @param Observer $observer
  *
  * @return void
  */
 public function afterImportData(Observer $observer)
 {
     $import = $observer->getEvent()->getAdapter();
     if ($products = $observer->getEvent()->getBunch()) {
         $productUrls = [];
         foreach ($products as $product) {
             $productObject = $import->_populateToUrlGeneration($product);
             $productUrls = array_merge($productUrls, $this->productUrlRewriteGenerator->generate($productObject));
         }
         if ($productUrls) {
             $this->urlPersist->replace($productUrls);
         }
     }
 }
예제 #10
0
 /**
  * @param ImportProduct $import
  * @param bool $result
  * @return bool
  */
 public function afterImportData(ImportProduct $import, $result)
 {
     if ($import->getAffectedEntityIds()) {
         foreach ($import->getAffectedEntityIds() as $productId) {
             $product = $this->productRepository->getById($productId);
             $productUrls = $this->productUrlRewriteGenerator->generate($product);
             if ($productUrls) {
                 $this->urlPersist->replace($productUrls);
             }
         }
     } elseif (ImportExport::BEHAVIOR_DELETE == $import->getBehavior()) {
         $this->clearProductUrls($import);
     }
     return $result;
 }
 /**
  * Action after data import.
  * Save new url rewrites and remove old if exist.
  *
  * @param Observer $observer
  *
  * @return void
  */
 public function execute(Observer $observer)
 {
     $this->import = $observer->getEvent()->getAdapter();
     if ($products = $observer->getEvent()->getBunch()) {
         foreach ($products as $product) {
             $this->_populateForUrlGeneration($product);
         }
         $productUrls = $this->generateUrls();
         if ($productUrls) {
             $this->urlPersist->replace($productUrls);
         }
     }
 }
예제 #12
-1
 /**
  * @param \Magento\Store\Model\ResourceModel\Store $object
  * @param callable $proceed
  * @param AbstractModel $store
  * @return \Magento\Store\Model\ResourceModel\Store
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function aroundSave(\Magento\Store\Model\ResourceModel\Store $object, \Closure $proceed, AbstractModel $store)
 {
     $originStore = $store;
     $result = $proceed($originStore);
     if ($store->isObjectNew() || $store->dataHasChangedFor('group_id')) {
         if (!$store->isObjectNew()) {
             $this->urlPersist->deleteByData([UrlRewrite::STORE_ID => $store->getId()]);
         }
         $this->urlPersist->replace($this->generateCategoryUrls($store->getRootCategoryId(), $store->getId()));
         $this->urlPersist->replace($this->generateProductUrls($store->getWebsiteId(), $store->getOrigData('website_id'), $store->getId()));
     }
     return $result;
 }