2013. március 15., péntek

Ez nem annyira alap JavaScript, de ha valaki rendelkezik alapvető HTML és JavaScript...

Ez nem annyira alap JavaScript, de ha valaki rendelkezik alapvető HTML és JavaScript tudással (tényleg elég az alap tudás), az már csodákat tud művelni AngularJS segítségével. Ezért gondoltam, hogy érdemes ide is bepostolni.

/cc +Robert Cartman +Nádi András 

Reshared post from +Laszlo Fazekas
AngularJS (1. alapok)

Már egy ideje ígérgetem, hogy írok egy rövid bejegyzést arról, hogy mi is az AngularJS. Amikor elsőnek találkoztam vele, úgy jellemezte valaki a rendszert, hogy ilyen lenne a HTML nyelv, ha most találták volna fel. Tehát felfoghatjuk akár a jelenlegi szabvány felokosításának is.

Kicsit jobban kifejtve az AngularJS egy nagyon szépen megkonstruált MVC keretrendszer. Ez valami baromi misztikus dolognak hangzik, pedig nem az. Az MVC a Model View Controller hármas rövidítése. és mostanában tulajdonképpen szinte minden adatokat kezelő alkalmazás ezt a felépítést használja. Az MVC annyit jelent, hogy az alkalmazást három rétegre osztjuk. Az adattartalomra (model), a megjelenítésre (view), és a működésre (controller). Ezek a rétegek körkörösen hivatkoznak egymásra. Az adattartalmat (model) a view réteg jeleníti meg, ahonnan mindenféle felhasználói események hatására meghívódik valami működés (controller), ami megváltoztatja az adattartalmat, és itt körbe is ért az egész. Talán még így is ködös kicsit az egész, úgyhogy nézzünk egy példát. Egy sima todo listát, ahová új elemeket lehet felvenni, és törölni onnan (mint mondjuk egy bevásárló lista). Itt ugye az adattartalom (model) az a lista, ami a todo elemeket tartalmazza. A view az ezt megjelenítő felhasználói felület. A cotroller pedig az eseménykezelők összessége, tehát hogy mit kell csinálni hozzáadáskor, illetve elem törlésekor. Így már úgy nagyjából talán világos, hogy mi az az MVC, de hogy valósul meg ez AngularJS-ben?

AngularJS-ben a model réteget JavaScript változók adják. Ezek tárolják az adatokat. A view réteget a HTML kód adja, amit az AngularJS saját attribútumokkal egészít ki. Innen jött ugye a bejegyzés elején említett dolog, tehát hogy fel lehet fogni az AngularJS-t a HTML nyelv felokosításának is. Ezek az attribútumok rendelik össze a model-t a view-val (tehát hogy hol milyen adatot kell megjeleníteni), illetve a controllerrel (hogy milyen eseményre mit kell reagálni). A controller réteget JavaScript függvények adják, amik a model réteget adó JavaScript változókat manipulálják, és ezzel teljes is a kép.

