diff --git modules/node/node.module modules/node/node.module
index 16d64ff..85c6fad 100644
--- modules/node/node.module
+++ modules/node/node.module
@@ -1646,24 +1646,30 @@ function theme_node_search_admin($form) {
 }
 
 /**
- * Implementation of hook_link().
+ * Implementation of hook_node_view().
  */
-function node_link($type, $node = NULL, $teaser = FALSE) {
+function node_node_view($node, $teaser = FALSE) {
   $links = array();
-
-  if ($type == 'node') {
-    if ($teaser == 1 && $node->teaser && !empty($node->readmore)) {
-      $links['node_read_more'] = array(
-        'title' => t('Read more'),
-        'href' => "node/$node->nid",
-        // The title attribute gets escaped when the links are processed, so
-        // there is no need to escape here.
-        'attributes' => array('title' => t('Read the rest of !title.', array('!title' => $node->title)))
-      );
-    }
+  if ($teaser && $node->teaser && !empty($node->readmore) && in_array($node->build_mode, array(NODE_BUILD_NORMAL, NODE_BUILD_RSS))) {
+    $href = "node/$node->nid";
+    if ($node->build_mode == NODE_BUILD_RSS) {
+      $href = url($href, array('absolute' => TRUE, 'target' => '_blank'));
+    }
+    $links['read_more'] = array(
+      'title' => t('Read more'),
+      'href' => $href,
+      // The title attribute gets escaped when the links are processed, so
+      // there is no need to escape here.
+      'attributes' => array('title' => t('Read the rest of !title.', array('!title' => $node->title)))
+    );
   }
 
-  return $links;
+  if (!empty($links)) {
+    $node->content['links']['node'] = array(
+      '#type' => 'node_links',
+      '#value' => $links,
+    );
+  }
 }
 
 function _node_revision_access($node, $op = 'view') {
