Schema.org

A három nagy kereső (Bing, Google és Yahoo) közös szabványt indított schema.org néven.

A szabvány célja, hogy a weboldalakban található tartalmat meta adatokkal láthassák el a weboldal készítői. Sokszor ugyanis nem egyértelmű, hogy egy szöveg pontosan mire utal.

Példa

A schema.org-on az „avatar” kifejezést hozzák fel példának. Ebből az egy szóból nem lehet tudni, hogy most a filmet akarja jelölni, vagy a felhasználói hozzászólásoknál használt kis képeket, amiket szintén avatar-nak nevezünk. A cél, hogy tudassuk a keresőkkel, mi most a filmről írunk.

A HTML kód:

<div>
<h1>Avatar</h1>
<span>Rendező: James Cameron (született: 1954. augusztus 16.)</span>
<span>Sci-Fi</span>
<a href="../movies/avatar-theatrical-trailer.html">Előzetes</a>
</div>

Kiadtak egy hosszú listát a támogatott tartalom típusokról, ezt fogjuk felhasználni most. A legáltalánosabb a Thing típus, minden más ebből származik. A példát folytatva az Avatar film a Thing » CreativeWork » Movie kategóriába tartozik. Ezt így jelölhetjük a HTML kódban:

<div itemscope itemtype="http://schema.org/Movie">
  <h1>Avatar</h1>
  <span>Rendező: James Cameron (született: 1954. augusztus 16.)</span>
  <a href="../movies/avatar-theatrical-trailer.html">Előzetes</a>
</div>

Az itemscopre az érintett html darabot jelöli ki, az itemtype pedig meghatározza a típust.

A Movie, azaz film típus jó néhány paraméterrel rendelkezik, pl. rendező, szereplők, hossz, stb... A paramétereket az itemprop attributummal lehet megadni, a rendezőt pl. így:

<span>Rendező: <span itemprop="director">James Cameron</span> (született: 1954. augusztus 16.)</span>

Vigyázat, bonyolódik!

Egy paraméter nem csak szöveges mező lehet, hanem beágyazott objektum is. A rendezőt megadhatjuk mint személy objektumot, azaz Person típusként, így:

<div itemprop="director" itemscope itemtype="http://schema.org/Person">
  Rendező: <span itemprop="name">James Cameron</span> (született: <span itemprop="birthDate">1954. augusztus 16.)</span>
</div>

A szabvány sok egyéb dolgot is tartalmaz, mint pl. a meta mezők, amelyeket csak a keresők látnak, a felhasználók nem, vagy a média anyagok, úgymint kép, videó vagy hang anyagok.

A fenti példából már látszik a dolog működése, a további részletekért és a pontos specifikációért irány a schema.org.

Open Grapgh

A schema.org erősen emlékeztet a Facebook által használt Open Grapgh szabványra. Egy jelentős különbség van: míg előbbi a weboldal egy részéhez ad meta adatokat, addig az OpenGrapgh teljes weboldalakat ír le. Érthető, hiszen a Facebook (még) csak url-ek szintjén foglalkozik a webbel, addig a keresőket az oldalon belüli tartalom érdekli.

Egyre érthetőbb web

Egy újabb példa arra, hogy a keresők nem próbálnak meg mindent saját kútfőből megoldani, hanem egyre erősebben támaszkodnak a weboldal tulajdonosok segítségére. Amíg a keresők ettől jobbak lesznek, addig én szívesen segítek.

.HU domain regisztráció szinte azonnal június 1.-től

Állítólag a mai naptól (2011.06.01.) sokkal gyorsabban lehet .HU domaint regisztrálni. A lényeg, hogy szinte azonnal használatba lehet venni a domaint, míg a tényleges delegálásra (azaz amíg papíron is a nevünkre kerül a domain) várni kell 8 napot.

Még nem teljesen egyértelmű ez a folyamat, ezért gyorsan letesztelem egy új domainnel.

Update 1: A banki átutaláshoz 1 nap kellett. Ezután indulhat a regisztráció. A regisztráció megindítása után 2 nappal lehet használatba venni a domaint, legalábbis ezt ígérték. Meglátjuk...