Lássunk is pár példát. Ehhez látogassunk el a http://angularjs.org helyre, és tekerjük kicsit le az oldalt a második HTML kódig (az 'Add Some Control' címet keressük). Ez pont az a todo alkalmazás, amit a példában is említettem. Nézzük hogyan is épül fel. Kattintsunk át a todo.js fülre. Itt látunk egy TodoCtrl nevű függvényt (valójában inkább osztály, de JavaScriptben ezek összemosódnak). Ennek van egy $scope nevű paramétere. Ennek részletezésébe most annyira nem akarok belemenni, mert nagyon elnyúlna a bejegyzés, de lényeg, hogy minden változót (model), és működést leíró függvényt (controller) ehhez kell majd hozzárendelnünk. Rögtön a kód elején láthatjuk is a todos változó kezdeti értékének beállítását. Itt a todos változóba két érték kerül, az egyik egy todo elem, ami már le van zárva, a másik pedig egy még nem teljesült todo elem. Az előbbiek fényében már gondolom mindenki tudja, hogy ebben az alkalmazásban ez a todos változó a model réteg szerepét tölti be. A változón túl van még 3 függvény. Ezek képezik a controller réteget. Az addTodo egy új elemet ad a listához, az archive pedig törli a már teljesült elemeket. Hát, a remaining olyan öszvér fajta, mert igaz, hogy függvény, de igazából adatot ad vissza (pontosan azt adja vissza, hogy hány elvégzendő feladat van), amit a felületen kijelzünk, tehát inkább a model rétegbe sorolnám. Most kattintsunk át a html nézetre. Itt láthatjuk a view réteget, és az összerendeléseket, ami az AngularJS igazi ereje. A kód elején van egy ng-app attribútum. Ez minden AngularJS alkalmazás elejére kell, ez jelöli ki azt a részt, ahol a speciális attribútumokat értelmezni kell. Ebben az esetben ez a teljes html kódra vonatkozik. Aztán van két script rész, ahol behivatkozzuk az AngularJS-t magát, illetve a controller-t tartalmazó javascript állományt. Eztán jön egy ng-controller attribútum, mivel az előbb definiált controllert egy html blokkhoz rendeljük. Ha a HTML oldal olyan felépítésű, akkor megtehetjük, hogy egyes részeihez más más controller-t rendelünk, vagy ezeket akár egymásba is ágyazhatjuk, de ilyesmivel most ne bonyolítsuk az életünket. Az ng-controller-es div-en belül vannak {{ és }} jelek közti szakaszok. Ezekkel dinamikus tartalmat illeszthetünk be a HTML kódba, ráadásul nemesen egyszerű módon. Egyszerűen ha itt megadjuk egy $scope-hoz rendelt változó nevét, akkor a rendszer ide behelyettesíti annak tartalmát, illetve ugyanez történik, ha valamilyen függvény hívást írunk a jelek közé (tulajdonképpen ide bármilyen egyszerűbb JavaScript kifejezést írhatunk). Utóbbira példa a {{remining()}} rész, előbbire pedig a {{todos.length}}. Ez tehát egy módja a model bekötésének. Eztán jön egy link ng-click attribútummal. Ez egy szép példa a controller bekötésére. Leírja, hogy egy esemény hatására milyen működésnek kell életbe lépnie. Ha ugye erre a linkre kattintunk (archive), akkor az archive() függvényt kell meghívni a $scope-ból. Eztán jön egy ng-repeat rész, ami megintcsak a  model bekötésének módja. Ez végigszalad a megadott változón, és közben egy másik változó minden körben felveszi az aktuális elem értékét. Itt ugye a todos változón szaladunk végig. Minden körben generálódik egy li elem, és a todo változó felveszi az aktuális elem értékét. A li elemben találunk egy checkbox-ot, amihez ng-model-el van hozzárendelve a todo elem done változója. Míg a {{}} jelek használata egyirányú összerendelés (csak odaírja a rendszer a változó tartalmát), addig az ng-model kétirányú. Tehát egyfelől az elem a változó tartalmának megfelelően viselkedik, másfelől a változó az elem állapotának megfelelő értéket kapja. Olyan mint ha innentől a változó a HTML elem leképződése lenne, ebben az esetben a checkbox-é. Ha a változó értéke változik, változik a checkbox állapota is, illetve ha a felhasználó változtat a checkbox állapotán, akkor változik a változó értéke is. A következő span részben az elem class-ja a todo.done-tól függ. Ez az egyszerű {{}} jeles behelyettesítés. Amire érdemes felfigyelni, hogy az egész dolog teljesen real-time. Tehát mikor beklikkeljük a checkbox-ot, és megváltozik a változó értéke, akkor vele együtt minden változóhoz kötött dolog is változik. Tehát jelen esetben az elem class-a is. Ezt ki is próbálhatjuk, ha jobb oldalon a checkbox-ra kattintunk. Nem kell azzal vesződnünk, mint mondjuk jQuery esetén, hogy a bejelölés eseményre rakjunk egy eseménykezelőt, ami megváltoztatja a másik elem class-át. Ezzel sokkal rövidebb, szebb, és tisztább kódot kapunk. Végül pedig van egy ng-submit eseménykezelő, ami az add gomb megnyomására meghívja az addTodo függvényt, ami berakja az új todo elemet, aminek tartalma az előtte lévő text elemben lévő ng-model attribútumnak hála a todoText változóba kerül.  

Hát, nagyon tömören ennyit akartam írni az alapokról. Az AngularJS nagyon sok mindent tud még ezen kívül. Definiálhatunk modulokat, saját attribútumokat, kommunikálhatunk a szerverrel, stb. de ezeknek már talán érdemes új bejegyzést szentelni. 

#blog   #angularjs  


