Добавление rel = nofollow к will_paginate ссылкам в рельсах - PullRequest
2 голосов
/ 04 января 2011

Есть ли способ добавить "rel = nofollow" к ссылкам, созданным гемом will_paginate в rails?

Ответы [ 4 ]

4 голосов
/ 13 апреля 2011

Я считаю, что переопределение page_number не работает (а также не позаботится о ваших следующих и обратных ссылках).Вместо этого я переопределяю rel_value:

require 'will_paginate/view_helpers/link_renderer'
class PaginationNoFollow < WillPaginate::ViewHelpers::LinkRenderer
  def rel_value(page)
    case page
    when @collection.previous_page; 'prev nofollow' + (page == 1 ? ' start nofollow' : '')
    when @collection.next_page; 'next nofollow'
    when 1; 'start nofollow'
    else
      'nofollow'
    end
  end
end

Добавьте этот класс в lib и, по вашему мнению:

will_paginate @users, :renderer => PaginationNoFollow
1 голос
/ 04 января 2011

Вам нужно создать свой собственный LinkRenderer и использовать его

require 'will_paginate/view_helpers/link_renderer'
class PaginationNoFollow < WillPaginate::ViewHelpers::LinkRenderer

  def page_number(page)
    unless page == current_page
      link(page, page, :rel => 'nofollow')
    else
      link(page, page, :rel => 'nofollow', :class => 'on')
    end

  end

end

На ваш взгляд:

= will_paginate @users, :renderer => PaginationNoFollow
0 голосов
/ 03 декабря 2017

Вы также можете разместить следующий метатег в разделе <head> вашей страницы:

<!-- Prevent webcrawlers to navigate paginations -->
<% if params[:page] %>
  <meta name="robots" content="noindex">
<% end %>

Я считаю, что это лучший подход, поскольку вы уменьшаете зависимость от гема will_paginate.

0 голосов
/ 22 августа 2012

В will_paginate 3 и Rails 3 мне пришлось переопределить ActionView :: LinkRenderer следующим образом:

require 'will_paginate/view_helpers/action_view'

class PaginationNoFollow < WillPaginate::ActionView::LinkRenderer
  def rel_value(page)
    [super, 'nofollow'].compact.join(' ')
  end
end
...