我正在尝试在面包屑路径中显示产品 SKU 而不是产品名称。有没有人有任何想法如何做到这一点?谢谢!
问问题
883 次
1 回答
0
你可以使用插件来改变这个
Magento 在此处设置面包屑的产品名称 Magento\Catalog\ViewModel\Product\Breadcrumbs
public function getJsonConfigurationHtmlEscaped() : string
{
return json_encode(
[
'breadcrumbs' => [
'categoryUrlSuffix' => $this->escaper->escapeHtml($this->getCategoryUrlSuffix()),
'useCategoryPathInUrl' => (int)$this->isCategoryUsedInProductUrl(),
'product' => $this->escaper->escapeHtml($this->getProductName())
]
],
JSON_HEX_TAG
);
}
您可以将插件添加到自定义模块。在您的插件中添加一个函数以获取产品 sku,然后添加函数 afterGetJsonConfigurationHtmlEscaped 以更新 getJsonConfigurationHtmlEscaped 以使用 sku 而不是名称。
afterGetJsonConfigurationHtmlEscaped($subject)
/**
* Returns product sku.
*
* @return string
* Add this function to get your Sku
*/
public function getProductSku(): string
{
return $this->catalogData->getProduct() !== null
? $this->catalogData->getProduct()->getSku()
: '';
}
/**
* Returns breadcrumb json with html escaped Sku
*
* @return string
*/
public function afterGetJsonConfigurationHtmlEscaped($subject) : string
{
return json_encode(
[
'breadcrumbs' => [
'categoryUrlSuffix' => $this->escaper->escapeHtml($subject->getCategoryUrlSuffix()),
'useCategoryPathInUrl' => (int)$subject->isCategoryUsedInProductUrl(),
'product' => $this->escaper->escapeHtml($this->getProductSku())
]
],
JSON_HEX_TAG
);
}
于 2020-11-24T10:31:03.760 回答