Embedded Link


AngularJS — Superheroic JavaScript MVW Framework
AngularJS is what HTML would have been, had it been designed for building web-apps. Declarative templates with data-binding, MVW, MVVM, MVC, dependency injection and great ...

AngularJS (1. alapok)


Már egy ideje ígérgetem, hogy írok egy rövid bejegyzést arról, hogy mi is az AngularJS. Amikor elsőnek találkoztam vele, úgy jellemezte valaki a rendszert, hogy ilyen lenne a HTML nyelv, ha most találták volna fel. Tehát felfoghatjuk akár a jelenlegi szabvány felokosításának is.

Kicsit jobban kifejtve az AngularJS egy nagyon szépen megkonstruált MVC keretrendszer. Ez valami baromi misztikus dolognak hangzik, pedig nem az. Az MVC a Model View Controller hármas rövidítése. és mostanában tulajdonképpen szinte minden adatokat kezelő alkalmazás ezt a felépítést használja. Az MVC annyit jelent, hogy az alkalmazást három rétegre osztjuk. Az adattartalomra (model), a megjelenítésre (view), és a működésre (controller). Ezek a rétegek körkörösen hivatkoznak egymásra. Az adattartalmat (model) a view réteg jeleníti meg, ahonnan mindenféle felhasználói események hatására meghívódik valami működés (controller), ami megváltoztatja az adattartalmat, és itt körbe is ért az egész. Talán még így is ködös kicsit az egész, úgyhogy nézzünk egy példát. Egy sima todo listát, ahová új elemeket lehet felvenni, és törölni onnan (mint mondjuk egy bevásárló lista). Itt ugye az adattartalom (model) az a lista, ami a todo elemeket tartalmazza. A view az ezt megjelenítő felhasználói felület. A cotroller pedig az eseménykezelők összessége, tehát hogy mit kell csinálni hozzáadáskor, illetve elem törlésekor. Így már úgy nagyjából talán világos, hogy mi az az MVC, de hogy valósul meg ez AngularJS-ben?

AngularJS-ben a model réteget JavaScript változók adják. Ezek tárolják az adatokat. A view réteget a HTML kód adja, amit az AngularJS saját attribútumokkal egészít ki. Innen jött ugye a bejegyzés elején említett dolog, tehát hogy fel lehet fogni az AngularJS-t a HTML nyelv felokosításának is. Ezek az attribútumok rendelik össze a model-t a view-val (tehát hogy hol milyen adatot kell megjeleníteni), illetve a controllerrel (hogy milyen eseményre mit kell reagálni). A controller réteget JavaScript függvények adják, amik a model réteget adó JavaScript változókat manipulálják, és ezzel teljes is a kép.

