PDA

Pogčedajte punu verziju : Moze li ovo krace?


Pedja
31. 07. 2007., 16:15
Ima li neko ideju moze li ovaj kod:

if (empty ($USER_DEFAULT_LANG_ID)) $USER_DEFAULT_LANG_ID = 'sr';
define ('DEFAULT_LANG_ID', $USER_DEFAULT_LANG_ID);

... da se zameni necim kracim?

Problem je sto $USER_DEFAULT_LANG_ID moze da bude nedefinisano, pa rvo mora da se to proveri i dodeli mu se podrazumevana vrenost pre definisanja konstante.

Imam gomilu konstanti koje treba na ovaj nacin da definisem i ima da se okilavim kucajuci... :)

Ilija Studen
31. 07. 2007., 16:23
Pod uslovom da ti $USER_DEFAULT_LANG_ID ne treba kasnije:

define('DEFAULT_LANG_ID', isset($USER_DEFAULT_LANG_ID) ? $USER_DEFAULT_LANG_ID : 'sr');

Pedja
31. 07. 2007., 16:29
Odgovara :)

Nesto sam i ja izmajmunisao, lici mi da je malo prljavo ali kanda radi:



defineDefault('DEFAULT_LANG_ID', $USER_DEFAULT_LANG_ID, 'sr');


function defineDefault ($p_const_name, &$p_value, $p_default = '') {

if (empty ($p_value)) $p_value = $p_default;
define ($p_const_name, $p_value);

}



Moze i bez & u definiciji parametara fukcije ali tada PHP prijavljuje Notice..

robi-bobi
01. 08. 2007., 11:39
^
aj ja da budem los, pa da predlozim da ne bude krace, nego da proveravas kukijem jel ranije korisnik birao vec neki jezik :)

ja uvek radim: jel ima jezika, ako ne onda kuki, ako ne, onda default

Pedja
01. 08. 2007., 12:30
Vise volim da to radim preko sesija, mada se svodi na isto.

No ovde se radi o necem drugom: podesavanju default vrednosti koja ce se primeniti ako korisnik nije izabrao nijednu.

Ovo je u stvari segment ucitavanja incijalizaciej programa i sluzi mi da obezbedim neku smislenu default vrednost za slucaj da je administrator sajta uopste nije podesio.

To sa jezikom kod korisnika sam tako i ja radio dok nisam naisao na par problema:

1. ako korisniku zapamtis izabrani jezik u cookie/session, onda u url-ovim jezik vise ne mora da figurira. Ako korsinik uzme link bez navedenog jezika i stavi ga negde drugde, to znaci da sa tog drugog mesta ne mora da se otvori dokument na jeziku koji je korisnik video.

Primer: korisnik je unapred izabrao da ce da korsiti srpski ali je default sajta engleski. Linko na kome on vidi dokument ne sadrzi definiciju jezika jer to vec ima u cookie-u. On iskopira adresu dokumenta i stavi link na neki drugi sajt. Kada neko na tom drugom sajtu klikne na link, on nema unapred podesen jezik, pa mu se otvori default a to je negleski a to nije ono sto je prvobitni korisnik postavljanjem linka hteo.

2. ako se informacija o jeziku prosledjuje kroz cookie/session onda on me mora da figurira u URL-u a to se direktno odrazava na SEO.

Ako se nastavimo na prethodni primer: pretrazivaci ce uvek videti samo default verziju sajta (engleski) osim ako negde ne nalete na link koji sadrzi i oznaku jezika, ali ce onda videti i razlicite sadrzaje na istoj adresi dokumenta.

Tako sam se ja odlucio da se drzim pravila da se u linku uvek sadrzi oznaka jezika, osim u slucaju ako se ne radi o default jeziku u kom slucaju oznaka jezika ne sme da se pojavljuje.

Na ovaj problem sam recimo naleteo na Vokabularu (http://www.vokabular.org). U pocetku je korisnik na svakoj strani mogao da odabere da li ce latinicnu ili cirilicnu verziju, to je zapamceno u sesiji i u cookie tako da cak i svaki sledeci put kada dodje na sajt, vidi onu verziju koju je odabrao. Medjutim, pojavio se problem sto su ljudi tako stavljali linkove na sadrzaje ali koji nisu sadrzavali definiciju pisma pa su dobijali uvek cirilican sadrzaj koji je podrazumevani izbor. To sam izmenio tako da sada na Vokabularu svaki link sadrzi i odredjenje na kom pismu se prikazuje sadrzaj.

Ovo je inace zanimjiva tema koju mozda treba izdvojiti kao posebnu, jer je verovatno da su ljudi ovaj problem resavali na razlicite nacine, primenjujuci razlicitu logiku.

robi-bobi
02. 08. 2007., 12:06
sesija ne pamti sledecu posetu, zato je tu kuki
a i sta ce ti jezik u sesiji, kad ga imas u URL-u

iako jezik ne mora da figurira u url kad imas kuki, on moze da figurira ;)

uvek stavljas jezik u url, kuki je samo izmedju poseta. u prvom if-u proveravas za url jezik i gotovo

LiquidBrain
02. 08. 2007., 12:13
A i uvek mozesh da koristis geoIP da bi setovao default jezik na osnovu zemlje...

Mada to ne mora da znaci da je dobro resenje...

Pedja
02. 08. 2007., 12:50
uvek stavljas jezik u url, kuki je samo izmedju poseta. u prvom if-u proveravas za url jezik i gotovo

To je ok, samo nije bas u skladu s onim sto si prvo napisao :)


A i uvek mozesh da koristis geoIP da bi setovao default jezik na osnovu zemlje...


To mi se nikad anije svidjalo kao resenje.

Nego odosmo u offtopic, mogo bi moderator ovo da izdvoji u psoebnu temu.