Как изменить возврат основной функции из слушателя Shopware - PullRequest
0 голосов
/ 28 февраля 2019

Вопрос о Shopware, платформе электронной коммерции.У меня есть требование изменить способ сохранения URL-адресов товаров в магазине.Клиенту нужен короткий URL, поэтому сохраняется только первая категория.Нет пути к категории.

Не категория1 / категория2 / категория3 / имя продукта

, но это одна категория1 / имя продукта.

Пробовал что-то из бэкэнда Основные настройки-> Внешний интерфейс -> SEO-маршрутНастройки -> Шаблон элемента SEO URL.Но не смог заставить его работать.

Так что я попробовал со слушателем.Событие:

    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;
    }

Я пытался вернуть что-то, просто чтобы посмотреть, работает ли оно, но никогда не работает.Как будто мой слушатель не влияет на то, как работает основная функция.Но это останавливается на die ();

Как изменить функцию ядра, возвращаемую слушателем?Является ли это возможным?Я что-то не так понял?

1 Ответ

0 голосов
/ 28 февраля 2019

Вам не нужен плагин для этого.Вы можете использовать это как шаблон SEO продукта:

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

Объяснение:

  1. Добавить дерево категорий в переменную и разбить его на массив
  2. Использоватьпервая запись массива в виде ключа
...