如何从 Shopware 的侦听器更改 return 的核心功能

How to change return of core function from Shopware's listener

问题是关于电子商务平台 Shopware 的。 我需要更改 urls 商店中产品的保存方式。 客户想要短 url 所以只保存第一个类别。没有类别路径。

不是category1/category2/category3/productname

但是这个 category1/productname.

尝试了后端基本设置-> 前端-> SEO 路由设置-> SEO URL 的项目模板。但是无法让它工作。

所以我尝试了 listener。事件:

    public static function getSubscribedEvents()
    {
        return [
            'sRewriteTable::sSmartyCategoryPath::before' => 'onTableRewrite'
        ];
    }

和相关函数:

public function onTableRewrite(\Enlight_Hook_HookArgs $args)
    {
        /** @var \Shopware_Controllers_Backend_Article $subject */
        $subject = $args->getSubject();
        $paramArgs = $args->getArgs();
        //$args->setReturn('asdfasdf');
        //$paramArgs = $args->set('categoryID', 1);

        if(!empty($paramArgs[0]['articleID'])){
            return 'ThisisKeva';
        } 

        return true;
    }

我尝试 return 一些东西只是为了看看它是否有效,但它从来没有起作用。就像我的听众对核心功能的工作方式没有影响。但它以 die();

停止

如何改变监听器的核心功能return? 可能吗?我是不是误会了什么?

您不需要插件。您可以将其用作产品 seo 模板:

{assign var='tree' value='/'|explode:{sCategoryPath articleID=$sArticle.id}}{$tree.0}/{$sArticle.name}

说明:

  1. 将类别树添加到变量中并将其拆分为数组
  2. 使用数组的第一个条目作为键