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
好的,所以我正在 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