k47.cz  — každý den dokud se vám to nezačne líbit
foto Praha výběr povídky kultura
twitter FB RSS

TwitterControl

26. 8. 2008 — k47 (CC by-nc-sa)

Twit­ter­Con­t­rol je kom­po­nenta, která umožní po při­dání do Nette zob­ra­zo­vat ně­ko­lik po­sled­ních tweetů pomocí ve­řej­ného Twit­te­rAPI.


Sa­mot­nou kom­po­nentu (sta­hujte odsud) a její ša­b­lonu (.phtml) hodíme třeba do složky app/com­po­nents. K chodu je po­třeba třída cURL (při­ba­lena) za­střešu­jící curl funkce, kterou udělal bůh-ví-kdo, ale dů­le­žité je, že ji uvol­nil pod li­cencí MIT.

Všechny tyhle po­mocné třídy skla­duji v jedné složce, ale když po­u­ží­váte Ro­botLo­a­der je na­prosto jedno, kde bude třída umís­těna.

Dalším krokem je kon­fi­gu­race. Do kon­fi­gu­ráku je po­třeba přidat tyto klíče:

  twitter> username = jméno
  twitter> password = heslo
  twitter> cachetime = 120
  twitter> count = 5

V nové verzi Nette (tuším, že od revize 61 a dál) vypadá kon­fi­gu­race jinak (kvůli strikt­něj­šímu ini par­seru, který přijde s PHP 5.3), takže pak bude vypdat takhle:

  twitter.username = jméno
  twitter.password = heslo
  twitter.cachetime = 120
  twitter.count = 5

Všechny hod­noty kromě cachetime, který udává dobu, jak dlouho se bude ke­šo­vat, jsou po­vinné. Když ca­che­time na­sta­víme na nulu nebo vy­ne­cháme, tak se (pře­kva­pivě) ne­kešuje.

Ke­šo­vání se hodí z důvodu, že se vždycky nečeká na odezvu ser­veru a pak taky Twit­ter má limit počtu po­ža­davků (70 na hodinu a IP).

Aby to celé nějak fun­go­valo, musí se vy­tvo­řit in­stance třídy a předat do ša­b­lony, aby se mohla vy­kres­lit. Ide­ální místo je Base­Presn­ter::startup (po­čí­tám s tím, že se kom­po­nenta zob­ra­zuje na každé stránce, jako třeba tady na k47čce v zá­hlaví) a vy­pa­dalo by to nějak takhle:

  $this->template->twitter = new TwitterControl($this, 'twitter');

Pak už zbývá jenom nějak upra­vit ša­b­lonu Twit­ter­Con­t­rol.phtml a do nad­řa­zené ša­b­lony přidat kou­zel­nou for­muli

  {? $twitter->render() }

která celý ten zázrak vy­kreslí.


Sta­ho­vat odsud.

píše k47 & hosté, ascii@k47.cz