You are here

function ed_readmore_nodeapi in Read More Link (Drupal 6 and earlier) 5

Same name and namespace in other branches
  1. 6.5 ed_readmore.module \ed_readmore_nodeapi()
  2. 6.2 ed_readmore.module \ed_readmore_nodeapi()
  3. 6.3 ed_readmore.module \ed_readmore_nodeapi()

Fix "read more" flag From the most excellent angry donuts site: http://www.angrydonuts.com/the_nuisance_of_the_read_more_fl From author: Note that I'm using a lot of arguments to l() -- I'm telling it to provide an 'absolute' path, because these teasers often go out to RSS, and providing an absolute path is much, much safer.

File

./ed_readmore.module, line 73
Customize the "Read more" link shown in teasers.

Code

function ed_readmore_nodeapi(&$node, $op, $teaser, $page) {
  $enabled = variable_get('ed_readmore_readmore_tweak', ED_READMORE_READMORE_TWEAK_DEFAULT);
  if ($enabled) {
    $link_text = t(variable_get('ed_readmore_text', ED_READMORE_TEXT_DEFAULT));
    if (variable_get('ed_readmore_readmore_strong', 1)) {
      $link_text = '<strong>' . $link_text . '</strong>';
    }
    $inlineflag = variable_get('ed_readmore_readmore_inline', ED_READMORE_READMORE_INLINE_DEFAULT);
    $rss_enabled = variable_get('ed_readmore_readmore_rss_enabled', ED_READMORE_READMORE_RSS_DEFAULT);
    if ($rss_enabled && $op == 'rss item') {

      // Since this is an RSS item, we need an absolute URL.
      // And, while we're at it, we make it a _blank target as does node.module node_feed() function.
      $options['target'] = '_blank';
      $item_length = variable_get('feed_item_length', 'teaser');

      // from node.module node_feed() code
      switch ($item_length) {
        case 'teaser':
          if (strlen($node->teaser) < strlen($node->body)) {
            $readmore_url = l($link_text, "node/{$node->nid}", $options, NULL, NULL, TRUE, TRUE);
            $node->teaser = _ed_readmore_place_readmore_link($node->teaser, $readmore_url, $inlineflag);
          }
          break;
      }
      return;
    }
    if ($op == 'view') {
      if ($teaser && $node->readmore) {
        if (variable_get('ed_readmore_readmore_remove', TRUE)) {
          $node->readmore = FALSE;

          // since we are blowing away some of the implicit info ($node->readmore) let's remember that this was a teaser
          $node->is_teaser = TRUE;
        }
        $readmore_url = l($link_text, "node/{$node->nid}", NULL, NULL, NULL, TRUE, TRUE);
        $node->content[body]['#value'] = _ed_readmore_place_readmore_link($node->content[body]['#value'], $readmore_url, $inlineflag);
      }
    }
  }
}