Silverstripe 哈希 link 重写将不需要的斜杠放入 link

Silverstripe hash link rewriting putting unwanted slash in link

好的,所以我正在 Silverstripe CMS 中开发一个站点,该站点在其中一个页面上使用锚 links。问题是,在 Silverstripe 中,正在进行重写,将斜杠放在 links.

中的散列之前

所以在文档中它解释说你可以把它放在你的 YAML 中以禁用哈希之前的斜杠:http://doc.silverstripe.org/en/developer_guides/templates/how_tos/disable_anchor_links/

我这样做了(YAML 验证正常):

_config/app.yml:

SSViewer: rewrite_hash_links: false

然后在我的模板文件中,这就是我用锚构建 link 的方式:

<a href="$ParentPage.Link#$URLSegment">Link</a>

(请注意,此模板文件用于数据对象,我不确定是否有任何限制)

输出的link是:

/cnc-加工/#定制

但应该是:

/cnc-machining#定制

我完全没有想法。有什么指点吗?

在您的 DataObject 的 getLink() 方法中,您可以使用 rtrim:

简单地删除结尾的斜杠
public function getLink() {
    //remove trailing slash from parent link
    $parentLink = rtrim($this->ParentPage()->Link(), '/'); 
    return $parentLink . '#' . $this->URLSegment;
}

现在在您的模板中只是 运行 在 DataObject 的范围内:

<a href="$Link">Link</a>

虽然我没有注意到在 url 中使用尾部斜线有任何缺点。

HTH, wmk