szakma

Szép URL-ek Drupal-ban

Ez a cikk a Legjobb Drupal modulok sorozat legújabb része.

Tartalom

Bevezető
Alap Drupal beállítás
Pathauto
Global Redirect
Címváltozás és az RSS aggregátorok


Bevezető

Melyik a szebb webcím,
ez: http://edgarpe.hu?q=node/50
vagy ez: http://edgarpe.hu/Szep_URL_ek_Drupal_ban ?

A cél az, hogy az utóbbit használjuk, a keresőknek is jobb, a látogatóknak is. A látogatóknak azért, mert már a címből látják mi az, nem kell rákattintaniuk. Ez a cikk arról szól, hogy is lehet ezt elérni Drupalban.

Az alap Drupal, jó szokásának megfelelően, elvégzi helyettünk a munka nagy részét, és lefekteti az alapokat. Viszont ha kerek egész megoldást szeretnénk, akkor kiegészítő modulokra is szükségünk lesz. Egy tipikus hírportálnál én a Pathauto és a Global Redirect modulokat javaslom. Lássuk hogyan:


Alap Drupal beállítás

Két dolgot kell beállítanunk. Egyrészt be kell kapcsolni a rövid webcím (Clean URL-s) kezelést az admin/settings/clean-urls címen. Ehhez szükség van arra, hogy az apache webszerver figyelembe vegye a Drupal-hoz adott .htaccess fájlt. Ha nem apache alatt fut az oldal, vagy nem veszi figyelembe, akkor a dokumentációt ide vonatkozó részét érdemes böngészni.

Másrészt be kell kapcsolni a path modult az admin/build/modules címen.


Pathauto

Ez a modul az alap path modulra épít, automatikusan hozza létre az un. webcím álneveket, angolul URL alias-okat. 3 helyen fejti ki hatását:

  • A node-okhoz tud álneveket létrehozni, így a node/1234-ből pl. hir/hir_cime lesz.
  • Kategóriákhoz ad álneveket, így a term/1234 helyett kategoria/Sport lehet.
  • Végül a oldal látogatóinak profil címei is megváltoztathatóak, user/1-ről pl. felhasznalo/EdgarPE-re.

A modul beállítási oldalától nem kell megijedni, nagy az űrlap, de minden magától értetődő. Egy dologra kell odafigyelni: az ékezetes karakterek ékezetmentesítésére. A modulhoz adnak egy i18n-ascii.example.txt nevű fájlt, ezt át kell nevezni i18n-ascii.txt-re és átszerkeszteni. Az általam használt fájlt csatoltam:
[attachment:i18n-ascii.txt=i18n-ascii.txt]

A modul elérhető mind Drupal 5-höz, mind Drupal 6-hoz:
Pathauto


Global redirect

A Pathauto-val ellentétben, amely egy igen népszerű modul, a Global redirect-et viszonylag kevesen ismerik, pedig hasznos párja a fentinek.

Az álnevek használatával megjelenik az a probléma, hogy pontosan ugyanazt a tartalmat két különböző címen is el lehet érni. A fenti példánál maradva a node/1234 és a hir/hir_cime is érvényes lesz és ugyanazt fogja tartalmazni. Jobb lenne, ha az előbbi inkább egy átirányítás lenne az utóbbira. Ez a keresők szempontjából is fontos, de a felhasználóknak is zavaró lehet a két külön cím.

Ez a modul is elérhető mind az 5-ös mind a 6-os Drupal-hoz:
Global Redirect


Címváltozás és az RSS aggregátorok

A Pathauto modulban beállítható, hogy mi történjen ha megváltozik egy node címe és ezáltal a hozzá tartozó webcímnek (URL) is változni kellene.

Három lehetőségünk van: meghagyni a régi címhez tartozó URL-t, létrehozni újat és törölni a régit, vagy létrehozni újat és meghagyni a régit is. Én a legutolsót javaslom!

Ugyanis ha létrejön egy olyan URL ami eddig nem létezett, utána nem szerencsés megszüntetni azt. RSS aggregátor oldalak átvehetik az RSS-ből a címet, felhasználók RSS olvasói elmentik a gyorstárban és nem változtatják meg, linkelhetnek rá külső oldalak sőt még a keresők is beindexelhetik, ha pechünk van.

