2016-07-19 199 views
6

Questa domanda riguarda la funzione di aggiornamento URL quando si modifica il valore di un campo PageTitle. Il comportamento è codificato in CMSMain.EditForm.js.Quale sarebbe il modo più semplice per aggiornare automaticamente il segmento URL?

enter image description here

sto smontare e la personalizzazione del CMS per essere utilizzabile da un utente assoluto di base del computer o il client di negligenza, che molto probabilmente evitare di premere il pulsante di aggiornamento URL sul cambio di nome pagina. In questi casi sarebbe molto conveniente se lo URLSegment fosse aggiornato automaticamente.

D: Quale sarebbe il modo più semplice per avere automaticamente il segmento URL aggiornato, IE simulare il risultato che appare dopo aver fatto clic sul pulsante "Update URL", dopo modificando il campo Title?

risposta

7

È possibile creare un'estensione per SiteTree e includere la funzione suBeforeWrite in questo modo. Questo farà un cambiamento se aggiornate il titolo e non l'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); 
     } 
    } 
} 

Rimozione del "se" significherebbe che sempre è cambiato.

Aggiungi questo _config/config.yml per collegare l'estensione:

SiteTree: 
    extensions: 
     - AutoURLSync 
+0

ho cambiato il nome della classe ('SiteTreeExtension' sembra esistere già nel file core), collocato l'istruzione if tra parentesi (anche provato a rimuovere il caso dichiarazione). Viene visualizzato un errore interno su ** Pubblica ** – Faloude

+0

Qual è l'errore? c'è ancora un errore se si rimuove il "se"? – Barry

+0

'Chiamata al metodo non definito Extension :: onBeforeWrite()' utilizzando un nome classe univoco e rimuovendo l'istruzione if (lasciando intatta la parte interna dell'istruzione if). – Faloude

Problemi correlati