如何在Symfony自定义Twig模板中创建指向Sulu CMS页面的链接?
在Sulu自定义Twig模板中添加CMS页面链接的方法
核心用法:sulu-link标签的href属性取值
href属性主要支持两种取值方式,适配不同场景:
- 使用CMS页面的UUID(推荐)
Sulu中每个CMS页面都有唯一的UUID,这是最稳定的引用方式,不受页面路径修改、多语言切换的影响。
- 获取UUID:在Sulu后台编辑目标页面时,地址栏中的一串类似
a1b2c3d4-5678-90ef-ghij-klmnopqrstuv的字符就是页面UUID;也可以在页面编辑界面的「设置」标签页中找到。 - 模板示例:
<sulu-link href="a1b2c3d4-5678-90ef-ghij-klmnopqrstuv">点击跳转到目标页面</sulu-link>
- 使用页面的相对路径
如果页面路径固定(比如单语言站点),也可以直接填写页面的相对路径:
<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
相关产品推荐
相关产品推荐

