/** * 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); } }
/** * @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; }
/** * 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); } } }
/** * @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); } } }
/** * @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; }