Drupal má Twitter moc rád

Při vytváření nového webu jsem samozřejmě chtěl zachovat všechny užitečné funkce z webu starého, přičemž jednou z nich byl výpis nejnovějších komentářů z Twitteru.

Podobně jako u většiny jiných informatických problémů, i zde existuje čisté řešení v podobě modulu nazvaného příznačně Twitter a… nazvěme to „ne zrovna čistým řešením“, což není nic jiného, než nový blok s kusem PHP kódu. K tomuto přístupu jsem se také po krátké úvaze uchýlil a nezbývá, než-li se s vámi podělit o ten kus úchvatného kódu, který jsem vyplodil.

Prvně bude třeba povolit modul Aggregator, který bude od Twitteru v zadaném intervalu stahovat RSS s vašimi komentáři. Učinit tak můžete na stránce /admin/build/modules v kategorii Jádro – nepovinné. Spolu s Aggregatorem povolte i modul PHP filter ze stejné kategorie, bude se hodit později. Pak zamiřte na /admin/content/aggregator/add/feed a přidejte adresu RSS zdroje – tu můžete zjistit letmým pohledem do zdrojového kódu vašeho profilu na Twitteru.

Druhým krokem je samotné vytvoření bloku, což můžete provést na stránce /admin/build/block/add. Vyplňte popis a nadpis (popis je pro vás, nadpis uvidí uživatelé) bloku a jako tělo vložte tuto menší „šílenost“:

<?php
$fid = 1;
$limit = 5;
 
$result = db_query('SELECT description, timestamp FROM {aggregator_item} WHERE fid = '. $fid .' ORDER BY timestamp DESC LIMIT '. $limit);
 
print '<div class="item-list"><ul>';
while ($row = db_fetch_object($result)) {
  $text = $row->description;
  $nick = explode(":", $text);
  $nick = $nick[0];
  $nicklen = strlen($nick) + 2; 
  $text = substr($text, $nicklen);
  $text = preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', '<a href="$1">$1</a>', $text);
  $text = preg_replace('@\@([\w]+)@', '<a href="http://twitter.com/$1">$1</a>', $text);
  print '<li><div class="my-twitter-status">';
  if (($text[0] != '<') && ($text[0] == strtolower($text[0]))) {
    print $nick . ' ';
  }
  print $text . '</div>';
  print '<div class="my-twitter-status-time">' . twitter_ago($row->timestamp) . '</div></li>';
}
print '</ul></div>';
 
function twitter_ago ($timestamp) {
   $difference = time() - $timestamp;
   $text = format_interval($difference, 2) . " zpět";
   return $text;
}
?>

A to ještě buďte rádi, že jste neviděli první verzi, která byla distribuována obchodní metodou IKEA – dodělej doma. Čímž chci říct, že tahle verze je alespoň trošku učesanější, než ta hrůza, kterou jsem chtěl světu ukázat prvně. Vážně.

Chcete-li ovlivnit počet vypsaných komentářů, stačí změnit hodnotu proměnné $limit. Naopak obsah proměnné $fid pravděpodobně nebude třeba měnit, leda byste již v minulosti používali modul Aggregator – a v takovém asi případě víte, jak zjistit správné $fid.

Nezapomeňte změnit formát bloku na PHP a povolit jeho zobrazování, stojí-li bohyně při vás, vše by v tuto chvíli mělo fungovat; pokud se tak stalo, nezapomeňte se podělit v diskuzi, v opačném případě na lampárně.

Komentáře

Obrázek uživatele Anonym

Zajímavé... A komu tím

Zajímavé... A komu tím prospěješ? :D

Obrázek uživatele Anonym

Komu to láduješ ty NULO?

Komu to láduješ ty NULO?

Obrázek uživatele miloso

Ale tak pánové… :-P

Ale tak pánové… :-P

Obrázek uživatele Anonym

Dobrý leda jako krmení pro

Dobrý leda jako krmení pro pavouky...

Poslat nový komentář

Obsah tohoto pole je soukromý a nebude veřejně zobrazen. Používáte-li službu Gravatar, bude obsah pole použit k zobrazení avataru.
  • Webové a e-mailové adresy jsou automaticky převedeny na odkazy.
  • Povolené HTML značky: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Řádky a odstavce se zalomí automaticky.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <php>, <python>, <ruby>. Beside the tag style "<foo>" it is also possible to use "[foo]".

Více informací o možnostech formátování