Keresés

Cracking Drupal – biztonságos fejlesztés Drupal környezetben

Anonymous képe

Manapság olyan gyakorisággal jelennek meg a Drupallal kapcsolatos könyvek, hogy már egy ideje lemondtam arról, hogy mindent elolvassak a témában. Most azonban megjelent egy új könyv, amely a Pro Drupal Development mellett alighanem kötelező darab lesz minden fejlesztő könyvtárában. A dolog érdekessége, hogy eddig semmiféle reklámot nem kapott, pedig ennél kevésbé fontosabb kiadványok is rendszerint kikerülnek a drupal.org címlapjára. Így csak véletlenül, az aktuális Lullabot podcastből értesültem arról, hogy pár napja megjelent Cracking Drupal címmel egy fejlesztőknek írt, Drupal biztonsággal foglalkozó könyv.

A szerző Greg Knaddison, a nagyszerű Pathauto modul karbantartója, és Négyesi Károly szerkesztette. Még nem érkezett meg a megrendelt példányom, ezért ismertetőt nem tudok róla írni, tehát ez itt egyelőre a reklám helye. Az első fejezet, és egy nem-követendő példákat tartalmazó modul letölthető a könyv honlapjáról. A tartalomjegyzék alapján úgy tűnik, alaposan körbejárják a legfontosabb témákat, és azt az elvet követik, hogy inkább kevesebbet, de azt alaposan tanuljunk meg. Aki szélesebb kitekintést szeretne, annak a Pro PHP Security c. könyvet ajánlom.

CCK dátummező dilemma

Anonymous képe

Ha tartalomtípusunkat dátum mezővel szeretnénk kiegészíteni, a CCK Date csomagja három lehetőséget kínál:

  • Date
  • Datestamp
  • Datetime

Mivel első ránézésre nem volt számomra nyilvánvaló, melyiket is kellene használnom, kicsit utánanéztem a dolognak.

Date

Ez varchar(20)-ként tárolódik az adatbázisunkban, a jól ismert ISO8601-es dátumformában: 2008-07-21T12:33:00Z Töredék dátumok (csak hónap, nap), vagy i.sz. 1000-nél régebbi dátumok esetén érdemes használni, egyébként nagyon lassú vele dolgozni.

Datestamp

Ez a jól ismert UNIX időbélyeg, ami int(11)-ként tárolódik, és az 1970. január 1. óta eltelt másodpercek számával egyenlő. Gyorsan, egyszerűen lehet vele dolgozni és széles körben támogatott, viszont csak 1901-től 2038-ig terjedő dátumokat menthetünk ebben a formában.

Datetime

Ez a MySQL natív dátumkezelő formátumát használja. Ha nem merül fel az az eshetőség, hogy később más adatbáziskezelőre kell migrálnunk, akkor ez az ajánlott megoldás. Views integráció szempontjából is ez az ideális.

Saját megjelenítési módok Node displays modullal

Anonymous képe

Az új modul bemutatkozó videójának első részében olyan funkciókat ismertet a fejlesztő, amelyek segítségével a template.php preprocess hook-jaiban végzett programozás jó részét kiválthatjuk kattintgatással. HTML+CSS területről érkező, PHP-t nem ismerő sminkelők számára ez nagyon hasznos lehetőség, és még a Contemplate modulnál is kényelmesebb a használata.

A modul másik fő szolgáltatása (a videóban 07:10 táján) viszont már a kóderek számára is érdekes lehet: létrehozhatunk saját megjelenítési módokat (display mode). Ha valaki járt már úgy, hogy a teljes node nézet és a teaser nézet mellett szüksége lett volna további megjelenítési módokra, akkor fogja értékelni ezt a lehetőséget.

Új megjelenítési módok létrehozásának jelenleg több módja is van, egyik kényelmetlenebb, mint a másik:

  • Külön tpl.php sablonokat hozunk létre, amelyekben egyenként kiíratjuk a szükséges mezőket, majd template.php-ben szabályozzuk, hogy adott feltételek mellett melyik sablont használja a sminkmotor. Ennek hátránya, hogy sok tpl.php-t kell kezelni, a smink „széttöredezik”, karbantartása megnehezül. Összetettebb tartalomtípusok esetén a mezők egyenkénti kiíratása sem egy leányálom.
  • Template.php-ben unset()-eljük a $content nem kívánatos mezőit. Ez egy helyen, központilag szabályozza a megjelenést, de PHP programozást igényel; összetettebb webhelyen modul-méretűvé duzzasztja a template.php-t, ami elég egészségtelen dolog.
  • A Views modul „Row style: Fields” beállítását használjuk: nézeteket hozunk létre azon node-ok listázására, amelyek számára nem jó sem a teljes, sem a teaser megjelenítés, majd a Views felületén összekattintgatjuk a szükséges mezőket. Még ez a legkényelmesebb, de nyilvánvalóan egy hack.

