首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从Shopware 6中的类别实体获取类别URL?

在 Shopware 6 中,从类别实体获取类别 URL 通常涉及到使用 Shopware 的 API 或者服务来生成类别的 SEO URL。以下是一些常见的方法来实现这一目标:

方法一:使用 SeoUrlGenerator 服务

SeoUrlGenerator 服务可以用来生成实体的 SEO URL。你可以通过依赖注入来使用这个服务。

示例代码

代码语言:javascript
复制
use Shopware\Core\Content\Category\CategoryEntity;
use Shopware\Core\Framework\Context;
use Shopware\Core\Framework\Routing\RouterInterface;
use Shopware\Core\System\SalesChannel\SalesChannelContext;
use Shopware\Storefront\Framework\Seo\SeoUrlGenerator;

class CategoryUrlService
{
    private $seoUrlGenerator;
    private $router;

    public function __construct(SeoUrlGenerator $seoUrlGenerator, RouterInterface $router)
    {
        $this->seoUrlGenerator = $seoUrlGenerator;
        $this->router = $router;
    }

    public function getCategoryUrl(CategoryEntity $category, SalesChannelContext $context): string
    {
        $seoUrl = $this->seoUrlGenerator->generate(
            'frontend.navigation.page',
            ['navigationId' => $category->getId()],
            $context->getContext()
        );

        return $this->router->generate('frontend.navigation.page', ['navigationId' => $category->getId()]);
    }
}

方法二:使用 SeoUrlRepository

你也可以直接从 SeoUrlRepository 中获取类别的 SEO URL。

示例代码

代码语言:javascript
复制
use Shopware\Core\Content\Category\CategoryEntity;
use Shopware\Core\Framework\Context;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;

class CategoryUrlService
{
    private $seoUrlRepository;

    public function __construct(EntityRepositoryInterface $seoUrlRepository)
    {
        $this->seoUrlRepository = $seoUrlRepository;
    }

    public function getCategoryUrl(CategoryEntity $category, Context $context): ?string
    {
        $criteria = new Criteria();
        $criteria->addFilter(new EqualsFilter('foreignKey', $category->getId()));
        $criteria->addFilter(new EqualsFilter('routeName', 'frontend.navigation.page'));
        $criteria->addFilter(new EqualsFilter('isCanonical', true));

        $seoUrls = $this->seoUrlRepository->search($criteria, $context);

        if ($seoUrls->count() === 0) {
            return null;
        }

        return $seoUrls->first()->getSeoPathInfo();
    }
}

方法三:使用 Twig 模板

如果你在 Twig 模板中需要获取类别 URL,可以使用 path 函数。

示例代码

代码语言:javascript
复制
{% set categoryUrl = path('frontend.navigation.page', { navigationId: category.id }) %}
<a href="{{ categoryUrl }}">{{ category.name }}</a>

总结

  1. 使用 SeoUrlGenerator 服务:通过依赖注入使用 SeoUrlGenerator 服务来生成类别的 SEO URL。
  2. 使用 SeoUrlRepository:直接从 SeoUrlRepository 中获取类别的 SEO URL。
  3. 使用 Twig 模板:在 Twig 模板中使用 path 函数生成类别 URL。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【赛尔原创】如何自动地向知识图谱中添加属性?

    摘要:属性是实体的重要组成部分,因此如何自动获取实体的属性一直为知识图谱领域的研究者所关注。由哈尔滨工业大学社会计算与信息检索研究中心推出的开放域中文知识图谱《大词林》是通过从文本中自动挖掘实体及实体间的关系而构建而成,因此如何自动为实体添加属性也必然成为构建《大词林》所必须研究的问题之一。本文通过学习《大词林》中实体的概念层次结构和属性的表示,提出了一种基于注意力机制的属性自动获取方案。其想法可简述为,实体的属性可以通过检查它的概念类别来获得,因为实体可以作为它的概念类别的实例并继承它们的属性。实验结果显示,我们的方法能够为《大词林》中的实体自动添加属性,最终可以使大词林中实体属性的覆盖率达到95%以上。

    03

    NLP入门:CNN,RNN应用文本分类,个性化搜索,苹果和乔布斯关系抽取(2)

    前篇 一文了解自然语言处理的每个范畴用到的核心技术,难点和热点(1), 这部分涉及的NLP范畴包括: 中文分词 词性标注 句法分析 文本分类背景 下面介绍,文本分类常用的模型,信息检索,信息抽取。 8文本分类模型 近年来,文本分类模型研究层出不穷,特别是随着深度学习的发展,深度神经网络模型也在文本分类任务上取得了巨大进展。文本分类模型划分为以下三类: 基于规则的分类模型 基于规则的分类模型旨在建立一个规则集合来对数据类别进行判断。这些规则可以从训练样本里自动产生,也可以人工定义。给定一个测试样例,我们可以

    06
    领券