kezdőoldal kicsit másként

Anonymous képe

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!

Anonymous képe

é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:

if ($mission) {
$startpage = node_load(1);
echo theme('node', node_prepare($startpage));
}

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!

0
0
Anonymous képe

úgy néz ki hogy így menni fog:

if($mission) {
$start_page = node_load(1)
echo theme_node(node_prepare($start_page));
}

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?

0
0
Anonymous képe

szóval az érintett rész a sminkben:

if ($mission) {
  switch (i18n_get_lang()) {
    case 'en':
      $own_page = node_load(2);
    break;
    case 'de':
      $own_page = node_load(3);
    break;
    default:
      $own_page = node_load(1);
  }
  echo theme_node(node_prepare($own_page));
}

í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?!

0
0
Anonymous képe

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)

0
0
Anonymous képe

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?

0
0
Anonymous képe

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?

0
0
Hojtsy Gábor képe

É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).

0
0
Anonymous képe

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... :(

0
0
Hojtsy Gábor képe

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.

0
0
Hojtsy Gábor képe

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.

0
0
Anonymous képe

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!

0
0
Hojtsy Gábor képe

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.

0
0
Anonymous képe

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?

0
0
Anonymous képe

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?

0
0
Hojtsy Gábor képe

Mint ahogy a cikk is említi, a node_page() adja az alap kezdőlapot. Egyszerűen megcsinálhatod, hogy

function cimlap_page() {
  $output = 'sajat dolgok';
  $output .= node_page();
  return $output;
}
0
0
Anonymous képe

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!

0
0
Hojtsy Gábor képe

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).

0
0