Lássunk is pár példát. Ehhez látogassunk el a http://angularjs.org helyre, és tekerjük kicsit le az oldalt a második HTML kódig (az 'Add Some Control' címet keressük). Ez pont az a todo alkalmazás, amit a példában is említettem. Nézzük hogyan is épül fel. Kattintsunk át a todo.js fülre. Itt látunk egy TodoCtrl nevű függvényt (valójában inkább osztály, de JavaScriptben ezek összemosódnak). Ennek van egy $scope nevű paramétere. Ennek részletezésébe most annyira nem akarok belemenni, mert nagyon elnyúlna a bejegyzés, de lényeg, hogy minden változót (model), és működést leíró függvényt (controller) ehhez kell majd hozzárendelnünk. Rögtön a kód elején láthatjuk is a todos változó kezdeti értékének beállítását. Itt a todos változóba két érték kerül, az egyik egy todo elem, ami már le van zárva, a másik pedig egy még nem teljesült todo elem. Az előbbiek fényében már gondolom mindenki tudja, hogy ebben az alkalmazásban ez a todos változó a model réteg szerepét tölti be. A változón túl van még 3 függvény. Ezek képezik a controller réteget. Az addTodo egy új elemet ad a listához, az archive pedig törli a már teljesült elemeket. Hát, a remaining olyan öszvér fajta, mert igaz, hogy függvény, de igazából adatot ad vissza (pontosan azt adja vissza, hogy hány elvégzendő feladat van), amit a felületen kijelzünk, tehát inkább a model rétegbe sorolnám. Most kattintsunk át a html nézetre. Itt láthatjuk a view réteget, és az összerendeléseket, ami az AngularJS igazi ereje. A kód elején van egy ng-app attribútum. Ez minden AngularJS alkalmazás elejére kell, ez jelöli ki azt a részt, ahol a speciális attribútumokat értelmezni kell. Ebben az esetben ez a teljes html kódra vonatkozik. Aztán van két script rész, ahol behivatkozzuk az AngularJS-t magát, illetve a controller-t tartalmazó javascript állományt. Eztán jön egy ng-controller attribútum, mivel az előbb definiált controllert egy html blokkhoz rendeljük. Ha a HTML oldal olyan felépítésű, akkor megtehetjük, hogy egyes részeihez más más controller-t rendelünk, vagy ezeket akár egymásba is ágyazhatjuk, de ilyesmivel most ne bonyolítsuk az életünket. Az ng-controller-es div-en belül vannak {{ és }} jelek közti szakaszok. Ezekkel dinamikus tartalmat illeszthetünk be a HTML kódba, ráadásul nemesen egyszerű módon. Egyszerűen ha itt megadjuk egy $scope-hoz rendelt változó nevét, akkor a rendszer ide behelyettesíti annak tartalmát, illetve ugyanez történik, ha valamilyen függvény hívást írunk a jelek közé (tulajdonképpen ide bármilyen egyszerűbb JavaScript kifejezést írhatunk). Utóbbira példa a {{remining()}} rész, előbbire pedig a {{todos.length}}. Ez tehát egy módja a model bekötésének. Eztán jön egy link ng-click attribútummal. Ez egy szép példa a controller bekötésére. Leírja, hogy egy esemény hatására milyen működésnek kell életbe lépnie. Ha ugye erre a linkre kattintunk (archive), akkor az archive() függvényt kell meghívni a $scope-ból. Eztán jön egy ng-repeat rész, ami megintcsak a  model bekötésének módja. Ez végigszalad a megadott változón, és közben egy másik változó minden körben felveszi az aktuális elem értékét. Itt ugye a todos változón szaladunk végig. Minden körben generálódik egy li elem, és a todo változó felveszi az aktuális elem értékét. A li elemben találunk egy checkbox-ot, amihez ng-model-el van hozzárendelve a todo elem done változója. Míg a {{}} jelek használata egyirányú összerendelés (csak odaírja a rendszer a változó tartalmát), addig az ng-model kétirányú. Tehát egyfelől az elem a változó tartalmának megfelelően viselkedik, másfelől a változó az elem állapotának megfelelő értéket kapja. Olyan mint ha innentől a változó a HTML elem leképződése lenne, ebben az esetben a checkbox-é. Ha a változó értéke változik, változik a checkbox állapota is, illetve ha a felhasználó változtat a checkbox állapotán, akkor változik a változó értéke is. A következő span részben az elem class-ja a todo.done-tól függ. Ez az egyszerű {{}} jeles behelyettesítés. Amire érdemes felfigyelni, hogy az egész dolog teljesen real-time. Tehát mikor beklikkeljük a checkbox-ot, és megváltozik a változó értéke, akkor vele együtt minden változóhoz kötött dolog is változik. Tehát jelen esetben az elem class-a is. Ezt ki is próbálhatjuk, ha jobb oldalon a checkbox-ra kattintunk. Nem kell azzal vesződnünk, mint mondjuk jQuery esetén, hogy a bejelölés eseményre rakjunk egy eseménykezelőt, ami megváltoztatja a másik elem class-át. Ezzel sokkal rövidebb, szebb, és tisztább kódot kapunk. Végül pedig van egy ng-submit eseménykezelő, ami az add gomb megnyomására meghívja az addTodo függvényt, ami berakja az új todo elemet, aminek tartalma az előtte lévő text elemben lévő ng-model attribútumnak hála a todoText változóba kerül.  

Hát, nagyon tömören ennyit akartam írni az alapokról. Az AngularJS nagyon sok mindent tud még ezen kívül. Definiálhatunk modulokat, saját attribútumokat, kommunikálhatunk a szerverrel, stb. de ezeknek már talán érdemes új bejegyzést szentelni. 

#blog   #angularjs  


Embedded Link


AngularJS — Superheroic JavaScript MVW Framework
AngularJS is what HTML would have been, had it been designed for building web-apps. Declarative templates with data-binding, MVW, MVVM, MVC, dependency injection and great ...

2013. március 13., szerda

