version: 2.4.5
Wenn eine neue Seite erstellt wird, ist der Seitenname "New+ClassName". Also wenn es der Seitentype Page ist, dann ist der Seitenname "newPage".
So kann man ja die Seite auch abspeichern und auch veröffentlichen.
Erstellt man aber wieder einen neue Seite, dann wird wieder der Default Name vergeben. Die URL bekommt eine Nummer, aber der Titel bleibt.
Somit hat man 2 Probleme.
- Es wird kein Seitenname vergeben wei ja schon einer da ist
- Es entstehen viele Seiten mit dem gleichen Namen und einer doofen nummeriierten URL
Alles nicht so dolle.
Die Lösung für dieses Problem ist sehr einfach.
Man defniert die canPublish() Funktion in der Page Class neu. Dort prüft man ob der Seitenname den Klassenname enthält. Wenn ja dann kann zwar gespeichert werden aber nicht veröffentlicht. Wenn nein, dann kann diese Seite auch Live gehen.
/** * Überprüfen ob wir immer noch den default namen haben. * wenn ja dann dürfen wir nicht publish machen.... * @see SiteTree::canPublish() */ public function canPublish() { if(!strstr($this->Title, $this->ClassName)) { return true; } return false; }
