Hallo michael_engholm,
erstmal Willkommen im Contenido-Forum.
Der Beitrag ist nicht auf dem neuesten Stand und der Inhalt der betroffenen Datei "config.misc.php" hat sich im Laufe der Zeit etwas geändert. Im Grunde kannst du in der "config.misc.php" deinen UrlBuilder folgendermaßen konfigurieren:
Code: Alles auswählen
// name des zu verwendenden urlbuilders ('front_content', 'custom', 'custom_path' oder dein eigener urlbuilder)
// typ is ein string
$cfg['url_builder']['name'] = 'front_content';
// konfiguration des zu verwendenden urlbuilders
// typ is eine assoziative oder leere liste
$cfg['url_builder']['config'] = array();
Wenn du z. B. den UrlBuilder "custom_path" verwenden möchtest, ist die Konfiguration folgendermaßen anzupassen:
Code: Alles auswählen
$cfg['url_builder']['name'] = 'custom_path';
$cfg['url_builder']['config'] = array('prefix' => 'rocknroll', 'suffix' => '.4fb', 'separator' => ',');
Dann werden Urls nach dem Muster "
http://hostname/cms/{kategoriename}/roc ... rieid}.4fb" oder ähnlich generiert.
Damit solche Urls korrekt erkannt werden und wieder zur richtigen Seite mit den Parametern idlang, idcat, idat usw. umschrieben werden, braucht man eine .htaccess Datei. Du kannst die Regeln zum Umschreiben in der .htaccess definieren oder auch in einer PHP-Funktion, die am Anfang der Datei cms/front_content.php eingebunden wird.
Hier ein Beispiel einer .htaccess mit ein paar gängigen Regeln, die zum UrlBuilder "custom_path" passen. Die .htaccess Datei ist in das Installationsverzeichnis von Contenido abzulegen und sollte folgenden Inhalt haben:
Code: Alles auswählen
<IfModule mod_rewrite.c>
# Enable rewrite engine
RewriteEngine on
# Specify a base URL-path for the rules
RewriteBase /cms
# Don't rewrite requests to existing files, folders, symlinks
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
# Some 'custom_path' related rules
RewriteRule rocknroll,a,([0-9]*)\.4fb.*$ front_content.php?idcat=$1 [NC,QSA,L]
RewriteRule rocknroll,b,([0-9]*),([0-9]*),([0-9]*)\.4fb.*$ front_content.php?idlang=$1&idcat=$2&idart=$3 [NC,QSA,L]
RewriteRule rocknroll,search,([0-9]*),([0-9]*),([0-9]*)\.4fb.*$ front_content.php?idlang=$1&idcat=$2&idart=$3 [NC,QSA,L]
RewriteRule rocknroll,changelang,([0-9]*),_c_p_,([0-9]*)\.4fb.*$ front_content.php?changelang=$1&whichparamisthis=$2 [NC,QSA,L]
# Pass other requests to front_content.php
RewriteRule ^.*$ front_content.php [QSA,NC,L]
</IfModule>
Sollte das auf Anhieb nicht funktionieren, liegt das sehr wahrscheinlich an der Konfiguration des Webservers und/oder des Virtual-Hosts. Hier kann ich leider nicht weiter darauf eingehen, dazu müsste man sehr weit ausholen und das Thema ist auch sehr allgemein, hat also mit Contenido nichts zu tun. Es gibt aber genug Infos im Netz zur Konfiguration/Einrichtung von mod_rewrite, .htaccess und Webserver.
Wenn es dennoch klappt, wirst du einige Links finden, die dennoch nicht umschrieben werden. Damit alle Links umschrieben werden können, musst du darauf achten, das alle Links in Modulen/Plugins von der Klasse Contenido_Url erstellt werden werden, z. B.:
Code: Alles auswählen
$aParams = array('idcat' => $idcat, 'lang' => $lang);
Contenido_Url::getInstance()->build($aParams);
Es bleiben noch Links, die per wysiwyg-Editor gesetzt werden. Diese kannst du in der Chain 'Contenido.Frontend.HTMLCodeOutput' ermitteln und umschreiben. Dabei wird der Chain-Funktion, die HTML-Ausgabe der Seite übergeben und in der Funktion hast du die Möglichkeit, z. B. mit regulären Ausdrücken nach Links mit front_content.php... zu suchen und diese gegen die Clean-URLs zu ersetzen, bevor die HTML-Ausgabe endgültig an den Client geht.
Du kannst dir auch das AMR-Plugin unter
http://forum.contenido.org/viewtopic.php?f=66&t=21578 ansehen, das dir vieles davon abnimmt, und ein paar zusätzliche Features hat. Das Plugin ist zwar nicht ganz fehlerfrei und wird sicherlich nicht den Ansprüchen von Jedem gerecht, ist aber in der Regel einfach zu handhaben und hilfreich.
Gruß
xmurrix