Egy hét Drupal 7: Az entitásról

Most, hogy gőzerővel készülök az Integral Vision Workshop rendezvénysorozatunkra, úgy gondoltam megosztok egy pár érdekességet, gondolatot a Drupal 7 verziójáról.

Első körben beszéljünk az entitásokról.

A Drupalban eddig mindenki tudta, hogy ha tartalom kezelésről volt szó, akkor azt a legkönnyebben a nodeok segítségével tudta megoldani. Az elgondolás lényege az volt, hogy adott a node, melyet a különböző modulok adatelemekkel és funkciókkal tudnak bővíteni. Ez nagyszerű volt, hisz ha volt egy oldal típusú tartalmam, vagy egy hír típusú, akkor ha az egyikhez megírtam a hozzászólás funkciót akkor az a másikkal is működött. Csak arra kellett figyelnem, hogy ezt úgy tegyem meg, hogy azt a típus nélküli nodehoz írjam meg. Ettől fogva a hírhez is és az oldalhoz is hozzá tudtam szólni, hisz mindkettő node volt. Sőt, amennyiben létrehoztam egy új tartalom típust, mondjuk képet, vagy képgalériát, akkor már azokhoz is igénybe vehettem ezt a nagyszerű szolgáltatást.

Azonban, maradt számos olyan tartalmi elemem, melyek nem voltak nodeok. Ilyenek voltak a kategóriák, a hozzászólások, felhasználók stb. Amennyiben ezekhez is igénybe kívántam venni azokat a szolgáltatásokat amiket a nodeokhoz kidolgoztak, trükköznöm kellett.
(Ilyen szolgáltatás volt például az, hogy az adott tartalmi elemhez újabb mezőket adjak hozzá, vagy megjelenítsem egy listában. Vagyis a CCK és Views modul)

A legalapabb trükk az volt, hogy az adott adatelemből nodeot gyártottunk. Ezzel aztán meg is oldottuk a problémánkat. Amennyiben társkereső oldalt akartunk készíteni, semmi más dolgunk nem volt, mint feltenni a Usernode(4.7.x, 5.x), vagy Content Profile(6.x) modulok egyikét. Ekkor minden egyes felhasználóhoz létrejött egy megfelelő típusú node. Semmi mást nem kellett tennünk, mint felvenni egy újabb CCK választó mezőt, melyben bejelölhették a delikvensek, hogy ők a focit szeretik vagy a baseballt és egy ügyes views lista segítségével már egymásra is találtak.

Azonban bármilyen szépen működött is ez a dolog, volt pár árnyoldal.

Először is, mivel két külön adattáblába, két külön modul írogatta azokat az adatokat amelyeket egy táblában kellett volna tárolnunk, igen magasra szökött az inkonzisztencia veszélye. Keletkeztek olyan felhasználók, akikhez nem tartozott node és keletkeztek olyan user nodeok, amikhez nem tartozott felhasználó. Amennyiben nem figyeltünk oda, könnyedén létrehozhattunk egy felhasználóhoz több tartalmat is. Egyszóval, volt egy olyan szuper bárhogyan konfigurálható rendszerünk amihez igazából jobb volt, ha nem nyúltunk hozzá.

A másik probléma ezzel a megoldással, hogy ha kevés hírünk volt, de sok felhasználónk, akkor is keményen dolgozott az adatbázisunk, hisz a hírek megjelenítéséhez először ki kellett szűrnie a felhasználókat az adattáblából és csak utána tudta rendezni és kilistázni a híreinket. Amint egyre több és több felhasználónk lett, úgy lett egyre nehezebb és nehezebb kilistázni a híreinket.

A „Csináljunk mindenből nodeot” megoldásnak ezen felül még volt egy árnyoldala. A node számos olyan frankó funkcióval rendelkezett, amire nem minden esetben lett volna igényünk. Ilyen szolgáltatások voltak azok, hogy egy node az verziókezelt, lehetett tudni melyik tartalmat melyik felhasználó látta már, lehetett szabályozni különböző szempontrendszerek szerint, hogy mely tartalmat mely felhasználó nézhess stb. Egyszóval számos olyan, ami egy tartalom kezelésekor jól jött de nem igazán volt szükségünk akkor erre, ha mondjuk felhasználókról, vagy csoportokról volt szó.

