SimpleBlogroll は SimplePie ライブラリを使用してRSSFeed を取得し、ブロック内にリンクと更新状況をリストアップしてくれる。
いわゆるブログロールと呼ばれる機能である。
SimpleBlogroll はその名の通り、非常にシンプルで、必要最低限の機能しかもっていない。それはそれで良いのだが、管理者の場合サイト外へのリンクは別ウィンドウで開いてほしい。外部リンクを開く前のページ(この場合は自分のサイト)が残っていてほしいのだ。
これは自分のサイトに訪問者をとどめておきたいという思惑と、自分が関連サイトの更新状況をチェックする場合に毎回リンク先から元のページに「戻る(開きなおす)」工程が煩雑に感じるためである。またWebサイトのコンテンツ容量が肥大化する傾向にある昨今ではページが表示されるまでに意外と時間がかかる場合も多いからだ。
といった必要性から、モジュール自体に手を入れることになる。
欲しい機能があれば自分で改造する。こういった小回りの効きやすさも Drupal システムの魅力である。
SimpleBlogroll のファイル構成はsimpleblogroll.module がメインとなる。ほかにもフォルダ内にはいくつかファイルがあるがinfoファイルや初期化用のファイルであって改造には関係ない。
適当なエディターでモジュール内をながし読むと
function _simpleblogroll_build_block()
という関数内でHTMLを生成しているようだ。
switch (variable_get('display_links', 'none')) {
case 'iconleft':
$return .= l(theme_image($linkimagepath, '>', $row['site_url']), $row['site_url']
, array('html' => TRUE, 'attributes' => array('target' => '_blank')));
$return .= ' '. $row['feed_title'] .'</b><br />';
break;
case 'iconright':
$return .= $row['feed_title'] .'</b> ';
$return .= l(theme_image($linkimagepath, '>', $row['site_url']), $row['site_url']
, array('html' => TRUE, 'attributes' => array('target' => '_blank'))) .'<br>';
break;
case 'link':
$return .= l($row['feed_title'], $row['site_url']
, array('attributes' => array('target' => '_blank'))) .'</b><br />';
break;
case 'none':
$return .= $row['feed_title'] .'</b><br />';
break;
}
if ($row['last_item'] == 'NULL_EMPTY') {
$row['last_item'] = '['. t('Untitled') .']';
}
$return .= l($row['last_item'], $row['item_url']
, array('attributes' => array('target' => '_blank')));
if ($row['timestamp'] > (time() - 60 * 60 * variable_get('display_time_new', '24'))) {
$return .= ' <small>('. t('new') .')</small>';
}赤で着色したコードが追加部分。l()関数にオプションを追加しただけである。
これでアンカータグに target="_blank" が追加され望んでいた動作になった。
Recent comments