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ě.

Comments

Anonymous's picture

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

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

Anonymous's picture

Komu to láduješ ty NULO?

Komu to láduješ ty NULO?

miloso's picture

Ale tak pánové… :-P

Ale tak pánové… :-P

Anonymous's picture

Tiffany Charms hair smooth

Tiffany Charms hair smooth leather coat collocation and who are very big satchel gedaliah, and in the dust coat the draw on some Tiffany co jewellry revealed a nifty breath more Tiffany Bangles

Anonymous's picture

Dobrý leda jako krmení pro

Dobrý leda jako krmení pro pavouky...

Anonymous's picture

Je někde ukázka výsledku?

Je někde ukázka výsledku?

Anonymous's picture

nice to this artcle

nice to this artcle

Anonymous's picture

You nicely summed up the

You nicely summed up the concern.

Post new comment

The content of this field is kept private and will not be shown publicly. If you have a Gravatar account, used to display your avatar.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.
  • 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]".

More information about formatting options