[Frage] Sprachselektor Menü funktioniert nur zu teilweise TYPO3-Version: 6.1.7

  • drkite drkite
    Padawan
    0 x
    40 Beiträge
    0 Hilfreiche Beiträge
    30. 04. 2014, 18:38

    Hallo,

    ich versuche gerade eine Seite auf 6.2 umzustellen. Leider funktioniert jetzt mein kleines Sprachselektorskript nicht mehr (ist schon uralt):

    1. SPRACHE = PHP_SCRIPT
    2. SPRACHE.file = http://meinedomain/fileadmin/scripts/example_languageMenu.php

    Das Skript zeigt drei Fahnen und dimmt die jeweils nicht verfügbaren. Aktuell zeigt meine Seite einfach gar nichts mehr an dieser Stelle.

    Also habe ich es mit dem Beispiel von [url]http://docs.typo3.org/TYPO3/FrontendLocalizationGuide/BasicSetupOfALocalizedWebsite/LanguageSelectorMenu/Index.html[/url] versucht.

    So sieht mein TS aus:

    1. SPRACHE = HMENU
    2. SPRACHE {
    3. special = language
    4. special.value = 1,2,3
    5. special.normalWhenNoLanguage = 1
    6. 1 = GMENU
    7. 1.NO {
    8. XY = [5.w]+4, [5.h]+4
    9. backColor = white
    10. 5 = IMAGE
    11. 5.file = media/flags/flag_de.gif || media/flags/flag_uk.gif || media/flags/flag_fr.gif
    12. 5.offset = 2,2
    13. }
    14.  
    15. 1.ACT < SPRACHE.1.NO
    16. 1.ACT=1
    17. 1.ACT.backColor = black
    18.  
    19. 1.USERDEF1 < SPRACHE.1.NO
    20. 1.USERDEF1.5.file = media/flags/flag_de_d.gif || media/flags/flag_uk_d.gif || media/flags/flag_fr_d.gif
    21. 1.USERDEF1.noLink = 0
    22.  
    23. 1.USERDEF2 < SPRACHE.1.USERDEF1
    24. 1.USERDEF2.backColor = green
    25.  
    26. }

    (aus irgendwelchen Gründen ist Deutsch bei mir "1")

    Klappt soweit ganz gut, die Links stimmen, aber die IMGs nicht. Das ist der erzeugte Code auf der deutschen Seite (ohne die <a>-Links):

    1. <img src="typo3temp/menu/d9f0e65500.gif" width="25" height="17" border="0" />
    2. <img src="typo3temp/menu/c3d7132b5a.gif" width="25" height="17" border="0" />
    3. <img src="typo3temp/menu/5496ed684a.gif" width="25" height="17" border="0" />

    Und so sieht der Code aus, wenn ich z.B. die zweite Sprache ausgewählt habe:

    1. <img src="typo3temp/menu/d9f0e65500.gif" width="25" height="17" border="0" />
    2. <img src="typo3temp/menu/4a0e012df5.gif" width="120" height="50" border="0" />
    3. <img src="typo3temp/menu/5496ed684a.gif" width="25" height="17" border="0" />

    Die Flagge der ausgewählten Sprache ist nicht sichtbar, nur ein schwarzer Hintergrund in einem IMG, das viel größer ist als die anderen. Ich habe es mehrmals geprüft - die gifs für UK und FR sind vorhanden, in beiden Versionen.

    Anscheinend spielt der "CUR"-Status bei allen anderen ausser der deutschen Sprache nicht mit. Die fraglichen Seiten sind auch immer in allen Übersetzungen vorhanden.

    Wo liegt der Fehler? Hat jemand eine Idee?

    Bernhard


  • 1
  • drkite drkite
    Padawan
    0 x
    40 Beiträge
    0 Hilfreiche Beiträge
    01. 05. 2014, 11:31

    Ach ja, das ist das Script, das jetzt mit typo 6.2 leider nicht mehr funktioniert:

    1. <?php
    2. if (!is_object($this)) die ('Error: No parent object present.');
    3.  
    4.  
    5. // First, select all pages_language_overlay records on the current page. Each represents a possibility for a language.
    6. $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'pages_language_overlay', 'pid='.intval($GLOBALS['TSFE']->id).$GLOBALS['TSFE']->sys_page->enableFields('pages_language_overlay'), 'sys_language_uid');
    7.  
    8. $langArr = array();
    9. while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
    10. $langArr[$row['sys_language_uid']] = $row['title'];
    11. }
    12.  
    13. // Set each icon. If the language is the current, red arrow is printed to the left. If the language is NOT found (represented by a pages_language_overlay record on this page), the icon is dimmed.
    14. $flags = array();
    15. $flags[] = '<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=1').'" target="_top"><img src="media/flags/flag_de.gif" width="21" height="13" hspace="5" border="0" alt="" /></a>';
    16. $flags[] = '<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=2').'" target="_top"><img src="media/flags/flag_uk'.($langArr[2]?'':'_d').'.gif" width="21" height="13" hspace="5" border="0" alt="" /></a>';
    17. $flags[] = '<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=3').'" target="_top"><img src="media/flags/flag_fr'.($langArr[3]?'':'_d').'.gif" width="21" height="13" hspace="5" border="0" alt="" /></a>';
    18.  
    19. // Make the little menu. Notice, the menu does ONLY transfer the page-id and the "L" variable (which is also SPECIFIC for this website because "L" has been used in the extension template used to control the language setup)
    20. $content = implode('',$flags);
    21.  
    22. ?>

    Vielleicht weiß ja jemand, was man an dem Script ändern muss, damit es wieder läuft?
    Eingebunden wird es folgendermaßen:

    1. page.10.marks {
    2. SPRACHE = PHP_SCRIPT
    3. SPRACHE.file = fileadmin/scripts/example_languageMenu.php
    4. }

    Bernhard

  • toifel toifel
    Jedi-Ratsmitglied
    0 x
    831 Beiträge
    96 Hilfreiche Beiträge
    02. 05. 2014, 09:50

    Zum TS-Code: Auffällig finde ich auf den ersten Blick nur, dass du unten was vom CUR-Status des Menüs schreibst, im Setup für das GMENU ist aber gar kein CUR definiert wird.

    Zum PHP-Code: Der Code ansicht sollte noch funktionieren, allerdings gibt es das cObject PHP_SCRIPT nicht mehr. Für sowas sollte USER.userFunc genutzt werden - das PHP gehört dann in eine entsprechende Klasse.
    Ein einfaches Beispiel gibt es hier: http://www.typo3wizard.com/de/snippets/allgemeine-probleme-und-loesungen/einfache-userfunc.html

  • 1