Contao-Camp 2024
Ergebnis 1 bis 29 von 29

Thema: 3.1.x MM mit Sprachwechsler funktioniert nicht

  1. #1
    Contao-Nutzer
    Registriert seit
    04.12.2010.
    Beiträge
    21

    Standard 3.1.x MM mit Sprachwechsler funktioniert nicht

    Hat es jemand zu laufen gebracht:

    seite.com/de/detail/eintag1.html

    wenn ich jetzt auf dem Sprachwechsler eine andere Sprache klicke
    springt es wieder auf

    seite.com/en/detail.html

    sollte aber

    seite.com/en/detail/eintag1.html

    (im Sprachwechsler Modul habe ich "URL-Parameter beibehalten" angeklickt)

  2. #2
    Contao-Nutzer
    Registriert seit
    28.01.2011.
    Ort
    Winterthur, Schweiz
    Beiträge
    169

    Standard Ebenso in MM unter Contao 2.11.12

    Das ist bei mir auch so:
    Fallback-Sprachseiten für changelanguage sind gesetzt.
    Alias des Eintrags ist für alle Sprachen derselbe.

    Die Sprachseiten-Adressen sind wie folgt:
    DE: produkt/detail.html
    FR: produit/detail.html
    EN: product/detail.html

    Beim Sprache wechseln über das Modul changelanguage springt man aber nicht auf die Detailseite, sondern auf die eigentliche Fallback-Seite (produkt.html, produit.html oder product.html), wo sich ja das Modul für die MM-Frontendliste befindet.

    Problem von MM oder changelanguage? Fehlende Kommunikation?

    Beste Grüsse
    Nick

  3. #3
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Nein einfach fehlende Zeit und fehlendes Projekt wo dann dafür Geld bereitsteht.

  4. #4
    Contao-Nutzer
    Registriert seit
    28.01.2011.
    Ort
    Winterthur, Schweiz
    Beiträge
    169

    Standard

    Zitat Zitat von andreasisaak Beitrag anzeigen
    Nein einfach fehlende Zeit und fehlendes Projekt wo dann dafür Geld bereitsteht.
    Zu welchem Teil des Fundraisings würde denn das gehören?
    https://now.metamodel.me/en/fundraising

  5. #5
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Dafür gibt es kein spezielles Fundraising das kann aber in Form eines Auftrags erledigt werden.

  6. #6
    Contao-Nutzer
    Registriert seit
    10.02.2012.
    Ort
    Basel
    Beiträge
    213
    Partner-ID
    8602

    Standard

    Ich habe dasselbe Problem.

    Hat inzwischen jemand eine Lösung dafür gefunden oder etwas programmiert?

  7. #7
    Contao-Nutzer
    Registriert seit
    10.02.2012.
    Ort
    Basel
    Beiträge
    213
    Partner-ID
    8602

    Standard Hinweis

    Ich fange gerade mit den Tips aus diesem Thread zu programmieren.

    Mit dem translateUrlParameters-Hook könnte man schnell zum Ziel kommen.

  8. #8
    Contao-Nutzer
    Registriert seit
    10.02.2012.
    Ort
    Basel
    Beiträge
    213
    Partner-ID
    8602

    Standard Selbst gemacht

    Ich konnte mir inzwischen von diesem Thread inspiriert eine Lösung selberprogrammieren.

    Achtung:
    - ist nur für meinen Fall getestet
    - ich verwende URLs ohne .html-Endung, kann mir aber vorstellen dass es mit auch problemlos funktionieren kann
    - es gibt ziemlich sicher Fälle die durch diese Lösung nicht abgedeckt sind
    - ich hoffe sie ist jemandem Inspiration für eigene Lösungen

    PHP-Code:
    //*** z_myproject/config/config.php

    // hook
     
    $GLOBALS['TL_HOOKS']['translateUrlParameters'][] = array('MySpace\TranslatorHelper''translateMMUrls');

    //*** z_myproject/classes/TranslatorHelper

    namespace MySpace;

    class 
    TranslatorHelper extends \Frontend
    {
         
    /***
         * Hook callback for changelanguage extension to support language switching on product reader page
         ****/    
         
         
    public function translateMMUrls($arrParams$strLanguage$arrRootPage) {
            
            
    $uri =     $_SERVER["REQUEST_URI"];
            
    $websitePath $GLOBALS['TL_CONFIG']['websitePath'];

            
    // remove website path from uri
            
    if( strpos($uri$websitePath) === 0){
                
    $uri substr($uristrlen($websitePath)+1);
            }
                    
            
    // remove index.php fragment from uri
            
    if(strlen($uri) > 0){
                if( 
    strpos($uri'index.php') === 0){
                    
    $uri substr($uristrlen('index.php/'));
                }
            }
            
            
    // handle remaining arguments, and do that only if there are more than one // no handling if there are three
            
    $uri explode('/'$uri);
            if(
    count($uri) == 2){     // 1. Teil ist Alias des MM, 2. Teil ist Alias des MM-Objektes        
            
                
    \Database::getInstance();
                
    // the last part of query prevents uppercase/lowercase mixing, compare here: http://stackoverflow.com/a/4853844/603569
                
    $objData = \Database::getInstance()->prepare('SELECT att_id, item_id FROM tl_metamodel_translatedtext WHERE value = ? and langcode = ? AND value COLLATE UTF8_BIN = LOWER(value COLLATE UTF8_BIN)')
                    ->
    execute($uri[1], $GLOBALS['TL_LANGUAGE']);
                
    $data $objData->fetchAllAssoc();
        
                if(
    count($data[0]) == 2){
                    
    $objData = \Database::getInstance()->prepare('SELECT value FROM tl_metamodel_translatedtext WHERE att_id = ? AND item_id =? AND langcode =?')
                    ->
    execute($data[0][att_id], $data[0][item_id], $strLanguage);
                    
                    
    $data $objData->fetchAllAssoc();
                
                    
    $value $data[0][value];
                
                    
    // compare: https://github.com/terminal42/contao-changelanguage/blob/master/ModuleChangeLanguage.php Z207 ff.
                    
    $GLOBALS['TL_AUTO_ITEM'][] = $value;
                    
    $arrParams['url'][$value] = $value;        
                }
            }
        
        return 
    $arrParams;
        }

    Erläuterungen
    [changelanguage] bietet einen Hook mit dessen Hilfe man eigene URI-parts beisteuern kann.
    In obiger Funktion werden die Argumente aus der URI extrahiert. Wenn ein Alias eines Metamodels und ein Alias eines Metamodel-Objektes vorhanden sind, werden die passenden Übersetzungen aus der Datenbank geholt und an [changelanguage] übergeben.
    Geändert von Webbaumeister (20.08.2014 um 14:14 Uhr)

  9. #9
    Contao-Nutzer
    Registriert seit
    10.02.2012.
    Ort
    Basel
    Beiträge
    213
    Partner-ID
    8602

    Standard Update

    Eine bessere Variante des obigen Codeblocks findet sich unter diesem Github-Ticket.

  10. #10
    Contao-Nutzer
    Registriert seit
    17.10.2014.
    Beiträge
    72

    Standard Modul dazu

    Ich habe das in ein Modul gefasst:

    https://github.com/iMi-digital/imi_mm_changelanguage

    Ist aber noch nicht perfekt:

    https://community.contao.org/de/show...109#post373109

    Grüße,

    Alex

  11. #11
    Contao-Nutzer
    Registriert seit
    17.10.2014.
    Beiträge
    72

    Multimedia Modul version 1.0.0

    Version 1.0.0 des Moduls ist jetzt fertig. Die metamodels werden in den meisten Fällen automatisch erkannt. Außer dem installieren ist dann nichts zu tun.

    https://github.com/iMi-digital/imi_mm_changelanguage

  12. #12
    Contao-Nutzer
    Registriert seit
    28.01.2011.
    Ort
    Winterthur, Schweiz
    Beiträge
    169

    Standard

    Zitat Zitat von s3lf Beitrag anzeigen
    Version 1.0.0 des Moduls ist jetzt fertig.
    Hey Danke @s3lf!
    Werde es mir mal anschauen.

    Lg Nick

  13. #13
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Hallo s3lf,

    verstehe ich das Tool richtig, dass es in der URL nach "auto_item" lauscht? https://github.com/iMi-digital/imi_m...erver.php#L112

    ... was mache ich, wenn es den "key" in meiner URL nicht gibt?

    Gruss

    Edit: habs glaube ich gefunden: https://github.com/iMi-digital/imi_m...#configuration

  14. #14
    Contao-Nutzer
    Registriert seit
    20.02.2013.
    Beiträge
    7

    Standard

    Hi,

    auto_item ist so ne Art Pseudo Parameter welcher von Contao i.d.R. auf den letzten Teil der URL bei Unterseiten gesetzt wird.
    Das gibt es z.B. auch bei Newseinträgen, dann ist es der News-Alias.

    Grüße,

    Alex

  15. #15

  16. #16
    Contao-Nutzer
    Registriert seit
    08.10.2015.
    Beiträge
    15

    Standard

    Hallo,

    gibt es eine Möglichkeit, das Modul ohne Composer zu installieren?

    Habe mit Contao 3.5.4 das Problem, wenn ich Composer installiert habe, das Modul auch schon zur Liste hinzugefügt habe und dann beim Pakete aktualisieren, dass es einige Sekunden läd aber dann bekomme ich nur eine weiße Seite angezeigt. Habe Composer bereits wieder deinstalliert.

  17. #17
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    ... probieren...

    wahrscheinlich musst Du eine eigene autoload.php erstellen

  18. #18
    Contao-Nutzer
    Registriert seit
    08.10.2015.
    Beiträge
    15

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    ... probieren...

    wahrscheinlich musst Du eine eigene autoload.php erstellen
    Wie würdest du da dran gehen, das Modul ohne Composer zu installieren?

    Habe imi_mm_changelanguage von Github runtergeladen. Einen Ordner "imi_mm_changelanguage" unter Module erstellt und die heruntergeladenen Daten dort hinein kopiert.

    Die Funktion greift aber noch nicht. Was mache ich falsch?

    Danke und Gruß!
    Geändert von c_jack_sparrow (20.12.2015 um 12:10 Uhr)

  19. #19
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    hmm... auf Github siehts so aus, als ob alles da wäre...

    alle Caches gelöscht? (Contao + MM)

  20. #20
    Contao-Nutzer
    Registriert seit
    08.10.2015.
    Beiträge
    15

    Standard

    Ja, hatte ich bereits versucht mit dem Cache löschen... leider noch das gleiche Ergebnis.

    Hat es vielleicht etwas damit zu tun, dass die verwendeten Sprachen Deutsch und Chinesisch sind (DE und ZH)? Denke nicht oder?

    Wie könnte ich jetzt am besten vorgehen? Das Modul wird unter Einstellungen / inaktive Erweiterungen in der Liste auch angezeigt [imi_mm_changelanguage].

    Edit: Sorry, mein Fehler! Habe im Sprachwechsler-Modul die Option "URL-Parameter beibehalten" nicht aktiviert gehabt. Jetzt funktioniert es prima!

    Also auch ohne Composer installierbar! Danke!
    Geändert von c_jack_sparrow (20.12.2015 um 12:58 Uhr)

  21. #21
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard [changelanguage] V3

    Kleiner Hinweis für "Suchende":

    in [changelanguage] V3 gibt es den in https://github.com/iMi-digital/imi_m...#configuration verwendeten HOOK so nicht mehr - der Aufruf ist nun https://github.com/terminal42/contao...d#example-code

    ... ob der in der Erweiterung verwendete Code zum Finden von "MMs" in CEs und FE-Moduln kann ich nicht sagen - ich habe meine (Detail-)Seiten-IDs in einer kleinen Erweiterung vorgegeben, bei denen die Sprach-Wechsel-URLs angepasst werden sollen - da hier die Filterparameter recht individuell sein können, ist ein "allgemeines Modul" eher schwierig zu gestalten; ggf. könnte man die Informationen aus den Render-Einstellungen abfragen...

  22. #22
    Contao-Nutzer
    Registriert seit
    17.10.2014.
    Beiträge
    72

    Standard

    @zonkey: We love Pull Requests :-)

  23. #23

  24. #24
    Contao-Nutzer
    Registriert seit
    17.10.2014.
    Beiträge
    72

    Standard

    Ist in der 1.2.0 vom IMI_MM_ChangeModels korrigiert (Kompatibel mit ChangeLanguage 3).

  25. #25
    Contao-Nutzer
    Registriert seit
    03.03.2015.
    Beiträge
    32

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    ... ob der in der Erweiterung verwendete Code zum Finden von "MMs" in CEs und FE-Moduln kann ich nicht sagen - ich habe meine (Detail-)Seiten-IDs in einer kleinen Erweiterung vorgegeben, bei denen die Sprach-Wechsel-URLs angepasst werden sollen - da hier die Filterparameter recht individuell sein können, ist ein "allgemeines Modul" eher schwierig zu gestalten; ggf. könnte man die Informationen aus den Render-Einstellungen abfragen...
    Hi Zonky,

    ich hatte Dich auf der Konferenz schon nach einer Lösung gefragt, für den Sprachwechsel auf der Detailseite.

    Hast Du bei Deinem Beispiel, nur Deine Erweiterung benutzt oder hast Du auch den contaao-changelanguage-master oder imi_mm_changelanguage benutzt?

    Ich hab nun alles fünfmal durchgelesen. Hab contaao-changelanguage-master und imi_mm_changelanguage hochgeladen und wieder gelöscht. Die Versionsnummern von contao, haste und multicolumn dreimal überprüft ...

    Nun bin ich vollends verwirrt. Fehlt noch ein hook? und wo soll er hin?

    contao 3.5.24, MultiColumnWizard 3.3.6, haste 4.17.1, contao-changelanguage-master liegt im changelanguage Ordner, imi_mm_changelanguage liegt im modules/imi Ordner

    Grüße, Sabine
    Geändert von sabine0303 (06.07.2017 um 17:17 Uhr)

  26. #26
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    das " imi_mm_changelanguage" habe ich nach dem Update nicht nochmal getestet.. und ja, gehört in /system/modules...

    ich habe mir ein kleines Modul gebaut, da ich den Wechsler für die Aliasse nur auf einer Seite benötigt habe - wie in https://github.com/terminal42/contao...d#example-code beschrieben

    /system/modules/sabine0303/config/config.php

    den HOOK eingebaut

    Code:
    $GLOBALS['TL_HOOKS']['changelanguageNavigation'][] = array('Sabine0303ChangeLanguageObserver', 'onChangelanguageNavigation');
    und
    /system/modules/sabine0303/classes/Sabine0303ChangeLanguageNavigation.php

    PHP-Code:
    class Sabine0303ChangeLanguageObserver
    {
        public function 
    onChangelanguageNavigation(ChangelanguageNavigationEvent $event)
        {
            global 
    $objPage;
            
    $intId  $objPage->id;
            
    $strLng $GLOBALS['TL_LANGUAGE'];
            
            
    // Xy details - ID 20 == DE / ID 30 == EN.
            
    if ($intId == 20 || $intId == 30) {                  

                
    // search your new alias at 
                // depend on current language...
                
    $strNewAlias  $arrAlias[$arrIds[0]]['value'];

                
    // Pass the new alias to ChangeLanguage
                
    $event->getUrlParameterBag()->setUrlAttribute($strAutoItem$strNewAlias);
            }
        }

    hier habe ich nach einer Seiten-ID geprüft, ob ich richtig bin und je nach Sprache den Alias umgetauscht...

    (+ autoload.php im BE erzeugen!)

    können uns das nä Woche auch zusammen mal ansehen - meine Kontaktdaten hast Du ja...

  27. #27
    Contao-Nutzer
    Registriert seit
    17.10.2014.
    Beiträge
    72

    Standard

    Also imi_changelanguage funktioniert für unseren Fall - aber der kann ja bei dir ein anderer sein. Gerne ein Issue auf GitHub eröffnen, falls es ein bestimmtes Problem mit der neuen Version gibt :-)

    Wenn zonky's vereinfachte Lösung hier geht - umso besser.

    Grüße,

    Alex

  28. #28
    Contao-Nutzer
    Registriert seit
    03.03.2015.
    Beiträge
    32

    Standard

    Danke für Eure Antworten.

    Zitat Zitat von s3lf Beitrag anzeigen
    Gerne ein Issue auf GitHub eröffnen, falls es ein bestimmtes Problem mit der neuen Version gibt :-)
    Leider kriege ich es garnicht hin, von einem bestimmten Problem scheine ich noch Meilen entfernt.

    Zonky, vielen Dank für Deine Rückmeldung, ich meld mich dann nächste Woche.

    Grüße, Sabine
    Geändert von sabine0303 (07.07.2017 um 09:15 Uhr)

  29. #29
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Achtung - die aktuelle "iMi-Version" wird nicht mit dem aktuellen MM zusammenarbeiten, da eine deprecated-Methode in MM nun entfernt wurde

    siehe https://github.com/iMi-digital/imi_m...guage/issues/5


    ... ansonsten hat die Erweiterung funktioniert...

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •