In CMS Made Simple gibt es die Möglichkeit einer Seite eine individuelle Seiten-URL zuzuweisen. Dies ist praktisch, da ein Alias eindeutig sein muss und somit eine Seite nur eine kontakt.htm aufweisen kann. Mittels der Seiten-URLs können so mehrere kontakt.html erstellt werden.
Hier ein Beispiel einer solchen Konfiguration:
Firma 1
– Über uns
– Referenzen
– Kontakt
Firma 2
– Über uns
– Referenzen
– Kontakt
Firma 3
– Über uns
– Referenzen
– Kontakt
Dies ergibt mit den Seiten-Alias normalerweise folgende Struktur:
domain.ch/firma1/kontakt.htm
domain.ch/firma2/kontakt-1.htm
domain.ch/firma3/kontakt-2.htm
Mittels eines UDT kann die URL Erstellung automatisiert werden. Man erstelle dazu den UDT (Benutzerdefinierter Tag) «ContentEditPost»:
$gCms = cmsms();
$db = cmsms()->GetDb();
$id = $params['content']->Id();
$parentId = $params['content']->ParentId();
$url = $params['content']->URL();
$menutext = $params['content']->MenuText();
// root Alias ermitteln
$contentops = $gCms->GetContentOperations();
$pageId = $id;
$rootAlias = '';
while( $pageId > 0 ) {
$content = $contentops->LoadContentFromId($pageId);
if( !is_object( $content ) ) {
$rootAlias = '';
break;
}
$rootAlias = $content->Alias();
$pageId = $content->ParentId();
}
# get url from parent page
$query = "SELECT page_url FROM ". cms_db_prefix() . "content WHERE content_id = ? ";
$page_url = $db->GetOne($query, array($parentId));
if (!$url or strpos($url,$page_url) == false) {
$urlalias = $menutext;
$urlalias = mb_strtolower($urlalias, 'UTF-8');
// Alle deutschen Umlaute und Sonderfälle austauschen
$urlalias = str_replace(
array('ä', 'ö', 'ü', 'ß', ' - ', ' + ', '_', ' / ', '/', 'é', 'è', 'à', 'ç'),
array('ae', 'oe', 'ue', 'ss', '-', '-', '-', '-', '-', 'e', 'e', 'à', 'c'),
$urlalias);
// Alle restlichen Leerzeichen zu Bindestrichen
$urlalias=preg_replace('/s/s', '-', $urlalias);
// Alles löschen, was nicht alphanumerisch ist
$urlalias = preg_replace('/[^a-z0-9_-]/isU', '', $urlalias);
$urlalias = trim($urlalias);
$url = $page_url . "/". $urlalias;
$query = "Update ". cms_db_prefix() . "content set page_url = '".$url."' WHERE content_id = ? ";
$db->Execute($query,array($id));
}
Nun muss der UDT noch in die Ereignisverwaltung eingefügt werden:
Nun muss das Ereignis «ContentEditPost» gesucht werden. Mit klick auf den Namen kann man das Ereignis bearbeiten. Nun den UDT «ContentEditPost» hinzufügen.