Seite 1 von 1

GELÖST - Sprachwahl mit Flaggen-Anzeige - Cookie

Verfasst: Mi 24. Jun 2009, 08:30
von ameise
Guten Morgen zusammen!

Habe ein 3-sprachiges 4.8.12er-Projekt laufen - deutsch (1), englisch (2), türkisch (3).
Da habe ich das Flaggen-Modul 2.2 von Alexander Zimmerhofer eingebaut. Allerdings war das einmal für die 4.4.x-Version konzipiert und scheint unter der 4.8.12er nicht ganz zu funktionieren...

BUG 1
Leider wird beim Seitenaufruf das Flaggen-Menü nicht angezeigt.
Erst bei händischem Aufruf (&changelang=2 bzw. 3 angefügt) einer anderen Sprache erscheinen die Flaggen für die übrigen Sprachen.

BUG 2
Es wird kein cookie gesetzt o.ä., dass sich das System "merkt", in welcher Sprache es sich befindet.
Da das Logo auf "front_content.php" = Home verweist, wechselt man von einer anderen Sprache immer wieder zurück in die deutsche Version.

Ich bin leider kein PHP/SQL-"Könner"... Auch arbeite ich erst seit einigen Wochen mit Contenido - kenne mich mit der System-Umgebung nicht wirklich aus.
Könnte sich jemand das Modul (Code unten angefügt) einmal anschauen und evtl. für meine "Wünsche" anpassen?
Fänd ich klasse!

Habe bisher noch nichts vergleichbares (ausser Sprachwechsler via dropdown-Liste) gefunden.

VIELEN DANK IM VORRAUS!!!

Beispielcode "Flaggenmenü" 2.2 für 4.4.x:

Code: Alles auswählen

<?php
//Sprachmodul - Version 2.2
//für Contenido 4.4.x
//Alexander Zimmerhofer - alexander(at)zimmerhofer.org

//Sprachmodul zeigt kleine Landesflaggen zum Umschalten der Sprache an, wenn die entsprechenden Kategorien sowie die entsprechenden Artikel online geschaltet sind.

//Konfiguration...
//Diese Zeilen konfigurieren das Modul...
//Aufbau: $picture["Sprach-ID"] = "PFAD zur Flagge";
$picture["1"] = "images/flags/de.png";
$picture["2"] = "images/flags/gb.jpng";
$picture["3"] = "images/flags/tr.png";



//AB HIER NICHTS MEHR ANDERN...
$mydb = new DB_Contenido;

$mydb ->query ("SELECT ARTLANG.idlang, ARTLANG.online, CATLANG.visible FROM ".$cfg["tab"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["cat_lang"]." AS CATLANG WHERE ARTLANG.idart =  '20' AND CATLANG.idcat = '1' AND ARTLANG.idlang = CATLANG.idlang ORDER BY ARTLANG.idlang ASC");

while ($mydb -> next_record())
{
  while(list($lang_id,$picture_pfad) = each($picture))
  {
      if(strstr($REQUEST_URI,"changeview=edit") || $submit=="editcontent" || strstr($REQUEST_URI,"area=con_editcontent"))
      {
         if (($lang != ($mydb->f("idlang"))) and (($mydb->f("idlang")) == $lang_id))
         {
            echo "<a href=".$sess->url("front_content.php?client=$client&changelang=".($mydb->f("idlang"))."&idart=$idart");
            echo "><img src=".$picture_pfad." border='0' /></a>&nbsp;";       
         }
      }
      else
      {
         if (($lang != ($mydb->f("idlang"))) and (($mydb->f("idlang")) == $lang_id) and (($mydb->f("online")) == 1) and (($mydb->f("visible")) == 1))
         {
               echo "<a href=".$sess->url("front_content.php?client=$client&changelang=".($mydb->f("idlang"))."&idart=$idart");
               echo "><img src=".$picture_pfad." border='0' /></a>&nbsp;";
         }
      }
   }
   reset($picture);
}
?>

Re: Sprachwahl mit Flaggen-Anzeige - Cookie (von 4.4.x -> 4.8.x)

Verfasst: Mi 24. Jun 2009, 18:13
von _wiewo_
einfach mal drübergeguckt

die abfragen für den backend fand ich irgendwie nich schlau ^^ kein sinn drin gesehen

Code: Alles auswählen

<?php
$aPictures["1"] = "./images/flags/de.png";
$aPictures["2"] = "./images/flags/gb.jpng";
$aPictures["3"] = "./images/flags/tr.png";

$db->query ("
SELECT 
	ARTLANG.idlang, 
	ARTLANG.online, 
	CATLANG.visible 
FROM 
	" . $cfg["tab"]["art_lang"] . " AS ARTLANG, 
	" . $cfg["tab"]["cat_lang"] . " AS CATLANG 
WHERE 
	ARTLANG.idart =  '{$idart}' 
AND 
	CATLANG.idcat = '{$idcat}' 
AND 
	ARTLANG.idlang = CATLANG.idlang 
ORDER BY 
	ARTLANG.idlang ASC
");

while ($db->next_record()) {

	foreach ($aPictures as $iLangID => $sPicturePath) {

		if (($db->f("idlang") != $lang && $db->f("idlang") == $iLangID) and ($db->f("online") == 1 && $db->f("visible") == 1)) {

			echo "<a href=" . Contenido_Url::getInstance()->build(array('client' => $client, 'changelang' => $db->f("idlang"), 'idart' => $idart)) . "><img src=" . $sPicturePath . " /></a>&nbsp;";

		}
	}

}
?>
PS : $picture["1"] = "./images/flags/de.png"; ist schneller als $picture["1"] = "images/flags/de.png";

border='0' hat da nicht zu suchen :) css ;)

Re: GELÖST - Sprachwahl mit Flaggen-Anzeige - Cookie

Verfasst: Mo 22. Mär 2010, 18:52
von sherman
Hallo wiewo:

Ich habe deinen code mal in einer 4.8.12er Installation getestet:
Fatal error: Uncaught exception 'InvalidArgumentException' with message '$param[lang] must be set!' in /homepages/20/d264180393/htdocs/testcms/contenido/classes/Url/Contenido_Url.class.php:137 Stack trace: #0 /homepages/20/d264180393/htdocs/testcms/contenido/external/backendedit/front_content.php(959) : eval()'d code(489): Contenido_Url->build(Array) #1 /homepages/20/d264180393/htdocs/testcms/contenido/external/backendedit/front_content.php(959): eval() #2 {main} thrown in /homepages/20/d264180393/htdocs/testcms/contenido/classes/Url/Contenido_Url.class.php on line 137
Verstehe leider nicht die Fehlermeldung, koenntest du mir bitte helfen?!

Danke.
Sherman

Re: GELÖST - Sprachwahl mit Flaggen-Anzeige - Cookie

Verfasst: Mo 22. Mär 2010, 19:48
von _wiewo_
sorry

Code: Alles auswählen

echo "<a href=" . Contenido_Url::getInstance()->build(array('client' => $client, 'changelang' => $db->f("idlang"), 'lang' => $db->f("idlang"), 'idart' => $idart)) . "><img src=" . $sPicturePath . " /></a>&nbsp;";

Re: GELÖST - Sprachwahl mit Flaggen-Anzeige - Cookie

Verfasst: Di 23. Mär 2010, 23:27
von sherman
Perfekt!!!
Klappt super :D

Vielen Dank!

Re: GELÖST - Sprachwahl mit Flaggen-Anzeige - Cookie

Verfasst: Di 23. Mär 2010, 23:40
von _wiewo_
kannst den client teil auch weglassen, idlang ist auch klientenspezifisch :)