Szent András Evangelizációs Iskola
Az iskola honlapja

Az iskola honlapja
Pénteken sikeresen lezajlottak az INFO ÉRA konferencia Webes alkalmazások szekciójába ütemezett előadásaink. Bártházi András és Palócz István társaságában bevezetést nyújtottunk a Drupal előnyeibe, használatába. István a rendszer képességeit ismertette, utalva az iskolájában kialakított diákönkormányzati oldalra is. Ezután én következtem a telepítés folyamatának bemutatásával a MySQL 4.1 esetén követendő különleges eljárásra is felhívva a figyelmet. A telepítésről kézikönyvünkben elég alapos leírás található, a MySQL újabb változatai esetén követendő eljárásról később fogunk publikálni leírást. Végül Bártházi András mutatott be két esettanulmányt, a Weblabor.hu és a Drupal.hu webhelyeket, végigjárva a megvalósított szolgáltatásokat, érzékeltetve a fejlesztés egyszerűségét.
Saját modul fejlesztésekor hamar felmerülhet a kérdés, hogy egy gyorsan saját célra összerakott kiterjesztést készítünk, avagy szeretnénk azt szélesebb körben is publikálni, visszaadva a nyílt forrású közösségnek valamit abból, amit ajándékba kaptunk. Ha más nyelvi környezetben is használhatóvá szeretnénk tenni a modulunkat, akkor nem árt, ha felkészítjük arra, hogy több nyelven is beszéljen. Ugyanez a probléma merül fel akkor is, ha saját oldalunkon szeretnénk több nyelvet támogatni.
Fordítható felület kialakítására a Drupal két egyszerű függvényt biztosít, és ezeket elegendő ismernünk ahhoz, hogy több nyelvet támogató felületet készítsünk. A t()
függvény karaktersorozatok lefordítására szolgál, míg a format_plural()
egyes- és többesszámban álló alakok kiírására. Lássunk néhány rövid példát:
// Felület fordítást nem támogatjuk
$message = 'Nem sikerült betölteni a fájlt.';
// Felület fordítást támogatjuk
$message = t('Unable to load file.');
// Fájl nevét ki szeretnénk írni (de itt hibásan) [1]
$message = t("Unable to load file: $filename");
// Fájl nevét ki szeretnénk írni (de itt is hibásan) [2]
$message = t('Unable to load file:') . ' ' . $filename;
// Fájl nevének kiírása helyesen [3]
$message = t('Unable to load file: %filename', array('%filename' => $filename));
?>
A t()
tehát egy adott karaktersorozat lefordítására szolgál. Arról a Drupal gondoskodik, hogy a megfelelő nyelvre történjen lefordításra az adott karaktersorozat, ha az adatbázisban rendelkezésre áll hozzá tartozó fordítás. Néhány általános szabály t()
fordítások írásához:
[2]
kell megoldani, hiszen ez nem teszi lehetővé a befűzendő tartalom áthelyezését a fordításban, ami szórendi okok miatt szükséges lehet. Változóhelyettesítést használni szintén teljesen céltalan [1]
, hiszen akkor annyi fordítandó karaktersorozat lesz, amennyi behelyettesített érték előáll, a fenti esetben a lehetőségek száma gyakorlatilag végtelen. Ilyen esetekben tehát a megoldás egy helykitöltő használata [3]
, mely általában a százalékjellel kezdődik, és aztán néhány karakterben leírja, hogy mi kerül arra a helyre. A t()
második paraméterében megadott tömbben kell az egyes helykitöltőkhöz tartozó értékeket megadni. Így lehet a fordítás például: "%filename betöltése nem sikerült"A format_plural()
akkor használatos, ha valamilyen mennyiséget szeretnénk kiírni, melynél a kísérő szavakat másképp kell írni a mennyiségtől függően. Magyar nyelvben csak egy változat van az '1 meggymag', '243 meggymag', stb. megfogalmazására, mennyiségtől függetlenül. Angol nyelvben az egyes szám és többesszám különválik, és vannak olyan nyelvek, ahol sokkal többféle formát használnak. A megfelelő fordítások előállítása persze az adott fordítói csapat dolga lesz, nekünk csak a format_plural()
használatával kell tisztában lennünk.
// Megfelelő fordítás előállítása
$seeds = format_plural($number, '1 cherry seed', '%count cherry seeds');
?>
Az első paraméter egy egész szám, a következő kettő pedig az egyes és többesszámú alak. A többesszámú alakban a %count
helykitöltőt használhatjuk, ami a szükséges időben a $number
értékével helyettesítődik majd – miután a megfelelő fordítást sikerült megtalálni.
Természetesen vannak további függvények, melyek hátterében felület fordítás is áll. Ilyenek például a format_interval()
és a format_size()
, ezekkel viszont nem kell feltétlenül törődnünk, hiszen a nyelvi szükségleteiket saját hatáskörben megoldják.
A Drupal 4.5.0-ás kiadásával kezdődően többféle jogosultság séma jelenléte lehetséges a rendszerben, melyek együttes hatásán múlik az, hogy egyes oldalakat illetve tartalmakat ki érhet el, ki szerkeszthet és ki törölhet. Ebben a leírásban a feladat alapú jogosultságkezeléshez történő fejlesztéssel foglalkozunk.
A Drupalban minden felhasználó valamilyen csoportba tartozik. Látogatóknak nevezzük azokat, akik nem regisztráltak a rendszeren, vagy nem léptek be. Ezek az érdeklődők az alapértelmezésben rendelkezésre álló anonymous user csoportba tartoznak automatikusan. Azon felhasználók, akik beléptek a rendszerbe, regisztrációjukkor az authenticated user csoportba kerültek besorolásra. Ezen a két alapcsoporton kívül természetesen lehetőség van bármennyi csoport létrehozására, az alaprendszerben pedig a felhasználók egyenkénti szerkesztésével tudjuk csoportba tartozásukat megadni.
A Drupal moduljai különböző jogosultságokat definiálnak, melyeket megadhatunk az egyes csoportoknak. Az adminisztráció » felhasználók » beállítás » jogosultságok oldalon találjuk azt a mátrixot, melyben a különböző csoportoknak megadhatjuk az egyes jogokat. Egy felhasználó több csoportba is tartozhat, és ilyenkor a jogosultságai összeadódnak, tehát ha egy csoportban megadtunk neki valamilyen jogot, akkor azt megkapja akkor is, ha más csoportnak – melyeknek tagja – nincs ilyen joga. Az elsőként regisztrált felhasználónak mindenhez joga van, csoportba tartozásától függetlenül.
A feladat alapú jogosultság rendszer azt teszi lehetővé, hogy egyes feladatokhoz (például írások létrehozása) jogot adjunk egy csoportnak. Ezzel a csoport tagjai a webhelyen létrehozhatnak írás típusú tartalmakat. A legfontosabb alapjogokat a node modul definiálja: tartalmak elérése és tartalmak adminisztrációja. Az előbbi lehetővé teszi, hogy a webhely tartalmait az adott csoportba tartozó felhasználók olvassák (ha más, például tartalom-szintű jogosultság ezt felül nem bírálja), az utóbbi pedig a tartalmak metaadatainak szerkesztését is lehetővé teszi, azaz tartalmak közzétételére, eltüntetésére is jogot ad.
Saját modul fejlesztésekor könnyen előfordulhat, hogy egy meglévő jogosultság ellenőrzése tökéletesen megfelel számunkra. Ilyenkor a user_access()
függvény és a kívánt jogosultság eredeti angol nevének ismerete elegendő. A user_access()
az aktuális felhasználó (vagy a második paraméterében megadott felhasználó) jogosultságait ellenőrzi. Ezt a függvényt nagyon sok helyen megtaláljuk a Drupalban, többek között a menük előállításakor.
// A 'tartalom elérése' jogosultság ellenőrzése
if (user_access('access content')) {
// ...
}
?>
Mégis honnan tudhatjuk meg, hogy mi a számunkra érdekes jogosultság neve, illetve, a Drupal miként tudja listázni a beállítható jogosultságokat az adminisztrációs felületen? A válasz igen egyszerű: a jogosultság hurokban megadhatjuk a modulunk által definiált jogosultságokat. Ez a hurok egyszerűen egy jogosultság név listával tér vissza. Ezeket ajánlja majd fel a Drupal az adminisztrációs felületen, és ezeket használhatjuk nyugodtan user_access()
hívásokban is. Nem kell definiálnunk a jogosultság hurkot, ha megelégszünk a rendelkezésre álló jogosultság készlettel, és nincs szükségünk újabbra. Ilyenkor a meglévő modulok jogosultság hurkaiból tudjuk kideríteni a definiált jogosultságok eredeti neveit – melyeket az adminisztrációs felület lefordítva jelenít meg a karbantartók életének megkönnyítése érdekében.
function meggymag_perm() {
return array("administer cherry seed", "collect cherry seeds");
}
?>
A jogosultságok elnevezésére bevett szokás az administer és access előtagok használata az adminisztrációs illetve elérési jogok megadására, ám ezek nem korlátozó szabályok, csak az áttekinthetőség érdekében bevezetett irányelvek.
Ha a fenti jogosultság hurkot definiáltuk, modulunkban nyugodtan használhatjuk a user_access("collect cherry seeds")
jogosultság ellenőrzést, ha arra vagyunk kíváncsiak, hogy az adminisztrátor jogot adott-e az aktuális felhasználónak a meggymagok gyűjtésére.
Ezt a warningot dob a Drupal, miután beütöttem a jelszót:
warning: Cannot add header information - headers already sent by (output started at ....\apache group\apache\web\includes\common.inc:1) in c:\program files\apache group\apache\web\includes\common.inc on line 160.
Megnéztem a bug reportot, de nem találtam erre utaló bejegyzést.
A környezeti beállításokban nem történt változás, csak a drupal lett upgradelve 4.5-re.
Ugyan az a drupal konfiguráció 2 gépen dobja a figyelmeztetést ("http://elan.rulez.org/~kuller/wwiihq/") 1 gépen nem.
Merre keressem a hibát?
Eddig is volt erre lehetőség de most már a fejlesztői verzióban sokkal széles körűbbek a lehetőségek: nemcsak saját adattáblákat és/vagy adatbázist használhatunk, hanem saját modulokat és sminkeket is. Rögvest le is fordítottuk az INSTALL.txt vonatkozó részét.
Az alapértelmezett beállításokat a feltelepített Drupal rendszer sites/default/settings.php
fájlja tartalmazza. A további webhelyek beállításait alkönyvtárakba kell elhelyezzük. Minden webhely alkönyvtárának tartalmaznia kell egy settings.php
fájlt, ezt legegyszerűbben az alapértelmezett settings.php
lemásolásával és értelemszerű módosításával állíthatjuk elő. Az alkönyvtár nevét a webhely URL-jéből állítja elő a rendszer.
A valahol.hu, a valami.valami.hu és a valami.valahol.hu/bolt3 külön-külön webhelyek lehetnek. Ehhez a következő alkönyvtárakra és fájlokra van szükség:
sites/valahol.hu/settings.php
sites/valami.valahol.hu/settings.php
sites/valami.valahol.hu.bolt3/settings.php
A Drupal a http://valami.valahol.hu/bolt3 beállításait a következő helyeken keresi a megadott sorrendben, és az első találatot fogja használni:
sites/www.valami.valahol.hu.bolt3/settings.php
sites/valami.valahol.hu.bolt3/settings.php
sites/valahol.hu.bolt3/settings.php
sites/www.valami.valahol.hu/settings.php
sites/valami.valahol.hu/settings.php
sites/valahol.hu/settings.php
sites/default/settings.php
Minden webhelynek lehetnek saját moduljai és sminkjei azon felül, amelyeket a normál modules
és themes
könyvtárakban találhatunk. Ehhez egyszerűen az adott webhelyhez tartozó könyvtárban kell modules
és themes
alkönyvtárakat létrehoznunk. Például ha a valami.valahol.hu használ egy saját sminket és egy saját modult, akkor a következő alkönyvtárakra és fájlokra lehet szükségünk:
sites/valami.valahol.hu/
sites/valami.valahol.hu/settings.php
sites/valami.valahol.hu/themes/sajat_theme/
sites/valami.valahol.hu/modules/sajat_module/
További információkat a kézikönyvben találhatunk (majd).
Tortent pedig az, hogy leszedtem a banner modult, ami tartalmaz magyar forditast by Weblabor Team. Az a kerdesem, hogy hogyan lehet hozzadni azt a forditast a jelenlegihez?
elore is koszi,
n
Tisztelt tapasztalt Drupal használók!
Magam részéről mindössze grafikai programokban jeleskedem, de szívesen tanulok, azt is megtanultam, ha nem értek valamit, kérdezek.
Már a legtöbb magyarul elérhető cms rendszert kipróbáltam, de valahogy egyik sem azt nyújtotta, amit elképzeltem a leendő oldalamnak.
Mivel php-ban csak az ezekkel folytatott nyűgök miatt lehetek ismerős, sajnos a Drupalnál már az admin létrehozásánál elakadtam, s sajnos a leírást sem igazán tudom alkalmazni. Free tárhelyen, az srv.-n vagy az atw-n használnám, de nem tudom mi szükséges ahhoz, hogy regisztrálni lehessen, a php mail() függvény használata ködös nekem. Amit a leírásban felajánlanak alternatívaként stmp.inc, annál sem tudom, hogy melyiket is kellene letölteni, hogyan kellene beállítani, hogy esetleg a saját szolgáltatóm stmp-jét tudjam használni.
Szeretném a Drupalt is kipróbálni, de eddig ez bizonyult számomra a legnehezebbnek, kérem ha idejük engedi egy kezdőt kisegíteni tegyék meg, előre is nagyon szépen köszönöm :)
sz. zsuzsanna
Az utóbbi napokban két érdekes újdonság látott napvilágot. Olav Schettler elkészítette a Drupal PHPTAL illesztését, azaz PHPTAL smink motorja segítségével lehetővé válik TAL nyelven készített sminkek felvétele egy Drupal webhelyre. A TAL egy nagyon ötletes sablon megoldás, a Zope keretében született, és újabb HTML attribútumok felvételével teszi lehetővé a kód dinamikussá tételét, így szerkeszthetővé varázsolva a sablonokat vizuális HTML kezelő eszközökkel is.
Szintén mostnában látott napvilágot egy bizonyos Chris migrációt segítő szkriptje, mely WordPress blogok átalakítását teszi lehetővé Drupal webhelyekké. Chris a MovableType licencelési problémáinak kirobbanásának idején váltott WordPress motorra, majd miután felismerte, hogy nem tud azonosulni annak filozófiájával, Drupal rendszerre váltott.
Üdv!
Le tudná nekem vki írni a phptal telepítésének mikéntjét? Lehet hogy én vagyok hülye de ezt a leírást nem bírom felfogni, és egyelőre csak ezt találtam...
Kössz