A Node display segítségével tehát ezentúl kattintós felületen, programozás nélkül hozhatunk létre új megjelenítési módokat. Ha jól értem a videót, modulfejleszők számára API-t is biztosít, ami nagyon hasznos lehet pl. multimédiás pluginek fejlesztésénél.

Természetesen itt is ugyanazok a problémák merülnek fel, mint a Contemplate esetén: fájl helyett adatbázisban tárolunk és modullal kezelünk megjelenítésre vonatkozó információkat, ami megnehezíti a verziókezelést és rontja a teljesítményt. Nagyobb webhelyen mérlegelnünk kell a várható előnyöket és hátrányokat.

Címlapszerkesztő alkalmazás fejlesztése

Anonymous képe

Sziasztok!

Kaptam egy ilyen feladatot:

Címlapszerkesztő alkalmazás vázlata

Működés: a jobb oldali dobozban vannak a címlapon nem szereplő cikkek. A <> nyilas gombokkal lehet cikket kiküldeni a címlapra, ill. onnan levenni. Ez eddig kb. a Nodequeue modul működése, „csak” a felhasználói felületet kellene átalakítani.

De:
Kellene lehetőség arra, hogy a szerkesztő a címlapra kiküldött cikknél meghatározza, hogy a fix elemeken – cím, közzététel időpontja, szerző – kívül milyen további elemek jelenjenek még meg. Választható további elemek:

  • teaser (CCK text)
  • illusztráció (CCK image)
  • kapcsolódó cikkek (CCK link)
  • linkek (Print modul, stb.)
  • plusz blokk (további saját linkek, gombok, szövegek)

Problémák:

  1. Határidő: jövő hét csütörtök reggel, és egy csomó más feladat is van. :)
  2. Régi jó ügyfél, ezért szeretnék valamilyen költségkímélő megoldást találni nekik.
  3. Szerintem egy ilyet mások is tudnának használni, érdemes lenne rendesen megcsinálni és közzétenni.
  4. De akkor hogy lehet, hogy még nincs ilyen modul?! Vagy van, csak én nem tudok róla? :)

Tehát a kérdés: hogyan lehetne ezt meglévő elemekből összelegózni? Ha nem lehet, akkor milyen irányból kellene megközelíteni a kérdést (Nodequeue API, vagy CCK node reference, vagy valami egészen más)?

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 

Gyakran Ismételt Kérdések

Anonymous képe

Linkgalériával kapcsolatos kérdések

Anonymous képe

A portálon található Linkgaléria segítségével áttekintést kaphatunk a Drupal rendszer felhasználási területeiről és a hazai Drupal fejlesztésekről.

Hogyan tudom a linkgalériában megjelentetni a honlapomat?
Regisztráció és bejelentkezés után a Tartalom beküldése -> Link menüponton keresztül.
Mire kell figyelnem a beküldésnél?
Gyakori hiba az űrlap kitöltésénél, hogy a felhasználók felcserélik a „Webhely neve” és a „Link webcíme” mezőket. A webhely neve a galériában megjelenő tartalom címe lesz, pl. „Drupal – közösségi portál”. A link webcíme a webhely címe a http:// előtaggal együtt, pl. http://drupal.hu. Kérjük segítsd a munkánkat a mezők pontos kitöltésével.
Milyen címkéket tegyek a beküldött tartalomra?
A címkék a drupal.hu adminisztrátorait segítik a tartalom kategorizálásában. Bármilyen címke használható, akár több is, de ezeket az adminisztrátorok átírhatják annak érdekében, hogy a látogatók könnyebben át tudják tekinteni a Drupal felhasználási területeit. Például nincs külön „szobafestő” és „vízvezetékszerelő” címke, ezeket „mesterember” címszó alatt vonjuk össze.
Mi szerepeljen a leírásban?
A leírásban szerepelhet egy legfeljebb egy mondat hosszúságú leírás a webhely tulajdonosának tevékenységéről. Ezen túl csak a fejlesztés technikai vonatkozásairól szóló szöveget fogadunk el. Az adminisztrátorok fenntartják a jogot, hogy a megítélésük szerint túlságosan reklámízű, vagy nyilvánvalóan keresőoptimalizálási célú szövegeket átírják vagy teljesen töröljék.

Ezt a szabályt újonnan léptettük életbe, a korábban beküldött linkeknél előfordulhat hosszabb tevékenységi leírás, ezeket utólag nem moderáltuk.

