Saját nyelvválasztó modulként

barna89 képe

Sziasztok!

Készítettem egy egyedi nyelvválasztót, ami gyakorlatilag a magyar szöveg angol fordítását keresi ki, visszafele ugyan így.
Ezzel semmi gondom sincs remekül működik!

Csak arra keresek megoldást hogy hogyan lehetne kicsit Drupalosabb-ra csinálni, mert sajna eléggé ellentmond a Drupal alapgondolatainak (ti mondtátok :D, de egyet is értek!)

Leginkább azért mert a page.tpl.php-ban van...

A fő problémám, hogy modult még nem készítettem, és ez így nem a legjobb. Gondolom mindenkinek égnek is áll a haja :D

Ezt írtam bele a page.tpl.php-ba:

<?php
	if ($language->language=="hu") {
		$sql = "SELECT node.nid FROM node WHERE (node.language='en') and (node.tnid='$node->nid')";
		$result = db_query($sql);
		$ennode = db_fetch_object($result);
		$lang_switch_link="/node/".$node->nid;
		if ($ennode->nid!="")
			$lang_switch_link="/en/node/".$ennode->nid;
		$lang_switch_text="eng";
	}
	if ($language->language=="en") {
		$sql = "SELECT node.tnid FROM node WHERE (node.language='en') and (node.nid='$node->nid')";
		$result = db_query($sql);
		$hunode = db_fetch_object($result);
		$lang_switch_link="/en/node/".$node->nid;
		if ($hunode->tnid!="")
			$lang_switch_link="/node/".$hunode->tnid;
		$lang_switch_text="hun";
	}
?>
    <a href="<?php print $lang_switch_link ?>"><?php print $lang_switch_text ?></a>

Gondolom mindenki le akar beszélni a saját megoldásomról, de nekem tetszik, csak az nem, hogy a page.tpl.php-ban van!

Nagyon megköszönném, ha valaki erre tudna valamit mondani nekem!
Köszönöm!

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
Pasqualle képe

tedd a sminked template.php fajljaba, attol kicsit Drupalosabb lesz

0
0
chx képe

Honnan kezdjem? Változót nem írunk SQL query-be, arra placeholder való. Igaz, SQL query-t nem írunk template-be mert nem oda való... No aztán ez ugye csak olyan oldalakon működik ahol egy node van (ie. node/123) azokon az oldalakon meg a translation_link meg előállítja ami neked kell, nem kell ilyen borzalommal előállítani...

0
0
pp képe

Nagyon jó szerintem, hogy megtetted az első lépést!
Linkek előállítására az l() függvény való, nem is érdemes kézzel mókolni. Az l() jó mert:

  1. működik rövid webcímektől függetlenül, a te megoldásod nem
  2. működik, ha a Drupal egy alkönyvtárban van(pl. tesztkörnyezet), a te megoldásod nem
  3. működik útvonal álnevekkel, a te megoldásod nem (ha van álnév, akkor azt teszi a linkbe, neked az eredeti útvonalat kell megadnod.)
  4. Ha éppen az aktuális oldalon állsz rárak egy .active classt a linkre (esetünkben ez lényegtelen, mert mindig "a másik" oldalra linkelsz.)

Mint ahogyan Pasqualle javasolta én a template.php-ban a sminkneve_page_preprocess() függvénybe a változókhoz még hozzáadnám a $nyelvvalto ($langswitcher) változót, mely értékét a chx által javasolt függvénnyel állítanám elő

0
0
barna89 képe

Nagyon köszönöm a segítséget!
Sajnos még nem értettem meg, hogy hogyan is működik az eredeti nyelvválasztó, ezért azt sem tudom, hogy hogyan lehetne hasonló eredményt kihozni belőle.
(Jelenleg az API-s oldalt nézegetem)

0
0
aries képe

Az l() ellen szól, hogy a designerek nem tudják módosítani a hivatkozás tulajdonságait (pl. rel, class stb) anélkül, hogy ne kéne PHP kódon módosítani. Ha ez meg egy modulban van, akkor külön öröm a számukra kibogarászni, hogy hol kell átírni, feltéve, hogy ért hozzá. Ajánlom inkább az url() fgv. használatát.

0
0
york képe

