2016-07-19 4 views
6

यह प्रश्न PageTitle फ़ील्ड के मान को बदलते समय URL अद्यतन सुविधा के बारे में है। व्यवहार को CMSMain.EditForm.js में कोड किया गया है।यूआरएल सेगमेंट को स्वचालित रूप से अपडेट करने का सबसे आसान तरीका क्या होगा?

enter image description here

मैं नीचे अलग करना रहा हूँ और सीएमएस को अनुकूलित एक निरपेक्ष बुनियादी कम्प्यूटर उपयोगकर्ता या लापरवाह ग्राहक है, जो सबसे अधिक संभावना पेज का नाम बदलने पर अपडेट URL बटन दबाने छोड़ देगा द्वारा प्रयोग करने योग्य होने के लिए। इन मामलों में यह बहुत सुविधाजनक होगा अगर URLSegment स्वचालित रूप से अपडेट हो जाएगा।

Q:, सबसे आसान तरीका है स्वचालित रूप से URL खंड अद्यतन करने के लिए किया जाएगा आईई परिणाम कि Title क्षेत्र बदलते के बाद "अपडेट URL" बटन, क्लिक करने के बाद प्रकट होता अनुकरण?

उत्तर

7

आप साइटट्री के लिए एक विस्तार कर सकते हैं और इस तरह से फ़ंक्शन को इस तरह शामिल कर सकते हैं। अगर वे शीर्षक और नहीं यूआरएल नवीनीकृत यह एक परिवर्तन करना होगा:

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' पहले से ही कोर फाइलों में मौजूद रही दिखती है), कोष्ठक में अगर बयान रखा (भी अगर दूर करने की कोशिश की बयान)। मुझे ** पर एक आंतरिक त्रुटि मिलती है ** प्रकाशित करें – Faloude

+0

त्रुटि क्या है? यदि आप "if" को हटाते हैं तो क्या अभी भी एक त्रुटि है? – Barry

+0

'अपरिभाषित विधि एक्सटेंशन पर कॉल करें :: ऑनफ्रॉइट्राइट()' एक अद्वितीय क्लासनाम का उपयोग करके और अगर कथन को हटा रहा है (अगर कथन का अनचाहे हिस्सा छोड़ दिया गया है)। – Faloude

संबंधित मुद्दे

 संबंधित मुद्दे