Ma a fórumon érkezett a kérés, hogy egy nem widget kompatibilis sablont hogyan is kell rávenni arra, hogy hajlandó legyen ezt a nyelvet beszélni.
Először elkezdtem hozzászólásként legépelni az alapokat, de végül úgy döntöttem, hogy inkább egy rövidebb cikket írok belőle, az talán hasznosabb.
Nos, akkor lássunk is neki! 🙂
Nézzük meg, először, hogy mit is jelent az, hogy widget
Maga a kifejezés a közgazdaságtanból ered, de az informatikában azokat a dolgokat hívjuk widgetnek, amik ilyen apró, kis hasznos mütyürök, amiket egyrészt drag-and-drop módszerrel teszünk oda, ahova szeretnénk. Testre szabhatjuk, variálhatjuk, feltéve, ha ezekkel a lehetőségekkel az alkotója felruházta.
Ilyen widgeteket találhatunk a testre szabható protálokon, mint az iGoogle, vagy a netvibes, de előfordulnak az újabb operációs rendszerekben is. Például, mind az OSX, mind pedig a Microsoft Windows Vista rendelkezik ilyen képességekkel.
Widgetek és a WordPress
A WordPress világában, általában az oldal sávban találhatóak meg ezek a widgetek. Ezeket, az adminisztrációs felületen, a Kinézet menü alatt lehet állítgatni, áthelyezni, ki és bekapcsolni, machinálni, kinek hogyan tetszik. A legjobb definíció, amit erre olvastam az, hogy a widget egy olyan cucc, amit úgy tudsz az oldalba ágyazni, hogy értened kellene a weboldal szerkesztéshez.
Viszont, ha te ilyen képességekkel akarod felruházni a már meglévő kedvenc sablonod, akkor picit bele kell tévedned a PHP és a HTML erdejébe… 🙂
Azért mondtam egyébként, hogy általában az oldalsávban, mert nem kötelező őket oda rakni. Valójában a sablontól függ. Gondolom te is láttál már olyan WordPress sablont, amiben nem volt oldalsáv. No látod.
A widget támogatás egyébként a WordPress 2.0, és 2.1-es verzióiban csak és kizárólag bővítményen keresztül érhető el. A 2.2-es verziótól már erre sincs szükség, mivel ezt a lehetőséget integrálták a alapszoftverbe.
Mitől támogatja a sablon a widgeteket?
Alapvetően attól, hogy elmagyarázzuk neki, hogy milyen felirattal kell ellátni. Valamint, mit kell a widget törzse elé, és után rakni. Ha ezt eléggé hathatósan elmagyaráztuk neki, akkor már csak az van hátra, hogy az adminban, ahogyan azt már említettem, beállítsuk, hogy az elérhető widgetek közül miket kívánunk használni.
Nem utolsó sorban pedig meg kell határoznunk, hogy a weboldal melyik részén szeretnénk viszontlátni a kisalkalmazásainkat.
És mutatsz konkrétan kódokat is?
Hogy a viharba ne, most jön az, hogy mutatok pár konkrétumot.
Azt mondtam ugye, hogy el kell magyarázni a sablonunknak, hogy mi nagyon szeretnénk widgeteket használni, ha ő nem, akkor is. Erre a módszer annyi, hogy megnyitjuk a sablonunkhoz tartozó functions.php-t (ha nincs, akkor csinálunk), és ilyeneket írunk bele:
if ( function_exists('register_sidebar') )
register_sidebar(array(
'before_widget' => '<li id="%1$s" class="widget %2$s">',
'after_widget' => '</li>',
'before_title' => '<h2 class="sidebartitle">',
'after_title' => '</h2><br />',
));
Ugye ez először is annyit tesz, hogy ellenőrzi, tényleg képes-e a blog motorunk mit kezdeni, a widgetekkel. Majd beállítja, hogy milyen HTML címkék, és azoknak milyen tulajdonságai fogják közre majd a kedvenc kis mütyürjeinket.
Fontos megjegyezni, hogy a before_widget tulajdonságban a két korábbi írásaimban placeholderként emlegetett kifejezésre (%1$s, %2$s) az alkalmazásnak szüksége lesz. Ha nem lesznek benne ebben a változóban, akkor a szoftver valószínűleg hibát fog jelezni, és a widgetek listája helyett megáll az alkalmazás futása.
Oké lépjünk, hogy kerül a sablonba?!
Alapvetően a sablon megjelenítő megkeresi a „sidebar” id-vel megáldott HTML elemet, és abba, vagy annak az első ul elemébe fogja beletolni a widgetek kódját, a register_sidebar funkcióban inicializált határoló tulajdonságokat figyelembe véve.
De mutatok még így a vége felé egy elegáns megoldást, hogy hogyan lehet megoldani azt, hogy ha mégsem szeretnél mütyürökkel molyolni visszatérhess a régi oldalsávodhoz:
<div id="sidebar">
<ul>
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
<!-- Ide teheted a régi kódod, ami csak akkor jelenik meg, ha nem vannak widgetek //-->
<?php endif; ?>
</ul>
</div>
Azt hiszem ennyi is volt, az alap leírás 🙂
Hasznos linkek a témában
További jó widgetelést, kisalkalmazáskodást, és mütyürözést 😉