Views + language switcher

Ramirez_hun képe

Probléma a következő: címlap egy views generálta oldal. Beküldés szerint csökkenően rendezve adott node-ok, amiből egy (a legutolsó) jelenik meg, ami a címlap tényleges tartalma.
Az egész nyelvre van szűrve, és blokkban kint a nyelvválasztó gomb.

Mi a gond?
Ha rákattintok az angol linkre, akkor az angolul megjelent legutolsó node-ra vált, ami ugye nem szükségszerűen az, ami a magyar, ha annak nincs fordítása. (szóval a views okosan működik, csak itt nem így kéne).

Mit szeretnék?
Ha rányomok az angol linkre, akkor ne a legutolsó angol node jelenjen meg, hanem az adott magyarhoz (ami a címlap és most olvasom) tartozó angol fordítás. Tehát pl. ha ehhez nincs angol fordítás, akkor ne lehessen átváltani, legyen kihúzva a link, mint szokott.
Köszi az ötleteket.

Taxonomy upgrade extras: 
Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
eager képe

i18nviews modul fent van? Mert ha igen, akkor én megnézném hogy anélkül mit csinál.

Mikor észrevettem, hogy tartalmakat lehet views listázni nyelvre szűrve az i18nviews modul nélkül is (mert lehet), azonnal úgy döntöttem, hogy nem bonyolítom vele az életem. (Épp ezért nem is ismerem.)

Szóval egy kísérleti telepítvényen megnézném, hogy:

  • meg lehet-e csinálni mindent amire szükséged van i18nviews nélkül is
  • és hogy ebben az esetben hogy viselkedik a nyelvválasztó blokk

(Szóval csak arra spekulálok, hogy a nyelvválasztó blokknak a leírt viselkedése lehet, hogy pont egy olyan feature, amit esetleg az i18nviews ad hozzá; ha ez igaz lenne, akkor félig nyertünk is, de ha a nyelvválasztó az i18nviews nélkül is így működik, akkor ez most nem jött be, tovább kéne kutatni) (Ha meg eleve nincs i18nviews-ed, akkor bocsi :)

0
0
Ramirez_hun képe

Igazából amit produkál, az a views teljesen tökéletes működése, hiszen úgy van beállítva, hogy a legfrisebb tartalmat jelenítse meg. Viszont ha nincs fordítása a legfrissebbnek, akkor nyelvenként nem ugyanaz jelenik meg.
Szóval csak annyi kéne, hogy a views-zal megjelenített nodenál a nyelvválasztó az adott node másik nyelvére váltson (pont úgy, mint ha ténylegesen bele lépnék a node-ba), és ne a másik nyelvű viewra.

0
0

- ad astra per aspera -

eager képe

UPDATE:
(Ez az egész komment egy update (annyiszor átírtam már).)

Megpróbáltam kideríteni, hogy hogy kerülnek oda a nyelvválasztó linkek; végigkövettem a dolgot a /modules/locale/locale.module-től (ő adja a nyelvválasztó blokkot) a /includes/language.inc-en keresztül vissza az i18n.module-ig.

Azt találtam, hogy olyan van, hogy az éppen megjelenített útvonal lefordított párját keresi. Ha ez egy views útvonal, akkor azét. (Ez az i18n.module 496. sorától kezdve látható)

Az megoldás felé vezető kérdés, hogy rá lehet-e venni, hogy más szempontot vizsgáljon; illetve hány helyen változhatnak meg az összetevők, mielőtt az i18n_get_path_translations($path) sorrakerül. Vannak ugyanis potenciális hookok, amik esélyesek beavatkozni errefelé, illetve változók, amik igen kacifántos úton kaptak értéket, mire idáig eljutottak.

De hogy őszinte legyek, ebben a pillanatban elég nagy kihívás lenne felelősségem teljes tudatában feltérképezni, hogy az összes lehetséges összetevő hányféle helyről jöhet össze azon a környéken.

Az alapján viszont, amit láttam, elég sanszosnak érzem, hogy lehet olyan modult készíteni, ami:

  1. előállítja a views által éppen prezentált node path-ját
  2. majd egy hookon keresztül azt valahol visszajuttatja a folyamatba (akár a fordítás keresése előtt (hagyva az i18n-t hogy megkeresse a fordítást), akár a már lefordított útvonalat)

...mielőtt az kiér a blokkba.

Úgy tűnik, hogy ehhez hasznos hookok vannak a /modules/system/language.api.php fájlban.

(Persze mindezt úgy, hogy az i18n_redirect modul is használható maradjon...)

0
0
Ramirez_hun képe

Először is nagyon köszi! Látom, kimerítő módon tanulmányoztad a kérdést, úgyhogy abszolúte értékelem a dolgot. Köszönöm!
Viszont ebben a formában attól tartok meg fogja haladni a képességeimet. Próbálok valami egyszerűbb megoldást találni, ha rábukkanok, közzéteszem itt. Látatlanban megkockáztatom, valszeg nem én vagyok az egyetlen, aki belefutott ebbe. Szerintem adná magát a dolog.

0
0

- ad astra per aspera -