Update 2: Az ígérettel ellentétben nem kellett várni két napot, a regisztrációs díj megérkezése után 1 nappal már használatba lehet venni a domaint. Így technikailag végre megoldható, hogy bankkártyás fizetés esetén már másnap használni lehet a friss domaint. Bár lehetne jobb is, (.COM azonnali regisztráció), azért ez is nagy előrelépés egy rugalmasabb magyar internet irányába.

Google +1

Azért nem sikeres egyetlen egy Google közösségi szolgáltatás sem, mert nincs igazi, kitűzött cél, amit meg akarnának oldani. A Google csak annyit akar, hogy legyen saját közösségi oldala. De mit akarnak a felhasználók?

A Facebook attól sikeres, mert segít az embereknek kielégíteni egy valós igényt. A Facebook segít kapcsolatot tartani a közeli és távoli ismerősökkel, és közben olyan dolgokat megtudni, amit egyébként csak nehezen lehetne kideríteni, pl. hogy a főnök hova megy bulizni hétvégén, vagy a csinos bolti eladó lány szingli-e. Sőt, akár idegenekkel is fel lehet venni a kapcsolatot, ha kicsit megbökdössük :)

D ne csak a Facebookkal példálózzunk: a Twitter-en azokkal tudom tartani a kapcsolatot akik éppen most csinálnak valamit, a Foresquare-en azokkal akik éppen itt csinálnak vagy csináltak valamit, a Linkdin-en meg azokkal, akik kifejezetten üzleti célból kommunikálnak. És lehetne folytatni a sort.

A Google +1 milyen célt szolgál? Nincs kitűzött célja, nincs egy olyan probléma az emberek életében, amit megoldana. Ez igaz a Buzz-ra, a Wave-re és különösen igaz a most bevezetett +1-re is. A Wave lehetett volna jó, mert sokkal-sokkal jobb volt, mint az email. De úgy tűnik, a netpolgároknak pont elég jó az email is.

A +1 viszont semmit, de tényleg semmit nem ad hozzá az emberek életéhez. Minek osszak meg egy keresési találatot a barátaimmal?! Hiszen akkor még nem tudom, hogy mi van ott. És azt talán a Google sem gondolja komolyan, hogy utána visszamegyek a keresőre, csak azért hogy ráplusszegyeljek.

A Drupal kereső adatok használata saját modulban.

Ez is egy olyan bejegyzés, amit leginkább magamnak írok. Nem egy bejegyzést írtam már, amit újra meg újra visszakeresek, hogy kimásoljam a benne lévő kódrészletet. Bár a logfájlok alapján, úgy tűnik másokat is érdekelnek ezek a bejegyzések.

Szóval, többször előfordult már, hogy a Drupal kereső funkciójának az adatait integrálni akartam egy saját megoldásba, és mindig elég nehezen sikerült megtalálni a jó megoldást, ezért most leírom egyet, ami nekem bevált.

Mikor is van erre szükség? Legutóbb egy meglehetősen összetette kereső funkciót kellett kivitelezni, aminek a kulcsszavas kereső funkció csak egy kis része volt. Máskor pedig a hírekhez rendelt címkéket használtam kereső kifejezésnek, így implementáltam hasonló tartalom ajánló funkciót a oldalra, mert a meglévő megoldások nem váltak be.

Ezeknek az eseteknek közös eleme, hogy a Drupal keresővel egy keresést kell végeztetni, de az eredményeket nem megjeleníteni kell, ehelyett további feldolgozás vár az adatokra.

Az első ötlet, hogy közvetlenül a search_* adatbázis táblákon végzünk keresést. Bár ez is egy lehetőség, meglehetősen összetettek ezek a táblák, nem arra vannak kitalálva, hogy egyetlen SELECT utasítással hozzájussunk az eredményhez. Ennél sokkal egyszerűbben, egyetlen függvény hívással is el lehet intézni a dolgot.

Drupal 6-ban:

<?php
 $talalatok
= node_search('search', 'kereső kifejezés');
?>

Drupal 7-ben:

<?php
 $talalatok
= node_search_execute('kereső kifejezés');
?>

