2016-07-19 29 views
6

Bu soru, Pagealanının değerini değiştirirken URL Güncelleme özelliği ile ilgilidir. Davranış, CMSMain.EditForm.js'a kodlanmıştır.URL segmentini otomatik olarak güncellemenin en kolay yolu ne olurdu?

enter image description here

ben aşağı sıyırma ve büyük olasılıkla sayfa ad değişikliği üzerine Güncelleme URL'si düğmesine basarak atlayacak mutlak temel bilgisayar kullanıcı veya ihmalkar müşteri, kullanabileceği şekilde CMS özelleştirme ediyorum. Bu durumlarda, URLSegment otomatik olarak güncellenirse çok uygun olacaktır.

S: IE sonucu Title alanını değiştirerek sonra "Update URL" butonuna, tıklayarak üzerine oluşacak simüle otomatik olarak güncellenir URL segmenti için en basit yolu ne olurdu?

cevap

7

SiteTree için bir uzantı oluşturabilir ve bu gibi bir işlevi dahil edebilirsiniz. Onlar Başlık ve URL güncellenen bu değişikliği yapacak:

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

anlamına geleceğini "eğer" her zaman değiştirilir kaldırılıyor.

uzantısı bağlantı kurmak için _config/config.yml bu ekleyin: (`SiteTreeExtension` zaten çekirdek dosyalarında mevcut görünmektedir)

SiteTree: 
    extensions: 
     - AutoURLSync 
+0

Sınıf adını değiştirdi, ayrıca eğer çıkarmadan çalıştı (parantez içinde eğer deyimi yerleştirilir Beyan). Bir iç hata alıyorum ** Yayınla ** – Faloude

+0

Hata nedir? "if" öğesini kaldırırsanız hala bir hata var mı? – Barry

+0

'Tanımlanmamış yönteme yapılan çağrı Uzantı :: onBeforeWrite()' benzersiz bir sınıf adı kullanarak ve if ifadesinin kaldırılması (if ifadesinin iç kısmına dokunulmamış). – Faloude