Egy nagyobb forgalmú portálom látogatottságának egy nagy részét ilyen RSS aggregátorok küldték, és ott nem volt megoldva ez a probléma. Egyik nap azt vettük észre, hogy lezuhant a látogatottságunk és nem értettük, hogy miért. Hamar kiderült hogy ezek a hírgyűjtő oldalak rossz címre mutatnak, amire a portál 404 error-t adott vissza. Akkor megtanultam, hogy egy létező URL-t soha nem szabad megszüntetni, még ha csak néhány másodpercig is létezett!

Xdebug használata windows-on

Az Xdebug egy PHP kiegészítés, amellyel, nem meglepő módon, egy debug eszköz PHP szkriptekhez.

Tartalom

Miért telepítsük az Xdebug-ot
Xdebug telepítése windows környezetben


Miért telepítsük az Xdebug-ot

Segítségével olyan információkat szerezhetünk futás közben amelyket egyébként csak nagyon körülményesen, vagy sehogyan sem tudhatnánk meg.

Például az xdebug_call_function() függvény megmondja, hogy melyik volt az a függvény amely az éppen aktuális függvényt meghívta.

<?php
function caller() {
  return
callee();
}

function
callee() {
  echo
xdebug_call_function();
  return
"Hello World";
}

caller();
?>

A fenti kód kimenete caller lesz.

Ez csak egy példa, emellett rengeteg hasznos dolgot tud még az Xdebug. Részleteket lásd a dokumentációban


Xdebug telepítése windows környezetben

Mi sem egyszerűbb ennél, mindössze 3 lépés az egész!

1. Töltsük le az egyik windows-ra előre lefordított DLL-t. Jelenleg a legfrissebb: http://xdebug.org/link.php?url=xdebug202-51-win

2. A letöltött DLL fájlt másoljuk be a PHP ext könyvtárába.

3. Végül egészítsük ki a php.ini-t a következőkkel:

zend_extension_ts="c:\php\ext\php_xdebug.dll"

[xdebug]
xdebug.auto_trace = 1
xdebug.collect_includes = 1
xdebug.collect_params = 1
xdebug.collect_return = 1
xdebug.default_enable = 1
xdebug.extended_info = 1
xdebug.show_local_vars = 0
xdebug.show_mem_delta = 1
xdebug.trace_format = 1
xdebug.trace_options = 0
xdebug.trace_output_dir = "C:\xampp"

Természetesen az első sort módosítsuk a PHP helyének megfelelően. Az utolsó sor azt a könyvtárat adja meg, ahová az Xdebug a trace információkat menti majd el. Ez bárhol lehet, csak léteznie kell a könyvtárnak.

Megjelent a Drupal 6.0

Örömünnep a mai, megjelent az eddigi legjobb Drupal!

Hivatalos Drupal.org bejelentés:
http://drupal.org/drupal-6.0

Drupal.hu bejelentés:
http://drupal.hu/hirek/20080213/drupal60

A fenti két linken, a hivatalos közleményeken kívül rengeteg hasznos infó található az új verzióról, érdemes részletesen végigolvasni.

Én az OpenID nagy híve vagyok, akik ismernek azok ezt tudják rólam, ezért aztán nagyon örülök, hogy most már a core része az OpenID támogatás.

Másrészt a Drupal egyetlen komoly hátrányának a sebességét érzem, ezért személy szerint én a 6-os verzióból az új cache rendszernek örülök a legjobban.

Szerencsére eddig nem nagyon kerültem kapcsolatba többnyelvű oldalakkal, de tisztában vagyok vele, hogy ez egy igen fontos szempont, ezért mindenképpen köszönet illeti Gábor-t a D6 új többnyelvű szolgáltatásaiért.

Összességében nagyon örülök az új rendszernek és bízom benne, hogy mielőbb kiadhatom a házi használatú moduljaimat D6-hoz igazított verzióit.

„Jegyezz meg” funkció a Persistent Login modullal.

Gondolom mindenki számára ismerős az automatikus beléptetés funkció: a regisztrált felhasználók belépéskor bepipálhatnak egy checkbox-ot jegyezz meg, emlékezz rám vagy valami hasonló felirattal, aminek eredménye az lesz, hogy a következő látogatáskor nem kell újra beírni a felhasználónév/jelszó párost, az oldal azonnal felismeri őket.

Feladat

