├── CHANGELOG ├── Controller └── Adminhtml │ ├── Indexer.php │ └── Indexer │ ├── MassReindex.php │ └── Reindex.php ├── LICENSE ├── README.md ├── USER-GUIDE.md ├── UserGuide.pdf ├── composer.json ├── etc ├── acl.xml ├── adminhtml │ └── routes.xml └── module.xml ├── i18n └── en_US.csv ├── registration.php ├── travis.yml └── view └── adminhtml └── layout └── indexer_indexer_list.xml /CHANGELOG: -------------------------------------------------------------------------------- 1 | CHANGELOG: https://www.mageplaza.com/releases/backend-reindex -------------------------------------------------------------------------------- /Controller/Adminhtml/Indexer.php: -------------------------------------------------------------------------------- 1 | indexerRegistry = $indexerRegistry; 54 | 55 | parent::__construct($context); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /Controller/Adminhtml/Indexer/MassReindex.php: -------------------------------------------------------------------------------- 1 | getRequest()->getParam('indexer_ids'); 43 | if (!is_array($indexerIds)) { 44 | $this->messageManager->addErrorMessage(__('Please select indexers.')); 45 | } else { 46 | try { 47 | foreach ($indexerIds as $indexerId) { 48 | /** @var IndexerInterface $indexer */ 49 | $indexer = $this->indexerRegistry->get($indexerId); 50 | $indexer->reindexAll(); 51 | } 52 | $this->messageManager->addSuccessMessage(__('Total of %1 index(es) have reindexed data.', count($indexerIds))); 53 | } catch (LocalizedException $e) { 54 | $this->messageManager->addErrorMessage($e->getMessage()); 55 | } catch (Exception $e) { 56 | $this->messageManager->addExceptionMessage($e, __('Cannot initialize the indexer process.')); 57 | } 58 | } 59 | $this->_redirect('*/*/list'); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /Controller/Adminhtml/Indexer/Reindex.php: -------------------------------------------------------------------------------- 1 | getRequest()->getParam('id'); 42 | $indexer = $this->indexerRegistry->get($indexerId); 43 | if ($indexer && $indexer->getId()) { 44 | try { 45 | $indexer->reindexAll(); 46 | 47 | $this->messageManager->addSuccessMessage(__('%1 index was rebuilt.', $indexer->getTitle())); 48 | } catch (LocalizedException $e) { 49 | $this->messageManager->addErrorMessage($e->getMessage()); 50 | } catch (Exception $e) { 51 | $this->messageManager->addExceptionMessage($e, __('There was a problem with reindexing process.')); 52 | } 53 | } else { 54 | $this->messageManager->addErrorMessage(__('Cannot initialize the indexer process.')); 55 | } 56 | $this->_redirect('*/*/list'); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016-present Mageplaza Co. Ltd. 2 | 3 | This License is entered by Mageplaza to govern the usage or redistribution of Mageplaza software. This is a legal agreement between you (either an individual or a single entity) and Mageplaza for Mageplaza software product(s) which may include extensions, templates and services. 4 | 5 | By purchasing, installing, or otherwise using Mageplaza products, you acknowledge that you have read this License and agree to be bound by the terms of this Agreement. If you do not agree to the terms of this License, do not install or use Mageplaza products. 6 | 7 | The Agreement becomes effective at the moment when you acquire software from our site or receive it through email or on data medium or by any other means. Mageplaza reserves the right to make reasonable changes to the terms of this license agreement and impose its clauses at any given time. 8 | 9 | 1. GRANT OF LICENSE: By purchasing a product of Mageplaza: 10 | 11 | 1. Customer will receive source code open 100%. 12 | 13 | 2. Customer will obtain a License Certificate which will remain valid until the Customer stops using the Product or until Mageplaza terminates this License because of Customer’s failure to comply with any of its Terms and Conditions. Each License Certificate includes a license serial which is valid for one live Magento installation only and unlimited test Magento installations. 14 | 15 | 3. You are allowed to customize our products to fit with your using purpose. 16 | 17 | 4. DESCRIPTION OF OTHER RIGHTS AND LIMITATIONS 18 | 19 | 5. Installation and Use 20 | 21 | 6. For each new Software installation, you are obliged to purchase a separate License. You are not permitted to use any part of the code in whole or part in any other software or product or website. You are legally bound to preserve the copyright information intact including the text/link at bottom. 22 | 23 | 2. Distribution: You are not allowed to distribute Mageplaza software to third parties. Any distribution without our permission, including non commercial distribution is considered as violation of this Agreement and entails liability, according to the current law. You may not place the Software onto a server that allows access to the Software via a public network or the Internet for distribution purposes. 24 | 25 | 3. Rental: You may not give, sell, sub-license, rent, lease or lend any portion of the Software to anyone. 26 | 27 | 4. Compliance with Applicable Laws: You must comply with all applicable laws regarding use of software products. Mageplaza software and a portion of it are protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. Accordingly, customer is required to treat the software like any other copyrighted material. Any activity violating copyright law will be prosecuted according to the current law. We retain the right to revoke the license of any user holding an invalid license. 28 | 29 | 5. TERMINATION: Without prejudice to any other rights, Mageplaza may terminate this License at any time if you fail to comply with the terms and conditions of this License. In such event, it constitutes a breach of the agreement, and your license to use the program is revoked and you must destroy all copies of Mageplaza products in your possession. After being notified of termination of your license, if you continue to use Mageplaza software, you hereby agree to accept an injunction to prevent you from its further use and to pay all costs (including but not limited to reasonable attorney fees) to enforce our revocation of your license and any damages suffered by us because of your misuse of the Software. We are not bound to return you the amount spent for purchase of the Software for the termination of this License. 30 | 31 | 6. LIMITATION OF LIABILITY: In no event shall Mageplaza be liable for any damages (including, without limitation, lost profits, business interruption, or lost information) rising out of ‘Authorized Users’ use of or inability to use the Mageplaza products, even if Mageplaza has been advised of the possibility of such damages. In no event will Mageplaza be liable for prosecution arising from use of the Software against law or for any illegal use. 32 | 33 | The latest License: https://www.mageplaza.com/LICENSE.txt -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Magento 2 Backend Reindex Free 2 | 3 | > **(Update) 2023-03-09**: This project will be marked as a paid item and no longer be maintained as free. For further updates and technical support, please follow [Magento 2 Backend Tools](https://www.mageplaza.com/magento-2-backend-tools/) for more information. We understand that this change might create inconvenience for our users. However, this is to ensure that the module will be updated with more useful features to support Magento 2 stores better. If you have any concerns or ideas about any features you would like to see, don’t hesitate to [contact us](https://www.mageplaza.com/support/) and leave a request. 4 | 5 | Magento 2 [Backend Reindex](https://www.mageplaza.com/magento-2-backend-reindex/) by Mageplaza allows store admins to update individual or all indexes manually right from the admin backend easily instead of running command line. 6 | 7 | 8 | ## 1. Backend Reindex Documentation 9 | 10 | - [Installation guide](https://www.mageplaza.com/install-magento-2-extension/) 11 | - [User guide](https://docs.mageplaza.com/backend-reindex/index.html) 12 | - [Introduction page](http://www.mageplaza.com/magento-2-backend-reindex/) 13 | - [Contribute on Github](https://github.com/mageplaza/magento-2-backend-reindex) 14 | - [Get Support](https://github.com/mageplaza/magento-2-backend-reindex/issues) 15 | 16 | ## 2. Reindex FAQ 17 | 18 | **Q: I got error: Mageplaza_Core has been already defined** 19 | 20 | A: Read solution: https://github.com/mageplaza/module-core/issues/3 21 | 22 | **Q: How can I select some indexers to reindex?** 23 | 24 | A: You just need to click to select each reindex, then click on Submit to reindex them. 25 | 26 | **Q: How can I select all indexers?** 27 | 28 | A: Yes, you can reindex all easily, select Mass Action box, click Select All then click Submit. 29 | 30 | **Q: I am a store owner. Our store has many admins. How can I set access ability to reindex action for specific accounts only?** 31 | 32 | A: Please go to `System > User Roles > Add new role > Select index management`, save then select admin account to allow access. 33 | 34 | ## 3. How to install Backend Reindex extension for Magento 2 35 | 36 | Install via composer (recommend) 37 | 38 | Run the following command in Magento 2 root folder: 39 | 40 | With Marketing Automation (recommend): 41 | ``` 42 | composer require mageplaza/module-backend-reindex mageplaza/module-smtp 43 | php bin/magento setup:upgrade 44 | php bin/magento setup:static-content:deploy 45 | ``` 46 | 47 | 48 | Without Marketing Automation: 49 | ``` 50 | composer require mageplaza/module-backend-reindex 51 | php bin/magento setup:upgrade 52 | php bin/magento setup:static-content:deploy 53 | ``` 54 | ## 4. Highlight Features 55 | 56 | ### Reindex data within Magento 2 admin 57 | 58 | **Magento 2 Reindex extension** allows store owners to choose the indexers easily and reindex them when there are any updates on the data from Index Management section from the admin backend easily. 59 | 60 | For example, some typical indexers are: 61 | - Customer Grid: Rebuild Customer grid index 62 | - Category Products: Indexed category/products association 63 | - Product Categories: Indexed product/categories association 64 | - Product Price: Index product prices 65 | - Stock: Index stock 66 | 67 | ![Magento 2 Reindex extension](https://i.imgur.com/OY7MSLA.png) 68 | 69 | ### Reindex all in one click 70 | 71 | **Reindex All Data** allows store owners to submit data which needs to be reindexed in just one click. From the admin backend, it is easy to select all or deselect all the indexes and do actions quickly. 72 | 73 | This is time-saving for store owners in case there are updates on all the data of stores. Instead of running command line with unfamiliar codes, any store admins can reindex data easily from the backend. 74 | 75 | ![Magento 2 Reindex all](https://i.imgur.com/iobo0Sj.png) 76 | 77 | ### Reindex notification 78 | 79 | The notification will appear right after any indexers have been updated. The notification will inform store admins to know that the indexer has been rebuilt successfully. 80 | 81 | When the number of indexers which are reindexed is more than one, there will be a notification about the total of successful updates. Store admins can make sure that their actions are done and check the frontend performance for the final result. 82 | 83 | ![Magento 2 Reindex notification](https://i.imgur.com/aLjxtu2.png) 84 | 85 | 86 | ### Access restriction 87 | 88 | Store data is extremely important, so store owners may wish that the access to reindex data can be restricted by admin role. 89 | This can be done easily from the setting index management with specific admin role. 90 | 91 | As a result, store owners can control which admin accounts are allowed to access reindex action in the backend. 92 | 93 | ![Magento 2 Reindex Access restriction](https://i.imgur.com/1O7GLaj.png) 94 | 95 | ## 5. Full Magento 2 Reindex Features 96 | 97 | - Enable/ Disable backend reindex 98 | - Reindex data from admin in Magento 2 backend 99 | - Partly reindex or reindex all the indexes 100 | - Notification after finishing reindex 101 | - Allow accessing ability by admin role 102 | 103 | 104 | ## 6. Reindex User Guide 105 | 106 | ### 6.1. Configuration Reindex Section 107 | 108 | From the admin backend, go to `System > Index Management` 109 | 110 | ![Magento 2 Configuration Reindex Section](https://i.imgur.com/IWBgPPC.png) 111 | 112 | #### Reindex one indexer: 113 | 114 | At the **Action** box, click on **Reindex Data** to reindex each indexer separately. 115 | 116 | ![Magento 2 Reindex one indexer](https://i.imgur.com/hvRRinh.png) 117 | 118 | 119 | #### Reindex some indexers: 120 | 121 | - Click to select the indexers you need to reindex 122 | - Select **Reindex Data** 123 | - Click **Submit** 124 | 125 | ![Magento 2 Reindex some indexers](https://i.imgur.com/0j4q32o.png) 126 | 127 | #### Reindex all the indexers 128 | 129 | - Click on **Mass Actions** box, choose **Select All** 130 | - Select **Reindex Data** 131 | - Click **Submit** 132 | 133 | ![Magento 2 Reindex all the indexers](https://i.imgur.com/fUn2aV0.png) 134 | 135 | ### 6.2. User roles with reindex 136 | 137 | #### Step 1: Go to `Admin > System > User role` 138 | 139 | ![User roles with reindex](https://i.imgur.com/Ch0qBSS.png) 140 | 141 | #### Step 2: Add a new role resource 142 | 143 | Fill in role information at **Role Information** section 144 | 145 | ![Add a new role resource](https://i.imgur.com/3H9By5B.png) 146 | 147 | Select index management role at **Role Resources** section, then click on **Save Role** 148 | 149 | ![Magento 2 Add a new role resource](https://i.imgur.com/3aIoSyz.png) 150 | 151 | #### Step 3: Set role users for admin accounts, then click on Save Role to finish. 152 | 153 | ![Magento 2 Set role users for admin accounts](https://i.imgur.com/hveeS2l.png) 154 | 155 | **People also search:** 156 | - reindex magento 2 157 | - magento 2 reindex from admin 158 | - magento 2 reindex 159 | - how to reindex in magento 2 160 | - magento 2 reindex all 161 | - reindex in magento 2 162 | - magento 2 reindex extension 163 | - reindexing in magento 2 164 | - magento 2.3 reindex 165 | - reindex magento 2 from admin 166 | 167 | **Other free extension on Github** 168 | - [Magento 2 SEO Suite](https://github.com/mageplaza/magento-2-seo) 169 | - [M2 Google Maps](https://github.com/mageplaza/magento-2-google-maps) 170 | - [M2 Delete Orders](https://github.com/mageplaza/magento-2-delete-orders) 171 | - [M2 GDPR Free](https://github.com/mageplaza/magento-2-gdpr) 172 | - [M2 login as customer](https://github.com/mageplaza/magento-2-login-as-customer) 173 | - [M2 Same Order Number](https://github.com/mageplaza/magento-2-same-order-number) 174 | - [M2 Ajax Layered Navigation](https://github.com/mageplaza/magento-2-ajax-layered-navigation) 175 | - [M2 security module](https://github.com/mageplaza/magento-2-security) 176 | 177 | 178 | **Get more [Magento 2 extension on Marketplace](https://marketplace.magento.com/partner/Mageplaza):** 179 | - [M2 Configurable Product Preselect](https://marketplace.magento.com/mageplaza-module-configurable-product-grid-view.html) 180 | - [M2 Payment Restriction](https://marketplace.magento.com/mageplaza-module-payment-restriction.html) 181 | - [M2 Frequently Bought Together](https://marketplace.magento.com/mageplaza-module-frequently-bought-together.html) 182 | - [M2 Shipping Rules](https://marketplace.magento.com/mageplaza-module-shipping-rules.html) 183 | - [M2 Abandoned Cart Email](https://marketplace.magento.com/mageplaza-module-abandoned-cart-email.html) 184 | - [M2 SMTP](https://marketplace.magento.com/mageplaza-module-smtp.html) 185 | - [M2 Shipping Restrictions](https://marketplace.magento.com/mageplaza-module-shipping-restriction.html) 186 | - [M2 Multiple Coupons](https://marketplace.magento.com/mageplaza-module-multiple-coupons.html) 187 | - [M2 Order Attributes](https://marketplace.magento.com/mageplaza-module-order-attributes.html) 188 | - [M2 Barcode](https://marketplace.magento.com/mageplaza-module-barcode.html) 189 | -------------------------------------------------------------------------------- /USER-GUIDE.md: -------------------------------------------------------------------------------- 1 | ## Documentation 2 | 3 | - Installation guide: https://www.mageplaza.com/install-magento-2-extension/#solution-1-ready-to-paste 4 | - Product page: https://www.mageplaza.com/magento-2-better-change-qty/ 5 | - FAQs: https://www.mageplaza.com/faqs/ 6 | - Get Support: https://www.mageplaza.com/contact.html or support@mageplaza.com 7 | - Changelog: https://www.mageplaza.com/releases/backend-reindex 8 | - License agreement: https://www.mageplaza.com/LICENSE.txt 9 | 10 | ## How to install 11 | 12 | ### Install ready-to-paste package (Recommended) 13 | 14 | - Installation guide: https://www.mageplaza.com/install-magento-2-extension/ 15 | 16 | ## How to upgrade 17 | 18 | 1. Backup 19 | 20 | Backup your Magento code, database before upgrading. 21 | 22 | 2. Remove BackendReindex folder 23 | 24 | In case of customization, you should backup the customized files and modify in newer version. 25 | Now you remove `app/code/Mageplaza/BackendReindex` folder. In this step, you can copy override BackendReindex folder but this may cause of compilation issue. That why you should remove it. 26 | 27 | 3. Upload new version 28 | Upload this package to Magento root directory 29 | 30 | 4. Run command line: 31 | 32 | ``` 33 | php bin/magento setup:upgrade 34 | php bin/magento setup:static-content:deploy 35 | ``` 36 | 37 | 38 | ## FAQs 39 | 40 | 41 | #### Q: I got error: `Mageplaza_Core has been already defined` 42 | A: Read solution: https://github.com/mageplaza/module-core/issues/3 43 | 44 | 45 | #### Q: My site is down 46 | A: Please follow this guide: https://www.mageplaza.com/blog/magento-site-down.html 47 | 48 | 49 | ## Support 50 | 51 | - FAQs: https://www.mageplaza.com/faqs/ 52 | - https://mageplaza.com/contact.html 53 | - support@mageplaza.com 54 | -------------------------------------------------------------------------------- /UserGuide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mageplaza/magento-2-backend-reindex/8bb1023eb14255dd4bcf70eb6f334f0793150141/UserGuide.pdf -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mageplaza/module-backend-reindex", 3 | "description": "Magento 2 Backend Reindex Extension", 4 | "require": { 5 | "mageplaza/module-core": "^1.4.5" 6 | }, 7 | "type": "magento2-module", 8 | "version": "4.0.1", 9 | "license": "proprietary", 10 | "authors": [ 11 | { 12 | "name": "Mageplaza", 13 | "email": "support@mageplaza.com", 14 | "homepage": "https://www.mageplaza.com", 15 | "role": "Technical Support" 16 | } 17 | ], 18 | "autoload": { 19 | "files": [ 20 | "registration.php" 21 | ], 22 | "psr-4": { 23 | "Mageplaza\\BackendReindex\\": "" 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /etc/acl.xml: -------------------------------------------------------------------------------- 1 | 2 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /etc/adminhtml/routes.xml: -------------------------------------------------------------------------------- 1 | 2 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /etc/module.xml: -------------------------------------------------------------------------------- 1 | 2 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /i18n/en_US.csv: -------------------------------------------------------------------------------- 1 | "Please select indexers.","Please select indexers." 2 | "Total of %1 index(es) have reindexed data.","Total of %1 index(es) have reindexed data." 3 | "Cannot initialize the indexer process.","Cannot initialize the indexer process." 4 | "%1 index was rebuilt.","%1 index was rebuilt." 5 | "There was a problem with reindexing process.","There was a problem with reindexing process." 6 | "Reindex Data","Reindex Data" 7 | Action,Action 8 | -------------------------------------------------------------------------------- /registration.php: -------------------------------------------------------------------------------- 1 | dev/tests/static/testsuite/Magento/Test/Less/_files/whitelist/common.txt 56 | - echo "vendor/$COMPOSER_MODULE" > dev/tests/static/testsuite/Magento/Test/Php/_files/whitelist/common.txt 57 | - echo "vendor/$COMPOSER_MODULE/**/*.js" > dev/tests/static/testsuite/Magento/Test/Js/_files/whitelist/magento.txt 58 | - bash ./dev/travis/before_script.sh 59 | script: 60 | - test $TEST_SUITE = "static" && TEST_FILTER='--filter "Magento\\Test\\Php\\LiveCodeTest"' || true 61 | - test $TEST_SUITE = "functional" && TEST_FILTER='dev/tests/functional/testsuites/Magento/Mtf/TestSuite/InjectableTests.php' || true 62 | - if [ $TEST_SUITE == "functional" ]; then dev/tests/functional/vendor/phpunit/phpunit/phpunit -c dev/tests/$TEST_SUITE $TEST_FILTER; fi 63 | - if [ $TEST_SUITE != "functional" ] && [ $TEST_SUITE != "js" ]; then phpunit -c dev/tests/$TEST_SUITE $TEST_FILTER; fi 64 | - if [ $TEST_SUITE == "js" ]; then grunt $GRUNT_COMMAND; fi 65 | 66 | -------------------------------------------------------------------------------- /view/adminhtml/layout/indexer_indexer_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | Reindex Data 30 | */indexer/massReindex 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | action 39 | Action 40 | 0 41 | 0 42 | indexer_id 43 | 44 | 45 | Reindex Data 46 | 47 | */*/reindex 48 | 49 | id 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | --------------------------------------------------------------------------------