在使用 Magento 2 構建電商網站時,經常會遇到 URL 相關的問題,例如產品 URL 路徑不正確、分類 URL 無法訪問、cms 頁面鏈接失效等等。手動一個個修改既耗時又容易出錯。elgentos/regenerate-catalog-urls 擴展提供了一組便捷的命令行工具,可以批量重新生成產品、分類和 CMS 頁面的 URL,極大地提高了維護效率。 composer在線學習地址:學習地址
這個擴展能做什么?
elgentos/regenerate-catalog-urls 擴展為 Magento 2 添加了一系列命令行工具,用于重新生成:
- 產品 URL Rewrite: 基于產品的 URL 路徑重新生成 URL Rewrite。
- 分類 URL Rewrite: 基于分類的 URL 路徑重新生成 URL Rewrite。
- CMS 頁面 URL Rewrite: 基于 CMS 頁面的 URL 路徑重新生成 URL Rewrite。
- 分類 URL Path: 基于分類的 URL Key 及其父級分類重新生成分類 URL 路徑。
安裝
安裝非常簡單,只需通過 Composer 即可:
composer require elgentos/regenerate-catalog-urls php bin/magento setup:upgrade
或者,你也可以下載源碼,將 src 目錄復制到 app/code/Elgentos/RegenerateCatalogUrls,然后運行 php bin/magento setup:upgrade。
使用方法
該擴展提供了多個命令行指令,可以通過 php bin/magento 命令調用:
Usage: regenerate:product:url [-s|--store="..."] [pids1] ... [pidsN] regenerate:category:url [-s|--store="..."] [-r|--root="..."] [cids1] ... [cidsN] regenerate:category:path [-s|--store="..."] [-r|--root="..."] [cids1] ... [cidsN] regenerate:cms-page:url [-s|--store="..."] [pids1] ... [pidsN] Arguments: pids Products (or Pages) to regenerate cids Categories to regenerate Options: --store (-s) Use a specific store (store Id, store code or 'all') --root (-r) Regenerate for root category and its children, ignoring cids. --verbose (-v) Verbose mode to display the errors. Eg: duplicated product urls --help (-h) Display this help message
示例:
-
重新生成所有產品在全局商店中的 URL:
php bin/magento regenerate:product:url
-
重新生成 ID 為 1, 2, 3, 4 的產品在商店 1 中的 URL:
php bin/magento regenerate:product:url -s1 1 2 3 4
-
重新生成所有 CMS 頁面的 URL:
php bin/magento regenerate:cms-page:url -s all
-
重新生成根分類 ID 為 4 及其子分類在商店 1 中的 URL:
php bin/magento regenerate:category:url -s1 -r4
常見問題 (FAQ)
-
url_key 和 url_path 有什么區別?
url_key 包含關鍵字,例如 “joust-duffle-bag”。url_path 是通過將 url_key 添加后綴生成的 (產品后綴存儲在 catalog/SEO/product_url_suffix 中,默認為 .html)。因此,url_path 默認會變成 joust-duffle-bag.html。它還會添加父級分類的 slug,因此 url_path 可能會變成 bags/joust-duffle-bag.html。但是,自 Magento 2.1 版本早期以來,url_path 的使用已被棄用。如果你運行的是最新的 Magento 2 版本,可以安全地刪除這些值。
-
運行命令時出現 “Duplicated url” 警告?
如果看到此錯誤,則表示 catalog_product_entity_varchar 中存在重復的 url_key 值 (在同一商店中)。可以使用 baldwin/magento2-module-url-data-integrity-checker 擴展來檢查這些值 (需要手動修復)。
優勢和實際應用
elgentos/regenerate-catalog-urls 擴展的優勢在于:
- 批量處理: 可以一次性重新生成多個產品、分類或 CMS 頁面的 URL,大大節省了時間。
- 靈活性: 可以指定商店、根分類等參數,靈活控制重新生成的范圍。
- 易于使用: 通過簡單的命令行指令即可完成 URL 的重新生成。
- 解決 URL 問題: 可以有效解決 URL 路徑錯誤、重復 URL 等問題,提升 SEO 和用戶體驗。
總而言之,elgentos/regenerate-catalog-urls 擴展是 Magento 2 商店維護的利器,可以幫助你輕松管理和修復 URL 問題,提升網站的整體質量。