Egy PHP webprogramozó szemszögéből elsőre egyszerűnek tűnik a feladat: ki kell állítani egy sütit, ami nem jár le az ablak bezárásakor, azaz nem session süti, és tartalmaz egy véletlen kódot. Adatbázisban pedig elmentjük a véletlen kódot és a hozzá tartozó felhasználót. Ha egy ismeretlen (nem belépett) látogató küld egy ilyen sütit és a véletlen kódot megtaláljuk az adatbázisban, akkor azonnal beléptetjük, nem kérjük tőle a jelszavát.

Egyszerű, pár perc alatt leprogramozható funkció, igaz? Nos a helyzet nem ilyen egyszerű.

Biztonság

Ez a fajta beléptetés jónéhány biztonsági kockázatot rejt magában, amelyeket ki kell küszöbölni, ahhoz hogy nyugodt szívvel használhassuk ezt a fajta beléptető rendszert.

Először is egy felhasználóhoz több ilyen emlékező süti tartozhat. Belép a munkahelyén, otthon az asztali gépén, notebookján, stb… De ennek érdemes egy határt szabni, nem szerencsés, ha minden határon túl nőhet az egy felhasználóhoz tartozó beléptető sütik száma.

Egy ennél is fontosabb tényező, hogy érdemes megkülönböztetni egy hagyományos belépést, ahol megtörténik a felhasználónév/jelszó páros beírása, és egy ilyen megjegyzéssel történt belépést. A kettő nem azonos erejű. Jobban meg lehet bízni abban a munkamenetben (session) amikor a felhasználó ténylegesen beírta a jelszavát. Miért? Az emberek néha leülnek egymás számítógépéhez, és közösen használják. Ha a mi gépünkhöz ülnek le és nem nézünk oda, mindössze néhány másodperc is elegendő ahhoz, hogy egy népszerű oldalon súlyos károkat okozzanak nekünk. Például:

- Megváltoztathatja jelszavunkat, ezzel ellopja a regisztrált profilunkat
- Törölheti regisztrációnkat, ez a lépés általában visszaállíthatatlan.
- Egy közösségi oldalon, pl. IWIW, küldhet üzenetet akár az összes ismerősünknek a mi nevünkben. A barátainknak pedig semmi okuk nem lesz kételkedni abban, hogy mi küldtük az üzenetet.

Drupal megoldás: a Persistent Login modul

A fentiekből jól látszik, hogy több részletkérdésre is figyelni kell, de a Persistent Login modul igazán jó munkát végez ezen a téren:

- Üdvözlő üzenetet tud megjeleníteni, ha a belépés egy emlékező sütivel történt.
- Belépés után kiírja a felhasználónak, hogy hány különböző ilyen emlékeztető sütit állítottak már ki neki, és lehetősége van törölni ezeket.
- Tiltani lehet bizonyos funkciókat az oldalon, amelyeket a felhasználó csakis akkor érhet el ha ténylegesen beírja a jelszavát. Például a jelszó változtatás vagy webáruházban egy rendelés tényleges feladását érdemes beállítani ilyen kiemelt bizonságú funkciónak. Érdekesség, hogy a drupal-ban egy felhasználónak jelenleg nincs lehetősége saját account-jának törlésére. Ez egyébként a Drupal egyik legrégebbi issue-ja: http://drupal.org/node/8 !

Én személy szerint nagyon elégedett vagyok ezzel a modullal, minden projektben ez az első modul amit feltelepítek! Ha másért nem, már csak azért is, mert fejlesztés közben nem kell folyton beirogatni a root jelszót. Természetesen az EdgarPE.hu-n is telepítve van :)

Link: http://drupal.org/project/persistent_login

Visszatértem

Az előző post meglehetősen régen volt, elég sokáig tartott megünnepelni a sikeres diploma megszerzését, majd kipihenni az ünneplést :) De most vége a pihenésnek és újult erővel vetem bele magam a munkába és bloggolásba.

Jót is tett ez a több hetes kihagyás, mert közben jónéhány ötletem támadt ezzel a bloggal kapcsolatban. Tartalmi és megjelenési tekintetben egyaránt vannak terveim, de hosszas ígérgetés helyett inkább azonnal belevágok a munkába. A következő post egy cikksorozat első része:

Legjobb drupal modulok: „Jegyezz meg” funkció a Persistent Login modullal.

Oldalak

Feliratkozás RSS - szakma csatornájára