[gelöst] Views nur in gewählter Sprache anzeigen lassen
am 09.04.2015 - 16:23 Uhr in
Hallo Forum,
ich habe eine 4sprachige Website aufgesetzt. Diese braucht einige Views, die teilweise mehrsprachig sein müssen. Meine Grundidee hier war, eine View für jede Aufgabenstellung zu machen. So habe ich dann für die identische Aufgabenstellung bei den mehrsprachigen Views auch jeweils einen View mit einem eigenen Pfad eingerichtet. Teilweise sind hier Fotogalerien zu Aktionstagen abgebildet, die nicht übersetzt werden, diese Views sind auch nur mit deutschsprachigen Menüpunkten verknüpft.
Neben den normalen Einstellungen der View ist bei den erweiterten Einstellungen überall bei Feldprache der Wert deutsch bzw. die Srpache, in der die View die Inhalte darstellen soll, ausgewählt. Auch den Filterkriterien ist die Sprache in der gewünschten Sprache als Filter eingetragen.
Das funktioniert auch in der Benutzeransicht soweit gut. Das Problem ist auch hier die XML-Sitemap. Hier werden die Pfade der Views in allen Sprachen angezeigt. So ist z.B. der Pfad /aktuelles mit allen vorangestelten Sprachkürzeln als URL dargestellt. Aktuelles ist aber z.B. eine View, die ausschließlich in deutsch verfügbar sein soll und hat als URL in den Fremdsprachen nichts verloren. Die URL an sich funktioniert ja auch, doch sie sollte perfekterweise gar nicht erst gebildet werden.
Wie kann ich meinem View bindend erklären, in welcher Sprache er dargestellt werden soll? Bei der Page bestimme ich ja den Pfad selbst und das Sprachkürzel wird von Drupal vorangestellt. Da stehe ich total auf dem Schlauch. Hat da jemand eine Idee?
Ich sage schon mal vielen Dank für's Lesen und hoffe auf den einen oder anderen Tipp
Gruß
2be
- Anmelden oder Registrieren um Kommentare zu schreiben
Um was geht es genau ...
am 10.04.2015 - 07:43 Uhr
Um die Pfade in der sitemap oder den view, der nur in einer Sprache angezeigt werden soll? (es gibt ja auch Module die eine Sitemap bilden)
Oder wird die sitemap in einem View erzeugt?
Ich habe auch eine 2-sprachige Webseite und die Sprache wird auch über die Ergänzung in der URL vorgenommen und entsprechend angezeigt. Wir übersetzen die Views mit einem Zusatzmodul (InternationalizationViews) damit der View auch in der anderen Sprache angezeigt wird. Wir dkeine Übersetzung gemacht, gibt es immer ein fallback in die andere Sprache (Originalsprache, bei mir Deutsch) , das macht Drupal wohl von Hause aus so ...
Es ist kompliziert ...
am 10.04.2015 - 09:19 Uhr
Im Prinzip geht es um die Pfade in der Sitemap. Die View's sind mehrsprachig angelegt und funktionieren innerhalb der Website auch wie gewünscht. Doch die Pfade, mit denen ich die Pages der Views definiere, werden in alle 4 Sprachen (deutsch, italieninisch, französisch, türkisch) übersetzt. Das ist nur in der XML-Sitemap zu sehen. Die URL's der XML-Sitemap funktionieren auch technisch, d.h. es wird auch eine Beitragsliste (die über den View erzeugt wird) angezeigt. Technisch arbeitet Drupal also absolult fehlerfrei. Doch es macht in meinen Augen keinen Sinn, die gleiche URL in 4 Sprachen pro Sprache der Sitemap zu haben.
Konkret habe ich einen Pfad
example.com/de/hilfe_im_saarland/[beratungsangebot]
wobei es hier 7 verschiedene Beratungsangebote gibt, das mal 4 Sprachen macht dann 28 Views, die ich definiert habe. Da der Pfad ein Teil der URL ist, habe ich den Teil /hilfe_im_saarland/[beratungsangebot] in alle 4 Sprachen übersetzt. Ich bekomme jetzt jedoch in jeder XML-Sitemap alle 28 URL's angezeigt. Es sollten jedoch nur die 7 URL's der jeweiligen Sprache angezeigt werden. Die VIew ist ja jeweils so angelegt, dass die Beiträge nur in der jeweiligen Sprache angezeigt werden. Wenn ich die fremdsprachigen URL's in der XML-Sitemap auswähle, dann bekomme ich die Beiträge in der jeweiligen Sprache der XML-Sitemap anzeigt. Das wirkt auf mich dann doch recht befremdlich und hat hier nichts verloren.
Ich hoffe, das Problem ist jetzt klarer formuliert.
Gruß
2be
Zitat:"Ich habe die Länge und Breite dieses Landes bereist und mit den besten Leuten geredet, und ich kann Ihnen versichern, daß Datenverarbeitung ein Tick ist, welcher dieses Jahr nicht überleben wird.“ Editor für Computerbücher bei Prentice Hall, 1957.
Contextual filter
am 10.04.2015 - 10:31 Uhr
hast du schon mal den Contextual filter in views genutzt ... da müsste man den View auf die Sprache am Benutzer oder eine spezielle Sprache einschränken können.
Kontextfilter?
am 10.04.2015 - 11:32 Uhr
Verstehe nicht ganz, was Du meinst, sorry. Ich bin mal in die VIEW und habe dort auf Erweitert geklickt. Dort gibt es einen Kontext-Filter, hatte ich noch nie benutzt. Da es um die Sprache geht, habe ich dort das Feld Sprache gewählt. Es gibt auch ein Core-Modul Contextual-Filter, das ist aktiviert.
Doch die Einstellungen bringen mich nicht wirklich weiter. Der Kontextfilter reagiert auf die gebildete URL. Ich will aber erst gar nicht, dass die URL gebildet wird. Alternativ zeige ich doch lieber Informationen in einer Sprache, die nicht die Beitragssprache ist, als dass ich ein "Zugriff verweigert" setze. Das ist ja, als würde ich mit der URL versprechen "Hallo Google, hier sind nützliche Informationen. Schau mal bitte nach." Wenn Google dann meiner Aufforderung folgt, stehe ich da und sage "Zugriff verweigert - troll dich, hier hast Du nichts verloren". Das ist noch kontraproduktiver als Inhalte in der falschen Sprache darzustellen.
Auch eine Weiterleitung auf eine andere URL kann ich hier nicht durchführen.
Kann natürlich sein, dass ich dich komplett falsch verstanden habe, dann sorry. Ansonsten auf jeden Fall vielen Dank für den Tipp! Ohne deine Anmerkung hätte ich es nie ausprobiert. Der Filter ist mir bestimmt irgendwann mal nützlich, danke.
Zitat:"Ich habe die Länge und Breite dieses Landes bereist und mit den besten Leuten geredet, und ich kann Ihnen versichern, daß Datenverarbeitung ein Tick ist, welcher dieses Jahr nicht überleben wird.“ Editor für Computerbücher bei Prentice Hall, 1957.
Das müsste eigentlich funktionieren ...
am 10.04.2015 - 11:56 Uhr
der Kontextfilter ist dazu da die Ergebnisse des Views vor der Wirkung eines gesetzten Filters "aufzubereiten". Ein einfaches Beispiel wäre alle nodes anzuzeigen, für die der angemeldete Benutzer der Autor ist.
lies dir mal die Erklärung zum kontextbezogenen Filtern durch da findest du sicher die ein oder andere Hilfe.
so wie ich das sehe kannst du dort sogar dierkt auf Komponenten der URL zugreifen und nur darauf filtern -> RAW value from URL
z.B.
/de/node/1234
/en/node/4567
/fr/node/8910
mit "2" müsstes du das einschränken können
Anzeige übersehen, sorry :-(
am 21.04.2015 - 18:40 Uhr
Da kann ich meinem Buch "Dinge, die mich Stunden kosten" mal wieder ein Kapitel hinzufügen. Der Fehler war einfach, dass ich die Anzeige "i18n Page" nicht gesehen hatte. Diese stellt für jede Sprache einen Pfad zur Verfügung. Das funktioniert dann ähnlich wie das Übersetzen der Beiträge.
Das Übersetzen des Titels der Page-Ansicht erfolgt dann noch in der Übersetzung der Oberfläche. Der angenehme Nebeneffekt ist jetzt, dass ich die 28 VIEW's auf nunmehr 7 VIEW's reduzieren konnte. Danke nochmal für die Hifestellungen!
Ich gehe mir jetzt mal erst die Holzsplitter aus dem Zahnfleisch puhlen. Die sind vom Biss in den Schreibtisch, als ich die Anzeige gesehen habe :-(
Zitat:"Ich habe die Länge und Breite dieses Landes bereist und mit den besten Leuten geredet, und ich kann Ihnen versichern, daß Datenverarbeitung ein Tick ist, welcher dieses Jahr nicht überleben wird.“ Editor für Computerbücher bei Prentice Hall, 1957.