WordPress (nagyon)gyorstalpaló (bővítmények fejlesztése)


Ez a bejegyzés némi PHP tudást feltételez, de ennek ellenére nem lesz bonyolult. Igazából szerintem a WordPress leglenyűgözőbb tulajdonsága az egyszerűsége. De lássuk, hogy is megy ez ...

Ahogyan a dolog nevéből is adódik, a bővítmények segítségével új funkcionalitással bővíthetjük a rendszert. Ilyen kiegészítők segítségével szinte bármit megvalósíthatunk. A bővítmények a sablonokhoz hasonlóan a wp-content mappában találhatóak, a plugins könyvtárban. A pluginek felépítése is nagyon hasonló a sablonokéhoz. A WordPress végigszalad a plugins könyvtár tartalmán. Az ott található php fájlok, illetve könyvtárak tartalmazhatnak plugineket. A plugin adatok a sablonokhoz hasonlóan a fájl elején kommentben találhatóak. Ha a plugin könyvtárban található, akkor a WordPress a könyvtár nevével megegyező php állományt keres. Tehát ha a plugin a 'test' könyvtárban található, akkor 'test.php'-t. Minden WordPress változatban található egy 'Hello Dolly' nevű teszt plugin, amit a plugins könyvtárban találhatunk hello.php néven. Ennek az elején láthatjuk az előbb említett komment részt a plugin nevével és leírásával. Ez alapján már elkészíthetjük a saját bővítményünket. Hozzunk létre mondjuk egy test.php nevű állományt a plugins könyvtárban, és kommentek segítségével adjunk neki nevet és leírást. Ha minden jól megy, ez már elég ahhoz, hogy a pluginünk megjelenjen a bővítmények listájában. Ugyanígy működni fog az is, ha a test.php-t egy test nevű könyvtárban helyezzük el az esetleges egyéb állományokkal.

Tehát van már egy bővítményünk, ami egyenlőre nem csinál semmit. Most jöhet az, hogy valami tényleges funkcionalitást adjunk a rendszerhez. Erre a WordPress-ben az action-ök és a filterek szolgálnak. Az action-ök olyan pontok a rendszerben, ahová saját működést szúrhatunk be. Ilyen action például az oldal fejlécének generálása, vagy éppen az, hogy a rendszer kigenerált egy blogbejegyzést. Vegyünk például egy olyan plugint, ami egy megosztó sávot (like, G+, stb.) helyez a bejegyzések aljára. Egy ilyen plugin-nak a bejegyzés generálása után meghívódó action-re kell regisztrálnia egy függvényt. Ahogy a WordPress generálja az oldal darabjait, az egyes action-öknél meghívja a mi kezelőinket, így avatkozhatunk be az oldalgenerálás folyamatába.

A filter a beavatkozás másik formája. Ez egy olyan függvény, ami valami adatot kap a paraméterében, és valami változtatást végez rajta. Így például bizonyos karaktersorozatokat cserélhetünk le a tartalomban, menü elemeket adhatunk az admin felülethez, és hasonlók.

Az action-ökön és filtereken túl van még pár lehetőség a működésbe való beavatkozásra, de az esetek nagy többségében ezeken keresztül adhatjuk hozzá az új működést a rendszerhez. Ráadásul a kialakítás annyira flexibilis, hogy szinte bármit megoldhatunk WordPress-en belül.

Igazából a plugin fejlesztésről könyvet lehetne írni, de indulásnak talán ennyi elég. A továbblépéshez a WordPress Codex vonatkozó fejezeteit tudom ajánlani: http://codex.wordpress.org/Plugins , de ezen kívül is sok tutorial található a weben, illetve sokat tanulhatunk már meglévő plugin-ek forráskódjának böngészésével is.

#blog  

2013. március 12., kedd

PHP naplózás Chrome JavaScript konzolra


Ez is egy hasznos tool php-hoz. A Chrome JavaScript konzoljára lehet vele log-olni, így nem "piszkoljuk" össze az oldalt a debug üzenetekkel, var_dump-okkal, stb. A php-s logger a HTTP header-t használja a log üzenetek Chrome-hoz való továbbítására, így (elvileg) AJAX hívásokra is működik.

#blog  

http://www.chromephp.com/





ChromePHP
ChromePHP is a console logging extension for Google Chrome. It lets you log data directly from your PHP scripts into the Chrome console to help you debug your applications.

