Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.89 KB | None | 0 0
  1. <?php
  2. /*
  3. ###############################################
  4. WARNING: this script truncates url rewrite tables and generates system url rewrites;
  5. ALL CUSTOM URL REWRITES WILL BE DELETED
  6. ###############################################
  7. */
  8.  
  9. const BATCH_SIZE = 5;
  10.  
  11. require_once './app/bootstrap.php';
  12.  
  13. $_SERVER[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'default';
  14. $_SERVER[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'store';
  15.  
  16. /** @var \Magento\Framework\App\Bootstrap $bootstrap */
  17. $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
  18.  
  19. /** @var \Magento\Framework\ObjectManager\ObjectManager $objectManager */
  20. $objectManager = $bootstrap->getObjectManager();
  21.  
  22. /** @var \Magento\Framework\App\State $appState */
  23. $appState = $objectManager->get('Magento\Framework\App\State');
  24. $appState->setAreaCode(\Magento\Framework\App\Area::AREA_ADMIN);
  25.  
  26.  
  27. /* TRUNCATING url_rewrite TABLES */
  28.  
  29. /** @var \Magento\Framework\Module\ModuleResource $moduleResource */
  30. $moduleResource = $objectManager->get('Magento\Framework\Module\ModuleResource');
  31. /** @var \Magento\Framework\DB\Adapter\Pdo\Mysql $connection */
  32. $connection = $moduleResource->getConnection();
  33. $connection->query('set foreign_key_checks = 0');
  34. $connection->truncateTable($moduleResource->getTable('catalog_url_rewrite_product_category'));
  35. $connection->truncateTable($moduleResource->getTable('url_rewrite'));
  36. $connection->query('set foreign_key_checks = 1');
  37.  
  38.  
  39. /* REINDEX URL REWRITES FOR CMS PAGES */
  40.  
  41. /** @var \Magento\Cms\Model\ResourceModel\Page\Collection $cmsPageCollection */
  42. $cmsPageCollection = $objectManager->get('Magento\Cms\Model\ResourceModel\Page\Collection');
  43.  
  44. /** @var |Magento\Framework\DB\Select $select */
  45. $select = $cmsPageCollection->getSelect();
  46. $select->columns($cmsPageCollection->getResource()->getIdFieldName(), 'main_table')
  47. ->limit(BATCH_SIZE);
  48.  
  49. $offset = 0;
  50. while ($cmsPageIds = $connection->fetchCol($select)) {
  51.  
  52. /** @var \Magento\Cms\Model\Page $cmsPage */
  53. $cmsPage = $objectManager->get('Magento\Cms\Model\Page');
  54. $eventName = 'cms_page_save_after';
  55.  
  56. foreach ($cmsPageIds as $cmsPageId) {
  57. $cmsPageId = (int)$cmsPageId;
  58. $cmsPage->load($cmsPageId);
  59. $cmsPage->setOrigData('identifier', '');
  60.  
  61. $data = ['object' => $cmsPage];
  62.  
  63. /** @var \Magento\Framework\Event $event */
  64. $event = new \Magento\Framework\Event($data);
  65. $event->setName($eventName);
  66.  
  67. /** @var \Magento\Framework\Event\Observer $observer */
  68. $observer = new \Magento\Framework\Event\Observer();
  69. $observer->setData(array_merge(['event' => $event], $data));
  70.  
  71. /** @var \Magento\CmsUrlRewrite\Observer\ProcessUrlRewriteSavingObserver $cmsPageProcess */
  72. $cmsPageProcess = $objectManager->get('Magento\CmsUrlRewrite\Observer\ProcessUrlRewriteSavingObserver');
  73. $cmsPageProcess->execute($observer);
  74. }
  75.  
  76. $offset += BATCH_SIZE;
  77. $select->limit(BATCH_SIZE, $offset);
  78. }
  79.  
  80.  
  81. /* REINDEX URL REWRITES FOR CATEGORIES AND ASSIGNED PRODUCTS */
  82.  
  83. /** @var \Magento\Catalog\Model\ResourceModel\Category\Collection $categoryCollection */
  84. $categoryCollection = $objectManager->get('Magento\Catalog\Model\ResourceModel\Category\Collection');
  85.  
  86. $offset = 0;
  87. while ($categoryIds = $categoryCollection->getAllIds(BATCH_SIZE, $offset)) {
  88. /** @var \Magento\Catalog\Model\Product $product */
  89. $category = $objectManager->get('Magento\Catalog\Model\Category');
  90. $eventName = 'catalog_category_save_after';
  91.  
  92. foreach ($categoryIds as $categoryId) {
  93. $categoryId = (int)$categoryId;
  94. $category->load($categoryId);
  95. $category->setOrigData('url_key', '');
  96.  
  97. $data = ['category' => $category];
  98.  
  99. /** @var \Magento\Framework\Event $event */
  100. $event = new \Magento\Framework\Event($data);
  101. $event->setName($eventName);
  102.  
  103. /** @var \Magento\Framework\Event\Observer $observer */
  104. $observer = new \Magento\Framework\Event\Observer();
  105. $observer->setData(array_merge(['event' => $event], $data));
  106.  
  107. /** @var \Magento\CatalogUrlRewrite\Observer\CategoryProcessUrlRewriteSavingObserver $categoryProcess */
  108. $categoryProcess = $objectManager->get('Magento\CatalogUrlRewrite\Observer\CategoryProcessUrlRewriteSavingObserver');
  109. $categoryProcess->execute($observer);
  110. }
  111.  
  112. $offset += BATCH_SIZE;
  113. }
  114.  
  115.  
  116. /* REINDEX URL REWRITES FOR PRODUCTS NOT REINDEXED BY CATEGORY REINDEX */
  117.  
  118. /** @var \Magento\Catalog\Model\ResourceModel\Product\Collection $productCollection */
  119. $productCollection = $objectManager->get('Magento\Catalog\Model\ResourceModel\Product\Collection');
  120. /** @var |Magento\Framework\DB\Select $select */
  121. $select = $productCollection->getSelect()
  122. ->joinLeft(
  123. ['ur' => $productCollection->getTable('url_rewrite')],
  124. 'ur.entity_id = e.entity_id AND ur.entity_type="product"',
  125. []
  126. )->where('ur.entity_id is null');
  127.  
  128.  
  129. $offset = 0;
  130. while ($productIds = $productCollection->getAllIds(BATCH_SIZE, $offset)) {
  131. /** @var \Magento\Catalog\Model\Product $product */
  132. $product = $objectManager->get('Magento\Catalog\Model\Product');
  133. $eventName = 'catalog_product_save_after';
  134.  
  135. foreach ($productIds as $productId) {
  136. $productId = (int)$productId;
  137. $product->load($productId);
  138. $product->setOrigData('url_key', '');
  139.  
  140. $data = ['product' => $product];
  141.  
  142. /** @var \Magento\Framework\Event $event */
  143. $event = new \Magento\Framework\Event($data);
  144. $event->setName($eventName);
  145.  
  146. /** @var \Magento\Framework\Event\Observer $observer */
  147. $observer = new \Magento\Framework\Event\Observer();
  148. $observer->setData(array_merge(['event' => $event], $data));
  149.  
  150. /** @var \Magento\CatalogUrlRewrite\Observer\ProductProcessUrlRewriteSavingObserver $productProcess */
  151. $productProcess = $objectManager->get('Magento\CatalogUrlRewrite\Observer\ProductProcessUrlRewriteSavingObserver');
  152. $productProcess->execute($observer);
  153. }
  154.  
  155. $offset += BATCH_SIZE;
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement