從移除、修改 Drupal Rss icon 看 Drupal API 之優及版型修改

安裝好 Drupal 後,預設就有提供 RSS 的服務,但不想要該如何 ? 很有趣的是,即使到了最新的 Drupal 7 也沒有提供關閉功能,你可以靠模組來解決 (RSS Permissions)。算了算,我不太想安裝模組,就是要隱藏起來就好....

Rss icon 是來自版型中的,要隱藏的方法的確多,但既然使用了 Drupal,就好好學一下 Drupal 能如何去做。

利用 CSS 隱藏

對於新手來說,第一個想法必定是 CSS,真的太簡單

.feed-icon { display: none }

但你或許會說:我雖不懂 Drupal ,可是一名 HTML & CSS 的高手,無謂的輸出這些 HTML 程式碼,有點兒... (是的,這是最糟糕的方法,窮途未路時才好使用)

從 Page.tpl.php 中移除

對了,這次對了!找到以下這句,刪了就可以

print $feed_icons

可是,$feed_icons未必只在一個版型檔案中,要獨一修改也太麻煩。某天,老闆想法不同,不是又要花大量時間去修改回來嗎 ? 一些模組亦可能會輸出啊!

透過 Drupal API theme_feed_icon 移除

這是終極武器,既不會輸出無謂的 HTML,也不用大量修改版型,某天後悔了,也只是註釋掉就可以。模組做壞事嗎 ?? 也會殺掉它!

參考:http://api.drupal.org/api/function/theme_feed_icon/6

直接複製程式碼到版型下的 template.php 檔案,並做小修改。

function phptemplate_feed_icon($url, $title) {
     return '';
 }

** 緊記到管理界面清除快取,否則沒效果不要說我的方法失敗。

Drupal 7 中 "phptemplate_" 已失效,請使用你的版型名代替,事實上 Drupal 6 中也應該這樣做。

要修改圖片 ?

Drupal 6

function theme_feed_icon($url, $title) {
  if ($image = theme('image', path_to_theme() . '/images/feed.png', t('Syndicate content'), $title)) {
    return '<a href="'. check_url($url) .'" class="feed-icon">'. $image .'</a>';
  }
}

Drupal 7 API 變了,做法沒差別,你可以使用新的 API

function theme_feed_icon($variables) {
  $text = t('Subscribe to @feed-title', array('@feed-title' => $variables['title']));
  if ($image = theme('image', array('path' => path_to_theme() . '/images/feed.png', 'alt' => $text))) {
    return '<a href="' . check_url($variables['url']) . '" title="' . $text . '" class="feed-icon">' . $image . '</a>';
  }
}

複製了,出錯啊 ! 剛才說過,你要修改 theme_ 為你的版型名。
修改了,變了沒東西 ? 別忘記清除快取及在你指定的位置放上圖片。
只出文字該如何做 ?? 我不太懂, LOL
 

(這是 Drupal 小技巧系列,專門分享微不足道,但實用的修改技巧。)

寫下您的回覆

電子郵件不會公開