Suche
Suche Menü

CMSMS: Automatisch Seiten-Urls generieren

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

 

Ereignisverwaltung

Ereignisverwaltung

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.

UDT dem Ereignis zuweisen

UDT dem Ereignis zuweisen

 

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.