TransWikia.com

Views Pager Add rel="nofollow to ALL Pager Links

Drupal Answers Asked on December 6, 2021

In Drupal 7 I am trying to add rel=”nofollow” to ALL of the pager links in views. The closest I have got is to add the nofollow to next links, but I want it to include previous pages as well as “First” and “Last”.

P.S. We specifically want the rel=”nofollow” attribute to all pager links, we are not looking for other solutions (noindex, block with robots.txt, or rel=next/prev).

This is the code I am currently using:

function mytheme_pager_next($variables) {
  $text = $variables['text'];
  $element = $variables['element'];
  $interval = $variables['interval'];
  $parameters = $variables['parameters'];
  global $pager_page_array, $pager_total;
  $output = '';
  // If we are anywhere but the last page
  if ($pager_page_array[$element] < ($pager_total[$element] - 1)) {
    $page_new = pager_load_array($pager_page_array[$element] + $interval, $element, $pager_page_array);
    // If the next page is the last page, mark the link as such.
    if ($page_new[$element] == ($pager_total[$element] - 1)) {
      $output = theme('pager_last', array('text' => $text, 'element' => $element, 'parameters' => $parameters,'attributes'=>array('rel'=&gt;'nofollow')));
    }
    // The next page is not the last page.
    else {
      $output = theme('pager_link', array('text' => $text, 'page_new' => $page_new, 'element' => $element, 'parameters' => $parameters,'attributes'=>array('rel'=>'nofollow')));
    }
  }
  return $output;
}

2 Answers

After trying several suggestions here and on Drupal forums I found they were all overly complicated and caused the 'white screen of death. Our final solution was to simply make a minor hack to drupal core includes/pager.inc found here: http://bizuns.com/drupal/rel-nofollow-views-pager-links We backed up the file before making the change and it's working great so far, if we upgrade drupal we'll just have to make a note to modify this later. Thanks again for the feedback. If anyone has a cleaner (and simple) method I would gladly try the snippet if you provide it.

Answered by Haz on December 6, 2021

Not sure of a hook right now for something cleaner. An alternative that will allow you to do what you want,

function hook_views_post_render(&$view, &$output, &$cache) {
    dpm($output);
}

You can use a regex, something like,

(<li.*pager-item.*><a)(.*)

That will give you two groups. - Group one with every list of items and the opening tag of the anchor. - Group two with the rest of the line

You can use this to iterate over and add in between both groups,

rel="nofollow"

Of course, you post an answer and find some information. You may want to see if you find these hooks useful, https://drupal.stackexchange.com/a/140867

Answered by rovr138 on December 6, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP