BlatterTech Informatik

blattertech informatik Lukas Blatter Niederlenzerstrasse 21
5600 Lenzburg/AGSwitzerland

079 569 25 90
http://www.blattertech.ch

CMSMS: Automatisch Seiten-Urls generieren

Fügen Sie unsere Adresse einfach per vCard Ihrem Adressbuch hinzu.

Folgen Sie uns auf Twitter und seien Sie immer up2date: Trends, Link Tipps, Insider-Infos und mehr …

Abonnieren Sie unseren ungekürzten RSS-Feed und verpassen Sie zukünftig keinen interessanten Beitrag mehr!

CMSMS: Automatisch Seiten-Urls generieren

4. Januar 2012 |  SNIPPLETS |  CMS MADE SIMPLE0 Kommentare

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



 

Über den Autor:

Lukas Blatter

Lukas Blatter bloggt und twittert seit 2009 aus Leidenschaft diverse Themen rund um Webdesign, PHP, CMS Made Simple, Typo3, Computer und weiteres.

Er ist Gründer und Besitzer von blattertech informatik, Ehemann und Vater einer tollen Kinderschar.

Kommentare

Zurzeit gibt es keine Kommentare zu diesem Artikel.


Kommentar verfassen

Felder mit einem * müssen ausgefüllt sein