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

TwitterControl

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

TwitterControl je komponenta, která umožní po přidání do Nette zobrazovat několik posledních tweetů pomocí veřejného TwitterAPI.


Samotnou komponentu (stahujte odsud) a její šablonu (.phtml) hodíme třeba do složky app/components. K chodu je potřeba třída cURL (přibalena) zastřešující curl funkce, kterou udělal bůh-ví-kdo, ale důležité je, že ji uvolnil pod licencí MIT.

Všechny tyhle pomocné třídy skladuji v jedné složce, ale když používáte RobotLoader je naprosto jedno, kde bude třída umístěna.

Dalším krokem je konfigurace. Do konfiguráku je potř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á konfigurace jinak (kvůli striktnějšímu ini parseru, 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 hodnoty kromě cachetime, který udává dobu, jak dlouho se bude kešovat, jsou povinné. Když cachetime nastavíme na nulu nebo vynecháme, tak se (překvapivě) nekešuje.

Kešování se hodí z důvodu, že se vždycky nečeká na odezvu serveru a pak taky Twitter má limit počtu požadavků (70 na hodinu a IP).

Aby to celé nějak fungovalo, musí se vytvořit instance třídy a předat do šablony, aby se mohla vykreslit. Ideální místo je BasePresnter::startup (počítám s tím, že se komponenta zobrazuje na každé stránce, jako třeba tady na k47čce v záhlaví) a vypadalo by to nějak takhle:

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

Pak už zbývá jenom nějak upravit šablonu TwitterControl.phtml a do nadřazené šablony přidat kouzelnou formuli

  {? $twitter->render() }

která celý ten zázrak vykreslí.


Stahovat odsud.

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