Drupal hetesben bevezetésre került az entitás fogalma, melyet egy node feletti egységként kéne elképzelni. Így lehetővé vált az, hogy a megvalósítani kívánt funkcióknál eldönthessük, hogy az melyik tartalmi szinten lesz számunkra érdekes. Ezek egy részét ráadásul az entitás létrehozásakor mi magunk is szabályozhatjuk. Pl. azt, hogy lehessen-e hozzá mezőket kapcsolni vagy legyen-e verziókezelt.

Minden entitásnak vannak olyan altípusai – úgynevezett bundle –, melyekhez a FieldAPI segítségével különböző mezőcsokrokat kapcsolhatunk. A node-nál ez a node típus, a kategóriáknál a szótár a felhasználóknál meg a ... hopp és itt a rés a pajzson, mert nincsenek a felhasználónak altípusai. Természetesen, nem lenne Drupal a Drupal, ha nem lenne egy alter hook amivel ne lehetne ezen a szörnyű helyzeten is változtatni.

De ne szaladjunk ennyire előre, ezt majd a workshopon. Készítsünk egy olyan Drupal 7 modult, ami egy olyan pehelysúlyú tartalmi elemet – egy entitást – valósít meg, mely semmi más mint egy darab táblában egy darab mező. Nézzük az én megoldásomat!

Logikus

Még mindig vannak dolgok amik bár logikusak mégis nem teljesen egyértelműek a számomra, ha PHP-ról van szó. Ránézel, kipróbálod, meglepődsz, végiggondolod és a fejedre csapsz, hogy "Logikus!!"

  1. function e($a) {
  2. $a++;
  3. }
  4.  
  5. function f(&$a) {
  6. $a++;
  7. }
  8.  
  9. function d($var) {
  10. print_r($var);
  11. print '<br />';
  12. }
  13.  
  14. $a = 1; d($a); // 1
  15.  
  16. e($a); d($a); // 1
  17.  
  18. call_user_func('e', $a); d($a); // 1
  19.  
  20. call_user_func('e', &$a); d($a); // 2
  21.  
  22. $f = 'e';
  23. $f($a); d($a); // 2
  24.  
  25. $f(&$a); d($a); // 3
  26.  
  27.  
  28. $a = 1; d($a); // 1
  29.  
  30. f($a); d($a); // 2
  31.  
  32. call_user_func('f', $a); d($a); // 2
  33.  
  34. call_user_func('f', &$a); d($a); // 3
  35.  
  36. $f = 'f';
  37. $f($a); d($a); // 4

Természetesen vannak olyan dolgok amik nem mennek, mert miért is mennének.

  1. $f = 'echo';
  2. $f('hello');

Ennek a kimenete az lesz, hogy nincs "echo()" függvény. Persze, hogy nincs, hisz az echo az egy nyelvi elem mint pl. a "for". Logikus!

Bemutatkozik a Skinr modul

Mivel a legutóbbi DUGon tartott előadásomat többen szerették volna megnézni felvételről ezért úgy döntöttem egy online közvetítés kíséretében megismétlem. Remélhetőleg sikerül majd felvételt készíteni az eseményről, így az is meg tudja tekinteni majd, aki az adás időpontjában nem tud felkapcsolódni a netre.

Időpont: 2010 december 1. szerda 18:00
Helyszín: Otthoni kényelmes karosszék és kapcs ford a Tanárúrkérem TV-re

Drupal Hétvége szervezői szemmel

Drupal Hétvége jegyzetfüzetét először fogom a kezembe.Remélhetően egyre többen leírják majd mi tetszett nekik a Drupal Hétvégében, milyen új információval lettek gazdagabbak és milyen gyümölcsöző, friss kapcsolatokra tettek szert rendezvényünkön. Én most arról szeretnék írni, hogy egy szervező szemével milyen volt a rendezvény.

Mindenekelőtt szeretnék köszönetet mondani mindazoknak, akik részt vettek valamilyen módon a szervezésben. Munkájukról felesleges szuperlatívuszokban beszélném. Nincs rá szükség. Elég csak arra a tényre hivatkoznom, hogy a kérdőívünk kitöltőinek a száz százaléka válaszolt pozitívan az „újra eljönnél-e” kérdésünkre.

Na de szaladjunk vissza az időben, hisz egy rendezvény szervezése mindig jóval előbb kezdődik, mint ahogyan azt bárki is gondolná.

Használhatóság világnapja

Zseniális volt. Röviden ennyit tudnék mondani. Nagyszerű előadások, jó előadók. Pörgős, szép ívű program. Pónya Judit és Rung András (valamint a többi szervező) kitett magáért.

