URL在magento 2中重新生成

时间:2017-07-04 05:24:05

标签: php magento seo

我正在Magento 2中开发我的网站,在更改类别URL后,我需要为产品重新生成URL。

现有产品的网址没有变化。

例如:

类别网址&#39>: 新网址:  http://test.com/jewellery-collections/gold-jewellery/gold-rings 旧网址:  http://test.com/collections/gold/rings

产品网址:  http://test.com/collections/gold/rings/midas-bloom

但网址应该是  http://test.com/jewellery-collections/gold-jewellery/gold-ringsmidas-bloom

因此,应根据新类别网址

重新生成产品网址

1 个答案:

答案 0 :(得分:-1)

一个非常简单的解决方案是使用准备运行的Magento 2模块,它完全可以完成重写索引器的工作。您可以通过代码或命令行调用此重新生成。更好的解决方案是通过您自己的导入器模块中的代码来实现。再生非常简单

foreach($list as $product) {
if($store_id === Store::DEFAULT_STORE_ID)
    $product->setStoreId($store_id);
$this->urlPersist->deleteByData([
    UrlRewrite::ENTITY_ID => $product->getId(),
    UrlRewrite::ENTITY_TYPE => ProductUrlRewriteGenerator::ENTITY_TYPE,
    UrlRewrite::REDIRECT_TYPE => 0,
    UrlRewrite::STORE_ID => $store_id
]);
try {
    $this->urlPersist->replace(
        $this->productUrlRewriteGenerator->generate($product)
    );
} catch(\Exception $e) {
    $out->writeln('<error>Duplicated url for '. $product->getId() .'</error>');
} }

正如您所看到的,Magento 2为您提供了重新生成url的模型重写\ Magento \ CatalogUrlRewrite \ Model \ ProductUrlRewriteGenerator(productUrlRewriteGenerator),您可以将其注入模型中。这个生成的url重写可以替换为\ Magento \ UrlRewrite \ Model \ UrlPersistInterface(urlPersist)。您可以在导入后为所有产品循环运行,也可以在更改后为每个产品运行。

或者您可以查看https://github.com/Iazel/magento2-regenurl