自动更新 URL 段的最简单方法是什么?
What would be the simplest way to automatically have the URL segment updated?
这个问题是关于更改 Page
Title
字段值时的 URL 更新功能。该行为被编码为 CMSMain.EditForm.js.
我正在对 CMS 进行精简和定制,以供绝对基本的计算机用户或粗心大意的客户使用,他们很可能会跳过按 更新 URL 页面名称更改时的按钮。在这些情况下,如果 URLSegment
会自动更新会非常方便。
问:自动更新 URL 段的最简单方法是什么,IE 模拟单击 "Update URL" 时出现的结果按钮, 更改 Title
字段后?
您可以对 SiteTree 进行扩展,并像这样包含函数 onBeforeWrite。如果他们更新了标题而不是 URL:
,这将进行更改
class AutoURLSync extends Extension {
public function onBeforeWrite() {
// If Title is changed, but URLSegment is not,
// then update the URLSegment here
if($this->owner->isChanged('Title',2) && !$this->owner->isChanged('URLSegment',2)) {
$this->owner->URLSegment = $this->owner->generateURLSegment($this->owner->Title);
}
}
}
删除 "if" 意味着它总是被更改。
在 _config/config.yml
中将此添加到 link 扩展名中:
SiteTree:
extensions:
- AutoURLSync
这个问题是关于更改 Page
Title
字段值时的 URL 更新功能。该行为被编码为 CMSMain.EditForm.js.
我正在对 CMS 进行精简和定制,以供绝对基本的计算机用户或粗心大意的客户使用,他们很可能会跳过按 更新 URL 页面名称更改时的按钮。在这些情况下,如果 URLSegment
会自动更新会非常方便。
问:自动更新 URL 段的最简单方法是什么,IE 模拟单击 "Update URL" 时出现的结果按钮, 更改 Title
字段后?
您可以对 SiteTree 进行扩展,并像这样包含函数 onBeforeWrite。如果他们更新了标题而不是 URL:
,这将进行更改class AutoURLSync extends Extension {
public function onBeforeWrite() {
// If Title is changed, but URLSegment is not,
// then update the URLSegment here
if($this->owner->isChanged('Title',2) && !$this->owner->isChanged('URLSegment',2)) {
$this->owner->URLSegment = $this->owner->generateURLSegment($this->owner->Title);
}
}
}
删除 "if" 意味着它总是被更改。
在 _config/config.yml
中将此添加到 link 扩展名中:
SiteTree:
extensions:
- AutoURLSync