Az ív megrajzolásában nagy szerepet játszott Polgár Péter Balázs előadása, melyben azt taglalta a használhatóság mint fogalom milyen tág értelemben értelmezhető. Felhívta a figyelmet arra, hogy az előadók bár különböző területeken dolgozva különböző megnevezéseket használnak a különböző fogalmakra azért mégiscsak egy dologról beszélnek.

Eztán belelendültünk. Judit a felhasználó oldalát, szempontjait mutatta be. Arra a kérdésre adta meg a választ, hogy miért fontos a felhasználónak a usability. Utána Vecsei László a másik oldalt, az üzleti szempontokat taglalta. Mindkét előadás adott olyan újdonságokat a számomra, melyekért már érdemes volt elmenni a rendezvényre.

A szünet előtt András mutatta be, mennyire hatékony tud lenni egy használhatósági vizsgálat és milyen gyorsan hozhatja akár a forgalom megduplázódását is. Kár, hogy nem készült róla videó felvétel, mert ütős marketing anyag tudott volna lenni bármely ilyen témával foglalkozó csapat számára, ha el kell adni az ügyfélnek a szolgáltatását.

A szünet után Herendy Csilla osztotta meg velünk tesztelési tapasztalatait, majd Fehér Katalin az online közösségek munkára fogásáról beszélt. Talán felesleges ismételnem, hogy ezek az előadások is, mint szinte mindegyik ezen a napon, olyan kulcs információkat, gondolat ébresztő ötleteket tartalmazott amik az aha élményt(nem a popegyüttes, az a-ha) adták.

A két prezis előadó Laufer László és Udvardy Dávid szintén kitett magáért. László konkrét példákon keresztül mutatta be hogyan fejlesztették a prezi felhasználói felületét. Megtudhattuk hogyan derítették fel és javították ki a hibákat.

Az utolsó előadásban Almásy Csilla gerincgyógyász arról beszélt, hogy a megfelelően kialakított, vagyis felhasználóbarát munkakörnyezet nem csak kényelmi, hanem egészségügyi szempontok miatt is fontos.

Sajnos el kellett rohannom, így a gyümölcsöző eszmecserékre már nem tudtam maradni.

Mindent összevetve köszönettel tartozom a szervezőknek, hogy összehozták ezt a nagyszerű délutánt!

Érdekel a Drupal? Itt a helyed!

Ha csak érdeklődsz a Drupal iránt és a Program áttekintése után bizonytalan vagy kérlek feltétlen olvasd le ezt a bejegyzést! A programot ugyanis úgy állítottuk össze, hogy a rendszert egyáltalán nem ismerő érdeklődők rengeteg új információval lehessenek gazdagabbak.

Minden előadás nagyszerű lesz, én most igyekszem azokat kiemelni amik az érdeklődők, a Drupallal ismerkedni vágyók számára lehet fontos.

Varrd fel te is a blogodra a Drupal Hétvégét

Thamas csinált egy szép bannert amit Goba továbbgondolva megalkották a Drupal Hétévége címkéjét.
Jössz a Hétvégére? Akkor reklámozd! Ehhez nem kell mást tenned, mint elhelyezni az oldaladon a következő kódot:

  1. <style type="text/css">#dh2010 a:hover, #dh2010 h2 a:hover, #dh2010 a { color: #fff !important; text-decoration: none; }</style><div id="dh2010" style="padding: 5px; background: none repeat scroll 0% 0% rgb(232, 69, 29);">
  2. <div style="border: 1px dashed rgb(255, 255, 255); padding: 5px; margin: 0pt;">
  3. <h2 style="padding: 0pt; margin: 0pt; text-align: center; background: none repeat scroll 0% 0% transparent;"><a href="http://drupal.hu/konferencia/2010">Drupal Hétvége 2010</a></h2>
  4. <p style="margin: 0pt; text-align: center;"><a href="http://drupal.hu/konferencia/2010">november 13-14.</a>
  5. </p></div>
  6. </div>

Ha egy olyan tweeted van ami kapcsolódik a konferenciához használd a #DHU2010 hashtaget, hogy megjelenjen a konferencia oldalán.