WordPress (nagyon)gyorstalpaló (sablonkezelés)


Most, hogy (kb. 5 perc munkával) sikeresen telepítettünk saját WordPress-t, elkezdhetjük testre szabni. Ennek legfontosabb része, hogy kialakítsuk az oldal külső megjelenését. A WordPress ilyen szempontból nagyon jól testre szabható a sablonok segítségével.

Lépjünk be a WordPress vezérlőpultjára, és válasszuk ki a Megjelenés menü / Sablonok részt. Itt jelennek meg a már elérhető sablonok, illetve van felül egy Sablonok telepítése fül, ott tudunk új sablonokat telepíteni. Mivel a weben több száz (de lehet, hogy több ezer) WordPress sablon megtalálható, ezért én azt javasolnám, hogy soha ne kezdjünk el nulláról sablont fejleszteni. Keressünk valamit, ami nagyjából megfelel az igényeinknek, és ha kell, azt módosítsuk tovább. Ha nem a belső sablonkeresőt használjuk, akkor weben a http://wordpress.org/extend/themes/ címen keresgélhetünk az ingyenes változatok közt. Ebből jelenleg 1700+ db van (!), ami nem kevés, de ha Google-ben rákeresünk a wordpress témákra, találunk még legalább ugyanennyit, illetve van sok fizetős is. Szóval tényleg hatalmas a felhozatal. Ha megtaláltuk a céljainknak leginkább megfelelő sablont, töltsük fel a sablonkezelőben, telepítsük, és szabjuk testre igényeknek megfelelően.

No, de hogy valamiről szóljon is a bejegyzés, lássuk mit kell tennünk akkor, ha saját sablont szeretnénk készíteni, vagy legalábbis átalakítani a már meglévőt. A WordPress wp-content/themes könyvtárában találhatóak meg a WordPress sablonok. A frissen telepített sablonunk is ide került be, így ha minden igaz, van ott egy könyvtár neki is. Új sablont hozzáadni elég egyszerű, ugyanis a WordPress egyszerűen végig szalad ezen a könyvtáron, és minden itt lévő alkönyvtárat sablonként értelmez. Az új sablon készítéséhez tehát fogjuk a már telepített (alapanyagnak leginkább megfelelő) sablont, és lemásoljuk mondjuk 'sajat_sablon' néven. Eztán lépjünk be a 'sajat_sablon' könyvtárba, és nyissuk meg az itt található style.css-t. Igazából itt van a trükk, ugyanis a style.css elején van egy komment rész. A WordPress innen olvassa ki a sablon adatait. Itt írjuk át a sablon nevét, megadhatjuk a készítőt, stb. Ha az adatokat módosítottuk, nézzünk rá WordPress-ben a sablonkezelőre. Ha minden jól megy, ott meg is jelent a saját sablonunk az általunk adott névvel. Ennyi, kész is életünk első WordPress sablonja. Az esetek nagy többségében általában sikerül jó alapot találni, és elég a css-t módosítani. Amennyiben ez nem elég, és bele kell nyúlni a html kódba is, úgy érdemes kicsit szétnézni a könyvtárban. Itt van pár PHP állomány, amik a weboldal különböző darabkáját tartalmazzák. Ezek igazából HTML fájlok némi PHP betéttel. Ha valamit módosítani kellene, akkor itt tehetjük azt meg. Mivel a sablonok felépítése többféle lehet, ezért nincs általános szabály arra, hogy mit hol találunk meg. Én azt szoktam csinálni, hogy megnézem az oldal aktuális állapotának forrását, keresek valami arra a részre jellemző motívumot (id-t, class-t, stb.) arra rákeresek a sablonba, és az így megtalált darabban már elvégezhető a módosítás.

Igazából a WordPress sablonkezelése még egy csomó mindent lehetővé tesz. Regisztrálhatunk dinamikus területeket widgeteknek, új funkcionalitást adhatuk az oldalnak, stb. Tulajdonképpen bármit ki lehet alakítani így. Akár egy teljes Facebook, vagy Google+ oldal is megvalósítható a WordPress sablonrendszerének segítségével, nincs semmi, ami bármiben is korlátozna.  Ez viszont már a mély víz (vagy legalábbis mélyebb) kategória, így túlmutat egy ilyen rövid bejegyzés határain. Indulásnak szerintem ennyi bőven elég. Aki jobban el akar mélyedni a témában, az talál bőven leírásokat a weben.