A Drupal a node-okon kívül a felhasználókban és potenciálisan még ezer másik dologban is tud keresni, de nekünk most elég lesz a node-okban keresni. Általában úgyis ez érdekel minket. Ráadásul ha más objektumban akarunk keresni, akkor elég a node_search helyett pl. a user_search függvényt használni.

De nézzük egy kicsit tovább a dolgot, mi van ha csak egy node típust várunk eredményként? Ezt az információt a kereséséi kifejezéshez kell hozzáadni, így:

Drupal 6-ban:

<?php
 $talalatok
= node_search('search', 'kereső kifejezés type:nodetipus');
?>

Drupal 7-ben:

<?php
 $talalatok
= node_search_execute('kereső kifejezés type:nodetipus');
?>

A Drupal mag összetett keresője több más szűrő paramétert is ismer, nem csak a típust. Ezek használatát a legegyszerűbben úgy deríthetjük ki, ha a /search oldalon használjuk az összetett keresőt és megnézzük, hogy mi kerül a keresési kifejezés mezőbe.

Ahhoz hogy, a fenti megoldás működjön természetesen szükséges az, hogy a Drupal mag kereső modulja be legyen kapcsolva és a tartalmakat folyamatosan indexelje, azaz hogy az ütemezett feladatok (cron) be legyen állítva.

Active Tags beviteli mező saját űrlapon.

A közösségi oldalak egyik elmaradhatatlan eleme a címkék használata. Ma már nagyon sok oldalon láthatóak címkefelhők, amelyeket általában a közösség szerkeszt, nem hivatásos szerkesztők. A címkéket általában vesszővel elválasztva kell felvinni egy szövegbeviteli mezőbe, így működik a Drupal megoldása is, a taxonomy modulban.

De bizony sokszor gondot okoz a felhasználóknak a vesszővel való elválasztás, néha más elválasztó jeleket használnak, például szóközt, így sokszor hibás címkék jönnek létre. Még olyan weboldalakon is tapasztaltam ezt, ami kifejezetten technikailag képzett felhasználóknak szól. Aki felhasználóbarát honlapot szeretne készíteni, az nem mehet el a probléma mellett.

Erre ad megoldást az Active Tags modul, ami módosítja a címkék felvitelét úgy, hogy enter leütésére felveszi a címkét egy listára amit rögtön meg is jelenít a felhasználónak. Így a következő címkét már nem kell vesszővel elválasztani.

Active Tags modul

Nagyon hasznos modulnak bizonyul az Active Tags, de csak a Drupal node űrlapokon jelenik meg. Pedig hasznos lenne egyéb, nem node form-okon is használni. Ennek a lehetőségnek jártam utána, és a megoldás szerencsére roppant egyszerű.

Először nézzük a kódrészletet:

<?php
 
function example_form(&$form_state) {
 
$input_wrappers = array('#edit-tags-wrapper');

 
drupal_add_css(drupal_get_path('module', 'active_tags') .'/active_tags.css', 'module');

 
drupal_add_js(array('active_tags' => $input_wrappers), 'setting');

 
drupal_add_js(drupal_get_path('module', 'active_tags') .'/active_tags.js', 'module', 'footer');

 
// $form definició ...
 
return $form;
}
?>

Az első sorban felsoroljuk azokat az űrlap elemeket, ahol használni akarjuk az active_tags bevitelt. Egészen pontosan az űrlap elemeket körülvevő wrapper div-ek azonosítóit kell felsorolni. Tulajdonképpen ezek jQuery kiválasztók lesznek. A harmadik sorban ezt a listát egy Javascript beállításként, Drupal.settings.active_tags néven hozzáadjuk az oldalhoz.

A második és negyedik sor egész egyszerűen az active tags modul css és javascript fájljait adja hozzá az oldalhoz. Figyeljük meg, hogy az active tags Javascript fájl az oldal aljára kerül, nem a fejlécbe.

Ennyi az egész, a fenti 4 sor beszúrásával bármelyik saját fejlesztésű űrlapba beszúrva használható az active tags. Sőt, más modulok űrlapjainál úgyszintén, ekkor a hook_form_alter()-ben kell hozzáadni a fenti négy sort.

Oldalak

Feliratkozás Prunk-Éger Edgár RSS csatornájára