Im Frontend wird zwar der gewünschte URL im Adressfeld des Browsers angezeigt, sowohl nach einem Klick auf "Artikel anzeigen" im Backend als auch im Falle von Links. Angezeigt wird aber immer nur der Inhalt der Startseite, unabhängig von dem Artikel, bei dem ich im Backend "Artikel anzeigen" anklicke. Im Seiten-Template liefert $this->getArticleId() tatsächlich immer den Wert 1 für die Startseite.
Der gewünschte URL ist von dieser Form: /home/kategorie1/kategorie2/.../artikel.html
Es folgen die relevanten Programmausschnitte in boot.php, lib/class.my_urlrewriter.php, .htaccess[/i].
Code: Alles auswählen
rex_extension::register('URL_REWRITE',array('myUrlRewriter','rewrite'));
Code: Alles auswählen
class myUrlRewriter {
function rewrite($params) {
$arr_params=$params->getParams();
$art_id=$arr_params[id];
$article=rex_article::get($art_id);
$url="";
if(rex::isBackend()):
if(strpos($_SERVER['REQUEST_URI'],"?page=content")>0):
$url=set_art_url($article); // setzt und liefert den URL (als Spaltenwert in rex_article)
endif;
if(empty($url)):
$url="/".$article->getValue("art_custom_url");
# dieser rex_article-Parameter enthaelt den gewuenschten URL
endif;
endif;
return $url;
}
}
Code: Alles auswählen
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !^redaxo/.*
RewriteCond %{REQUEST_URI} !^media/.*
RewriteCond %{REQUEST_URI} !^google(.*).html*
RewriteRule ^(.*)$ index.php?%{QUERY_STRING} [L]