2016-07-19 90 views
6

此問題與更改PageTitle字段的值時的URL更新功能有關。行爲編碼爲CMSMain.EditForm.js自動更新網址段的最簡單方法是什麼?

enter image description here

我剝離下來和定製CMS以絕對基本的電腦用戶或疏忽的客戶,誰最有可能跳過壓在頁面名稱變更更新URL按鈕可用。在這些情況下,如果URLSegment會自動更新,將會非常方便。

問:什麼是自動更新了網址段最簡單的方式,IE 模擬結果將出現在單擊改變Title場後,「更新URL」按鈕,

回答

7

您可以對SiteTree進行擴展,幷包含onBeforeWrite這樣的函數。這將做出改變,如果他們更新了標題,而非網址:

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); 
     } 
    } 
} 

卸下「如果」就意味着它總是被改變。

_config/config.yml添加此鏈接到已擴展:

SiteTree: 
    extensions: 
     - AutoURLSync 
+0

我改變了類名('SiteTreeExtension'似乎在覈心文件已經存在),放置在if語句括號(也試過,如果去除聲明)。我在**發佈** – Faloude

+0

上發生內部錯誤錯誤是什麼?如果刪除「if」,還存在錯誤嗎? – Barry

+0

'調用未定義的方法擴展:: onBeforeWrite()'使用一個唯一的類名併除去if語句(不改變if語句的內部部分)。 – Faloude

相關問題