You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Symfony自定义Twig模板中创建指向Sulu CMS页面的链接?

在Sulu自定义Twig模板中添加CMS页面链接的方法

核心用法:sulu-link标签的href属性取值

href属性主要支持两种取值方式,适配不同场景:

  1. 使用CMS页面的UUID(推荐)
    Sulu中每个CMS页面都有唯一的UUID,这是最稳定的引用方式,不受页面路径修改、多语言切换的影响。
  • 获取UUID:在Sulu后台编辑目标页面时,地址栏中的一串类似a1b2c3d4-5678-90ef-ghij-klmnopqrstuv的字符就是页面UUID;也可以在页面编辑界面的「设置」标签页中找到。
  • 模板示例:
<sulu-link href="a1b2c3d4-5678-90ef-ghij-klmnopqrstuv">点击跳转到目标页面</sulu-link>
  1. 使用页面的相对路径
    如果页面路径固定(比如单语言站点),也可以直接填写页面的相对路径:
<sulu-link href="/about-us">关于我们</sulu-link>

注意:多语言站点中,页面路径会随语言版本变化,这种方式不如UUID稳定。

动态获取页面链接的进阶方式

如果需要在自定义Symfony控制器中动态获取页面链接,可以注入页面仓库与URL生成器,生成链接后传递到模板使用普通<a>标签:

// 自定义控制器中
use Sulu\Bundle\PageBundle\Repository\PageRepository;
use Sulu\Component\Webspace\UrlGeneratorInterface;

class CustomController extends AbstractController
{
    public function indexAction(PageRepository $pageRepository, UrlGeneratorInterface $urlGenerator)
    {
        // 通过UUID获取页面
        $page = $pageRepository->findById('a1b2c3d4-5678-90ef-ghij-klmnopqrstuv');
        // 生成页面URL
        $pageUrl = $urlGenerator->generate($page->getUrl(), $page->getWebspaceKey());
        
        return $this->render('custom/index.html.twig', [
            'pageUrl' => $pageUrl,
        ]);
    }
}

模板中使用:

<a href="{{ pageUrl }}">动态生成的页面链接</a>

内容的提问来源于stack exchange,提问作者stollr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:00:13