Ha a twitter folyamot is meg szeretnéd mutatni, akkor pedig a következő kódot:

  1. <script src="http://widgets.twimg.com/j/2/widget.js"></script>
  2. <script>
  3. new TWTR.Widget({
  4. version: 2,
  5. type: 'search',
  6. search: '#DHU2010',
  7. interval: 6000,
  8. title: 'Használd: #DHU2010',
  9. subject: 'DRUPAL HÉTVÉGE 2010',
  10. width: 240,
  11. height: 300,
  12. theme: {
  13. shell: {
  14. background: '#e8461d',
  15. color: '#ffffff'
  16. },
  17. tweets: {
  18. background: '#ffffff',
  19. color: '#444444',
  20. links: '#1985b5'
  21. }
  22. },
  23. features: {
  24. scrollbar: false,
  25. loop: false,
  26. live: true,
  27. hashtags: true,
  28. timestamp: true,
  29. avatars: true,
  30. toptweets: true,
  31. behavior: 'all'
  32. }
  33. }).render().start();
  34. </script>

Hírek a Drupal világából (2010/44)

Ember tervez, kezdődik a szólás mondás. Gondoltam ezt a hetet vezetékes net nélkül még féllábon is kibírom, hisz van mobil netem. Fél lábon még ki is bírtam volna, no de 1-2 K/sec sebességen? Úgy lelassultam, hogy csak most hétfő délután tudom megjelentetni a péntekre tervezett bejegyzést. Azt hiszem maradok a hétfőnél. :)

A hét egyértelműen a Drupal Hétvége programjának összeállításáról szólt. Goba vezetésével a konferencia lista tagjai ezerrel dolgoznak, hogy tartalmas és minden szempontból megfelelő programot rakjanak össze.

Idén olyan mennyiségű és olyan izgalmas előadások jöttek be, hogy már két párhuzamos szekciónál tartunk. Úgy néz azonban ki ezt háromra fel kell emelnünk, ha nem akarunk egyet se kihagyni. Nem kérem, hogy ezért támogasd a konferenciát, hisz támogatóinknak hála így is színvonalas rendezvényt tudunk majd szervezni. Érdemes azonban tudni, hogy ilyenkor nem csak a rendezvényre gyűjtünk. Az így begyűjtött adományokból kívánjuk működtetni a drupal.hu szerverét és támogatni a magyar fordítást is.

Egyszóval ha van marketing üzeneted amit szeretnél eljuttatni a konferencia résztvevőihez akkor ne tétovázz keress meg. Természetesen marketing üzenet nélkül is támogathatod a közösséget, ha úgy gondolod szeretnél hozzájárulni a közös programok szervezéséhez és egyéb céljaink megvalósításához.

No akkor jöjjenek a heti linkek:

Mit tegyünk, ha sok a kezdő?

Barabási Albert László Behálózva című könyvét szinte faltam annyira érdekes volt amit benne olvastam. Hihetetlen érzés volt amikor rádöbbentem arra milyen egyszerű dolgok működtetik világunkat és úgy éreztem végre helyére került sok olyan dolog, ami előtt eddig értetlenül álltam. Az egyik ilyen jelenség volt, hogy számos közösséget láttam már, ami nőtt, növekedett és egyszer csak megjelent bennük az igény, hogy a társaságot valahogyan szeparálni kéne. Ez általában a haladóbb felhasználók igénye volt, akik jelezték úgy érzik nagyon sok a kezdő a fórumon ezért szükség lenne számukra valami egyéb helyre ahol csak ők lehetnek. Vajon miért jelenik meg a sok kezdő és miért nem lineárisan növekszik a számuk? Mit lehetne tenni, hogy ez a riasztó arányszám változzon?

Hírek a Drupal világából (2010/43)

Egyértelműen az október a Drupal hetesről fog majd szólni. Hihetetlen erők mozognak a háttérben. Mindenki bevet minden bevethetőt, hogy a hetes minél előbb elkészüljön. Kurucz István aka Nevergone se tétlenkedett és megszervezte az első debreceni Drupal folt futamot mely eredményeiről remélhetőleg majd egy blogbejegyzés formájában be is számol. Ez a blogbejegyzés szerintem arra sarkall majd mindenkit, hogy a környezetében Ő is szervezzen egy ilyen folt futamot. Budapesten mikor legyen?

Mivel jövő héten nászútra megyek ezért a szokásos linkcsokor el fog maradni, de ígérem utána kipihenten és megújult erővel látok neki a blogbejegyzések írásának. Erre már csak azért is szükségem lesz, hisz indul a KEWLAP01 mely módszertanát tekintve erősen épít az emberek közötti tartalmas információ cserére.

No akkor nézzünk a linkeket:

Oldalak