A továbblépéshez itt egy nagyon jó infografika és leírás a sablonok működéséről: http://yoast.com/wordpress-theme-anatomy/

Illetve a hivatalos WordPress doksi: http://codex.wordpress.org/Theme_Development 

#blog  

2013. március 11., hétfő

WordPress (nagyon)gyorstalpaló (telepítés)


Ez a rövid bejegyzés arról fog szólni, hogy hogyan telepíthetünk WordPress-t a már előzőleg feltelepített XAMPP rendszerünkre.

Először töltsük le a WordPress legújabb példányát a http://wphu.org/letoltes oldalról. Hozzunk létre egy könyvtárat a xampp könyvtárában lévő htdocs mappában. Legyen a könyvtár neve mondjuk wp. Zippeljük ki a letöltött WordPress csomagot ebbe a wp mappába. Indítsuk el az Apache-ot és a MySQL-t, majd nyissuk meg a böngészőben a http://localhost/wp oldalt.

A megjelenő install képernyőn meg kell adnunk az adatbázis adatait, ehhez viszont létre kell hoznunk egy adatbázist. Az adatbázis adminisztrációs felületet a http://localhost/phpmyadmin oldalon találjuk meg. Itt az adatbázisok tabfül alatt hozhatunk létre adatbázist. Legyen az adatbázis neve mondjuk wordpress, az illesztésnél pedig válasszuk ki az utf8_unicode_ci-t. Létrehoz, és már kész is az adatbázis. Térjünk vissza az admin oldalra, az adatbázis nevénél adjuk meg a frissen létrehozott adatbázis nevét (jelen esetben wordpress), a felhasználó root, a jelszó pedig üres. Ha megnyomtuk a tovább gombot, a rendszer kér még pár adatot, majd létrehozza az új wordpress változatot.

Igazából ennyi az egész. Pár egyszerű lépés, és már használatba is vehetjük új WordPress oldalunkat. 

#blog  

2013. március 10., vasárnap

Lokális fejlesztés XAMPP használatával


Habár induláshoz szerintem a Cloud9 a legalkalmasabb (regisztrálás után egy pöccre összelőtt felületet kapuk szerkesztővel, szerverrel, git-el, mindennel), kicsit komplexebb projektekhez már a XAMPP-ot (http://www.apachefriends.org/en/xampp.html) ajánlanám. A XAMPP egy egyszerűen telepíthető környezet, mely tartalmazza a webszervert (apache), az SQL szervert (MySQL), a PHP futtatókörnyezetet, és még pár hasznos dolgot. Igazából a legnagyobb előnye a Cloud9-el szemben az SQL szerver (MySQL), amit Cloud9 esetén csak a fizetős változatban kapunk. Hátránya pedig, hogy telepíteni kell, nem kapunk kényelmes kódszerkesztőt, és Git támogatást.

A XAMPP telepítése után simán a létrejött parancsikonra kattintva indíthatjuk. Itt a megjelenő vezérlőpanelen indítsuk el az apacehe-ot és a mysql-t. Másra egyelőre nem igen lesz szükség. A http://localhost címet a böngészőben megnyitva rögtön láthatjuk is hogy fut, és innen el is érhetünk pár hasznos toolt.

A PHP-s oldalak futtatása sem sokkal bonyolultabb. Keressük ki az a könyvtárat, ahová a XAMPP-ot telepítettük. Itt a htdocs könyvtárban hozzunk létre egy alkönyvtárat mondjuk 'teszt' néven. A könyvtárban hozzunk létre egy teszt.php állományt, és másoljunk bele valami PHP-s kódot. Majd nyissuk meg böngészőben a http://localhost/teszt/teszt.php url-t, és ha minden igaz, látni is fogjuk az eredményt. Ha a teszt.php-t átnevezzük index.php-ra, akkor elég a http://localhost/teszt címet megadni, mivel alapbeállítás szerint ez az alapértelmezett PHP állomány, amit akkor futtat a webszerver, ha nincs külön PHP állomány megadva.

Igazából ennyi elég is az induláshoz ...
 
#blog  





apache friends - xampp
XAMPP is an easy to install Apache Distribution for Linux, Windows, Mac OS X, and Solaris. The package includes the Apache web server, MySQL, SQLite, PHP, Perl, a FTP-Server and phpMyAdmin.