Azert egy drupal sminkesnek minimalis PHP ismeretekkel kell, hogy rendelkezzen es az l() lehetoseget biztosit szamara a class es rel megadasra lasd doksi es peldak:
http://api.drupal.org/api/function/l/6

Ha modulba van akkor oda ugysem tud benyulni egy sminkes.

0
0
aries képe

Én nem várok el az echo()/print() fgv-ek ismeretén túl más PHP-s ismeretet egy designertől. A munkájának elvégzéséhez nincs rá szüksége.

0
0
aboros képe

de az meg annyit is ér. aki meg _drupal_ sminkes, az meg igenis tudja használni és _használja is_ az l() -t, a t() -t, az alapvetőbb sminkhívásokat, theme('image' -t használjon és ne szemeteljen nekem img srckkel, theme('item_list' -et hívjon és bohóckodjon li meg perlikkel nekem és még folytathatnám a sort.

ismernie _kell_ az eszközt amit használ. különben mitől _drupal_ smikes?

0
0

-
clear: both;

aries képe

Bevallom, én csak d.con alkalmával találkoztam olyan „sminkessel”, aki képes bármilyen felhasználói felületet egymaga kivitelezni, mert megvan benne az a vizuális kreativitás és kézügyesség, a mély alapokkal bíró fejlesztői tudás no és persze se kutyája, se macskája, ideje, mint a tenger dolgozni és tanulni, jónak maradni. Nagyon kevesen vannak és még kevesebben vannak (világszinten), akik ezt a képességet és önfeladást meg is tudják fizetni.

A valóság ezzel szemben az - és ez a Drupal igazi érdeme - hogy külön lehet választani a felhasználói interakciókat és a látványt az adatokkal való feltöltéstől úgy, hogy egymás területével a lehető legkevesebbet, a saját specializációval a legtöbbet töltve. Épp ezért az én tapasztalatom az, hogy a theme_image(), theme_item_list(), l() és még néhány sminkfgv erőltetése inkább hátrány, mint előny. Mitől szemét, ha egy .tpl-ben img src van? Milyen hátránya származik belőle, ha így használja? Az előnye az, hogy

  • nem lesz a designer területe PHP kóddal tele
  • nem kell minden Drupal kiadásnál újratanulnia változásokat
  • nehéz megindokolni, mitől lesz az ő munkája könnyebb/hatékonyabb, hiszen az adatokat a backend fejleszőt fogja beletenni
  • nem lesz tele first-last-active és a bánat tudja még milyen ballaszt, az esetek döntő többségében felesleges classekkel, hogy a theme_image() getimagesize() alapértelmezett bekapcsolását ne is emplítsem
  • a theme_item_list() -nél sem a wrapper div classét, sem a fejléc típusát, classét nem tudod beállítani; ha felülbírálod, akkor ismét mindenhol át lesz írva, rakhatod az átláthatatlanságig tele if-ekkel

Tudnám még ragozni, szerintem a fent említett fgv-ek a ló túlsó oldala.

0
0
Illyés Edit képe

De mire kell ez a link neked? Miért nem jó a Drupal alapértelmezett nyelvváltója? (Van nyelvváltó blokk is, meg minden node oldalon a linkek között is.)

0
0
barna89 képe

Igazából azért készítettem ezt, mert nem tudom, hogyan lehetne ugyanezt az eredményt kihozni, az beépített nyelvválasztóból!
Azaz például azt, hogy mindig csak az ellenkező nyelv linkje jelenjen meg, és ott ahol szeretném!
Valamint mondjuk az English felirat helyett csak ENG legyen.
Gyakorlatilag ezért hoztam létre ezt a szörnyeteget! :)

Tudom, hogy a beépített sokkal szebb, jobb, későbbiekben megkímélne sok kellemetlenségtől, de sajnos nem vagyok nagy veterán a témában és sajnos nem tudom, hogy hogyan kell!
Gondolom elég bonyolult. (főleg, hogy még nem látom át teljesen ezeket a függvényeket... sajnos)

0
0
Pasqualle képe

csak az ellenkező nyelv linkje jelenjen meg:
smink style.css
#block-locale-0 li.active {
display: none;
}

English felirat helyett csak ENG legyen:
admin/settings/language/edit/en
Native language name: ENG

0
0