Ki készíti a képernyőképet?
Az adminisztrátorok.
Sikerült telepítenem a Drupalt, beküldhetem a webhelyet a galériába?
Gratulálunk a sikeres telepítéshez, de a galériába csak működő webhelyeket veszünk fel. Kérjük akkor küldd be a linket, ha már van értékelhető tartalom a honlapon.
Mikor jelenik meg a beküldött link a galériában?
Az adminisztrátorok legalább havonta egyszer közzéteszik a beérkezett linkeket. Ha egy hónapnál régebben beküldött link nem jelent meg, kérjük jelezd a kapcsolati űrlapon keresztül a hibát és utánanézünk.
Ki és milyen szempontok alapján dönt arról, hogy melyik webhely kapja meg az „Ajánlott” jelzést?
Az „Ajánlott” jelzés odaítéléséről az adminisztrátorok egymás között egyeztetnek. Fontos megjegyezni, hogy a hazai Drupal fejlesztések színvonala egyre emelkedik. Egy olyan honlap, ami néhány évvel ezelőtt még kiemelkedőnek számított, ma már nem biztos, hogy megkapná az „Ajánlott” jelzést. Ezért a megjelölt webhelyek inkább a trendek áttekintését teszik lehetővé.
Politikai honlapokra és webfejlesztők bemutatkozó webhelyeire a félreértések elkerülése végett nem teszünk „Ajánlott” jelzést. Ezt a szabályt újonnan léptettük életbe, a korábban beküldött linkeknél előfordulhat ajánlás politikai vagy fejlesztői oldalakon.
Találtam az interneten egy Drupal alapú webhelyet, beküldhetem?
Természetesen. Nem szükséges, hogy a beküldő a webhely tulajdonosa, vagy fejlesztője legyen.
Találtam a galériában egy szép Drupal alapú webhelyet, én is ilyet szeretnék magamnak. Hogyan tudom felvenni a fejlesztővel a kapcsolatot?
A legtöbb webhelyen a láblécben vagy külön impresszum oldalon feltüntetik a fejlesztő elérhetőségét. Ha ilyet nem találunk, kérdezzük meg a webhely tulajdonosát. Végső esetben itt a fórumon is érdeklődhetünk. Arra nincs garancia, hogy az a felhasználó, aki a webhelyet a galériába beküldte, azonos a fejlesztővel.
Beküldhetek-e olyan webhelyet, amelyet nem Drupal rendszer működtet?
A galériában csak Drupal alapú honlapokat mutatunk be, az adminisztrátorok a forráskód ellenőrzésével kiszűrik a más technológiával készült webhelyeket.
Beküldhetek-e olyan webhelyet, amelyet Drupal rendszer működtet, de nem magyar nyelvű?
A galériában csak magyar nyelvű webhelyeket szerepeltetünk. Természetesen szívesen látunk többnyelvű honlapokat, ha az egyik nyelv a magyar – ebben az esetben kérjük, hogy a beküldött webcím a magyar nyelvű nyitólapra mutasson.
Hibát találtam a galériában, mi a teendőm?
Kérjük jelezd a kapcsolati űrlapunkon keresztül. Lehetséges hibák például:
  • nem működő link
  • nem Drupal alapú honlap
  • többszörös beküldés

Köszönjük a beküldött linkeket, kellemes és tanulságos nézelődést kívánunk!

Frissítés Views 2.7-re

Anonymous képe

Pár hónapja nyitottam egy ágat a Twitteren, de nem igazán kedveltem meg (lehet, hogy nem vagyok elég öreg hozzá?) – csiripelés helyett csak némi csipogásra futotta az energiámból. A 140 karakteres méretkorlát miatt azt vettem észre, hogy kétszer annyi időt kellene tölteni a csirip megfogalmazásával, mint ameddig egy rövid blogbejegyzés megírása tartana. Viszont hol van az előírva, hogy Drupalon nem lehet mikroblogolni? Ezért úgy döntöttem, inkább nyitok a honlapomon egy-egy „munkanapló”, ill. „olvasónapló” kategóriát, és ide csipogok ezután. Itt senki nem írja elő, hány karakter lehet egy bejegyzés:

Frissítés Views 2.7-re:

  1. A views-os tpl.php sablonjaim jó része „elromlott” – mint kiderült, Merlin átrendezte a mezők renderelését, így az általam (túl) gyakran használt $view->result tömb is másképp épül fel.
  2. Node reference mezőt tartalmazó tartalmak beküldő űrlapján a dropdown widget üres, ha a hivatkozható tartalmakat nézet határozza meg: a CCK-t is fel kell húzni 2.6-ra.