自动更新URL段的最简单方法是什么?

Fal*_*ude 6 javascript php silverstripe

此问题与更改Page Title字段值时的URL更新功能有关.该行为被编码到CMSMain.EditForm.js中.

在此输入图像描述

我正在剥离并自定义CMS以供绝对基本的计算机用户或疏忽的客户端使用,他们很可能在页面名称更改时跳过更新URL按钮.在这些情况下,如果URLSegment自动更新将非常方便.

问:自动更新URL段的最简单方法是什么?IE 会更改字段模拟单击"更新URL"按钮时显示的结果Title

Bar*_*rry 7

你可以为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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

删除"if"意味着它总是被改变.

将其添加_config/config.yml到链接扩展名:

SiteTree:
    extensions:
      - AutoURLSync
Run Code Online (Sandbox Code Playgroud)