如何在Magento的面包屑路径中显示产品SKU而不是它的名称?

时间:2012-09-21 10:24:54

标签: magento product breadcrumbs skus

我正在尝试在痕迹路径中显示产品SKU而不是产品名称。有没有人有任何想法如何做到这一点?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用插件对此进行更改

Magento在此处设置面包屑的产品名称 Magento \ Catalog \ ViewModel \ Product \面包屑

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 然后在GetJsonConfigurationHtmlEscaped之后添加函数以更新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
    );
}