2016-07-19 5 views
6

この質問は、PageTitleフィールドの値を変更する際のURL更新機能に関するものです。この動作はCMSMain.EditForm.jsにコード化されています。自動的にURLセグメントを更新する最も簡単な方法は何ですか?

enter image description here

私がダウンし、ストリッピングし、最も可能性の高いページ名変更時更新URLボタンを押してスキップします絶対基本的なコンピュータユーザーまたは過失クライアントで使用できるようにCMSをカスタマイズしています。このような場合、URLSegmentが自動的に更新されると非常に便利です。

Q:何がIE 結果Titleフィールドを変更た後、「更新URL」ボタン、をクリックすると表示されますをシミュレートし、自動的に更新されたURLのセグメントを持ってする最も簡単な方法でしょうか?

答えて

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

をそれは常に変化している意味するであろう「場合」の削除します。

拡張アップリンクする_config/config.ymlでこれを追加します( `SiteTreeExtension`が既にコアファイルに存在しているようだ)

SiteTree: 
    extensions: 
     - AutoURLSync 
+0

私はクラス名を変更し、また場合取り除いてみました(括弧内のif文を置いステートメント)。 **内部でエラーが発生** – Faloude

+0

エラーは何ですか? "if"を削除してもまだエラーはありますか? – Barry

+0

'UndefinedメソッドExtension :: onBeforeWrite()を呼び出し、一意のクラス名を使用してif文を削除します(if文の内部はそのままです)。 – Faloude

関連する問題