magento2 product url key rewrite原理

3.12K 浏览开发笔记

magento2 product url key rewrite原理

分类和产品的url rewrite都在vendor/module-catalog-url-rewrite里。

通过event事件来更新url的。

产品保存的时候,触发MagentoCatalogUrlRewriteObserverProductProcessUrlRewriteSavingObserver.php.

在以下4种情况才执行url rewrite的操作

  1. 修改url_key的情况下

  2. 修改产品分类的情况下 (在分类页面->Products in Category删掉对应的产品)

  3. 修改website的情况下

  4. 更改visibility的情况下,必须是设置为前台可见

通过这4个条件之一后,不一定会更新url rewrite表。

它接着在后面又验证了catalog_product_entity_varchar表,

通过url_key和产品id,去找有没有记录,

如果当前store id有记录的话 就直接返回 不更新url rewrite表.

如果当前store id有记录的话 就执行下面的代码 更新url rewrite表.

比如

SELECT `e_attr`.`store_id` FROM `catalog_product_entity` AS `e` INNER JOIN `catalog_product_entity_varchar` AS `e_attr` ON e.entity_id = e_attr.entity_id WHERE (e_attr.attribute_id = '119') AND (e.entity_id = '475')

所以,你要想保存更新url rewrite表的话,需要手动删掉catalog_product_entity_varchar里对应的url_key记录。

0