Sziasztok!
Többnyelvű kezdőoldalt szeretnék létrehozni és evvel kapcsolatban adódtak problémáin.
Drupal 4.7.3 + i18n alatt működő megoldásom már van úgy, hogy engedélyezem az oldalspecifikus nyelvfüggő változókat, majd minden nyelvhez külön missziót teszek fel és a sminkben megjeleníttetem azt.
Ez eddig jó is volna de az igényeknek nem felel meg, mivel
- azt szeretném hogy a főoldal megjelenítése a node v. a content / content_main alapján jelenjen meg
- mivel az oldal karbantartói nem értenek a html/css -hez, ezért ne kelljen ezekben kódolni mint ahogy a misszónál
- a misszió esetén nincs előnézet így ha valami el van szúrva az éles oldalon kapásból szétnyomhatja az oldalt
- ...
Kérdésem tehát:
Hogyan tudok pl különböző nyelveken felvitt page -eket meghatározni különböző nyelvek kezdőoldalainak?
Amit még próbáltam:
- i18n nyelvfüggő változóihoz felvettem a front_page -t, így az alapértelmezett címoldalt nyelvfüggően már be tudom állítani, de hiába váltok nyelvet a főoldal nem változik, csupán a címlapra mutató link fog a megfelelő helyre mutatni!
Aminek még működnie kellene:
- ha megoldható akkor a címlaplink ne tartalmazza az adott node -ot, szóval ne /en/start_en és /hu/start_hu legyen a címlap link hanem csak /en és /hu
- ha van valami olyan tartalom ami a kezdőoldalra kerül beküldésre akkor az is jelenjen meg a főoldalon a kezdőoldal alatt (tehát azthiszem itt ki is van lőve az a megoldás hogy a címlap link a 'node' -on kívül valami másra mutasson)
Amire gondoltam:
- bár lehet hogy nem a legelegánsabb megoldás, de a sminkben bevarrhatnám a kezdőoldal megjelenését, úgy, hogy ha a misszió megjelenne akkor helyére include -olnám az adott node/start_nyelvprefix oldalt... csupán nem ismerem a drupal változóit és függvényeit... :(
Szívesen vennék minden ötletet és javaslatot!
Előre is köszi!
próbálkozok...
és mivel más ötletem nem volt elkezdtem túrni a sminket...
most avval próbálkozok, hogy a mission megjelenítő résznél ilyet csinálok:
ez már akár jó is lehetne, de be kellene még illesztenem egy aktuális nyelv lekérdezés alapján döntő if ágat a node_load elött, viszont nem tudom, hogy ennek ellenőrzésére milyen beépített függvényt használhatnék.
szintén gond még evvel a megoldással, hogy a megjelenítés úgy történik, hogy a címsor linkelt azaz tovább lehet kattintani, hogy a teljes tartalmat megmutassa.
szóval az a megjelenési mód kellene amikor már a teljes tartalom van prezentálva és nincs tovább linkelés...
ha valaki tud ennél okosabb megoldást az feltétlenül érdekelne de ha csak így járható az út, akkor a függvényekkel kapcsolatos segítségnek is örülnék!
fejlemények...
úgy néz ki hogy így menni fog:
legalábbis a megjelenés már helyes ha kicsit átvariálom a sminkben a kódot, de még mindig nem megy a nyelvlekérdezés...
mármint össze tudok hekkelni saját kódot hogy ellenőrizze az átadott paraméterekben a nyelvváltozót ill. annak tartalmát, csak szívesebben csinálnám vmi kész fv -el
ötlet?
a megoldás...
szóval az érintett rész a sminkben:
így még nem teljesen jó, mivel a mission megléte alapján dönti el a kiiratást (szóval minden nyelven kell lennie vmi missionnak amit persze nem iratunk ki), úgyhogy azt kell még módosítani... emlékeim szerint van valami $frontpage v. ilyesmi ami pont jó lesz a $mission helyére. ezt még kidebuggolom, átírom és kész is...
kérdés persze továbbra is az, hogy hogyan lehet ezt szebben és egyszerűbben megoldani?!
főoldal ellenrőzés
szóval a címlapellenőrzés is megvolna a drupal_is_front_page() fv hívásával, ez tökéletesen passzol a $mission helyére, működik is.
a szebben/egyszerűbben feladat továbbra is adott... ;)
(egész király a http://api.drupal.org , tényleg érdemes itt kutakodni)
érdekes
arra esetleg tudja valaki a választ, hogy az így megjelenített oldalnál a node címe alatt lévő rész az ilyen helyett:
admin, 2006, augusztus 22 - 20:03 kategória
miért csak ilyen lesz:
? admin (kategória)
?
milyen más preparáló fv -t kellene használni?
melyik a jó fv?
próbálkozok a theme('node'..., theme_node, node_show, node_view, node_prepare, node_load fv -ek és paramétereik mindenféle kombinációjával, de sehogy sem tudom elérni azt az eredményt, hogy a node úgy jelenjen meg mint amikor a "tovább" -ra kattintva teljesben jelenik meg és a title NEM linkelt!
elsősorban ez volna a fontos, de ha tovább lehet csavarni a dolgot akkor ne látszódjon semmilyen állapotinfó se a beküldőről a beküldés idejéről se másról...
szóval miket és hogyan illesszek össze?
más node típus
Én más node típust használnék erre a célra. Mondjuk 'page' node típus jellemzően olyan, aminek a címét nem linkeled, és a beküldő információkat nem jeleníted meg. Ezutóbbit a smink beállításoknál lehet szabályozni, a cím linkelését a smink dönti el, abban a 'page' típusra csinálhatsz saját smink fájlt (PHPTemplate sminknél).
de ha mégis
szóval a lényeg, hogy a kezdőoldal is ugyan avval a stilisztikával jelenjen meg mint ahogy teljes nézetben egy node.
így a kezdőoldalt simán lehet adminisztrálni mint egy node -ot (mivel tulajdonképpen az), plusz lehet előnézete meg ugyan úgy lehet szerkeszteni, érvényesek rá a beviteli filterek stb... ez fontos.
ha meg tudnád mondani hogy milyen fv-ek sora jeleníti meg a node -ot teljes méretben az nagy segítség volna és tulajdonképpen a megoldás is.
csak ez hiányzik még, de sehogy nem tudom összehozni a node_load, node_prepare, node_view, node_show stb. függvényekkel... :(
node_menu()
A függvények listáját én sem tudom megmondani, nincs is értelme megjegyezni. A node_menu()-ből elindulsz, megnézed, hogy mi van a 'node' eléréshez regisztrálva (callback_function). Abban megnézed view esetén mit csinál és így tovább. Persze a debug_backtrace() PHP függvényt is lehet használni, ha megérzed, hogy hova kell tenni, most ezt én nem tudom megmondani, és nem is fogom helyetted kibogarászni.
saját címlap készítése
Aktualizáltam chx saját címlap készítése cikkét, abból kiderül, hogy egy kicsit barátságosabb megoldással (nem smink gányolással) hogyan tudsz nekiindulni a saját címlapnak. Erre azt raksz, amit akarsz olyan sorrendben, és olyan nyelven ahogy szeretnéd.
aktualizáltad?
aktualizálás = 4.7 -es rendszerhez átdolgozás és többletfunkciók bevezetése?
azt korábban már csekkoltam, csak nem nagyon felelt meg az igényeknek...
átnézem még1x, kíváncsi vagyok mi és hogyan változott!
változott
Ami változott az az, hogy a 4.7-ben nincs admin modul, ezt meg kellett említeni. Egyelőre ennek ellenére abból indul ki a cikk. Másrészt pedig a _page() hurokban nem szabad print-elni, vissza kell térni az oldal tartalmával. Ez a két lényeges változás. Különben a $may_cache leírását egyértelműsítettem, és más apróságok.
full nyelv függés
ok, így már tiszta... elsőre nem tűnt fel, hogy más lenne de akkor valószínű azért mert ilyen apróbb dolgok lettek csak módosítva...
amúgy most már összeállt a dolog és mondhatni kívánalmak szerint is megy, de...
még az volna érdekes, hogy a path -ot is fordítani és angolul 'startpage', magyarul 'kezdooldal' németül ... stb. lenne a megfelelője.
i18n -el az kezdőoldal változóját nyelvfüggővé tudom tenni, azzal nincs gond, de hogy tudom a modulnak a 'path' => 'cimlap' értékadásnál meghatározni azt hogy mi legyen még?
szerintem nem jó
megnéztem és ki is próbáltam de szerintem így nem jó...
tehát a gondom az volt az ilyen megvalósítással (és most is az) hogy ha jelen esetben az alap kezdőoldalt lecserélem node -ról a modulban meghatározott path -ra (azaz jelen esetben pl 'cimlap') akkor a címlap kivételével minden más eltűnik ami a főoldalra van küldve (oldal, írás stb.)
ezen hogyan lehet segíteni?
node_page()
Mint ahogy a cikk is említi, a node_page() adja az alap kezdőlapot. Egyszerűen megcsinálhatod, hogy
pont írni akartam...
közben ráleltem és írni is akartam, de nem pont ezt...
ugyan így fűztem hozzá az output -hoz csak a node_page_default() -ot...
most megnéztem, eredmény a jelenlegi állapotoknál így is úgy is u.a., mi lesz a különbség?
átnézem a kódot, de ha gyorsabban tudsz választ adni az még jobb volna!
semmi
A node_page() kódját megnézed, úgyis a node_page_default()-ot hívja, ha nem tud jobbat (például nem kap node azonosítót vagy még több paramétert).