Das bedeutet
wir ändern die aktuelle Version 2 ein wenig und zwar nur in der index.php.
$page = get_pageid_or_alias_from_url();
include "mylanguages.php";
Nach $page ..... wird nur das include hinzugefügt.
Das Script mylanguages.php liegt in der Root und sieht so aus:
$default_lang = 'de';if (empty($_SESSION['mylang'])){
$_SESSION['mylang'] = $default_lang;
}
if (!empty($params['lang']) && $params['lang'] <> $_SESSION['mylang']) {
$_SESSION['mylang'] = $params['lang'];
$faktor = 0;
$alias = '';
if ($params['lang'] == 'en') {
$faktor = 1;
} elseif ($params['lang'] == 'fr') {
$faktor = 2;
}
## usw . und so fort.
if ($faktor <> 0) {
$db = $_app->GetDb();
if (is_numeric($page))
{
$alias = $db->GetOne('SElECT content_alias FROM ' . cms_db_prefix() . 'content WHERE hierarchy=(SELECT REPLACE(cms_content.hierarchy,LEFT(hierarchy,5),LPAD((ABS(LEFT(hierarchy,5))+?),5,"0")) AS new FROM ' . cms_db_prefix() . 'content WHERE content_id=? )', array($faktor,$page));
}
else
{
$alias = $db->GetOne('SElECT content_alias FROM ' . cms_db_prefix() . 'content WHERE hierarchy=(SELECT REPLACE(cms_content.hierarchy,LEFT(hierarchy,5),LPAD((ABS(LEFT(hierarchy,5))+?),5,"0")) AS new FROM ' . cms_db_prefix() . 'content WHERE content_alias=? )', array($faktor,$page));
}
}
if (!empty($alias)) {
$page = $alias;
/*
* Hier können noch weitere Dinge an Smarty zugewiesen werden.
Die Variable $smarty liegt bereits vor
* also nur noch
$smarty->assignGlobal('Name',$wert);
*/
}
}
und das war es auch schon.
Die Funktionsweise ist einfach.
Ist der in der Url übergebene Parameter lang gleich en dann wird zur ersten Hierarchie eine 1 addiert und der dafür gegebene content_alias bzw. nach Bedarf die content_id geholt und an $page zugewiesen.
Das bedeutet es wird eine Seite geholt deren Hierarchie nicht mit 00001. anfängt sondern mit 00002. , die Subhierarchien bleiben die gleichen.
Wer will oder muss kann nach der Zuweisung zu $page auch noch andere Werte an Smarty übergeben die vielleicht für die Sprachsteuerung im Template benötigt werden könnten.
Da es aber ganz normale Inhalte sind kann man der jeweiligen Sprachgruppe auch ein entsprechend angepasstes Template verpassen.
Die ganze Sache ist einfach und ausbaufähig.
