генерировать ссылки nofollow в выводе RDiscount - PullRequest
4 голосов
/ 16 января 2011

Мое приложение rails использует RDiscount для генерации HTML из предоставленного пользователем текста уценки, и я заметил, что теги привязки не имеют rel = "nofollow". Это большая проблема для меня, так как мое приложение открыто для общественности. Есть ли способ включить ссылки nofollow или есть лучшие решения?

Спасибо!

Ответы [ 4 ]

3 голосов
/ 16 января 2011

Я думаю, что это возможно только с Kramdown , который является рубиновым анализатором Markdown с расширенным синтаксисом.Тогда вы сделаете это, как показано в ссылке:

[link](test.html){:rel='nofollow'}
2 голосов
/ 17 января 2011

Тем временем я использую этот хак, повторно анализируя вывод RDiscount и добавляя rel = "nofollow" к каждому якору:

def markdown(input)
  html = RDiscount.new(input).to_html
  doc = Nokogiri::HTML::DocumentFragment.parse(html)
  doc.css("a").each do |link|
    link['rel'] = 'nofollow'
  end
  doc.to_html
end

Хотя я думаю, что это действительно должно быть обработано анализатором уценки.

1 голос
/ 18 октября 2011

Мне нужно было сделать нечто подобное, добавить target="_new" ко всем ссылкам. Решил это, используя Kramdown и пользовательский класс Kramdown::Converter::Html.

Определить подкласс Kramdown::Converter::Html (kramdown / converter / my_html.rb в некотором пути автозагрузки)

class Kramdown::Converter::MyHtml < Kramdown::Converter::Html
  def convert_a(el, indent)
    el.attr['target'] = '_new'
    super
  end
end

У меня также есть помощник вида в app / helpers / application_helper.rb

def markdown(str)
  Kramdown::Converter::MyHtml.convert(Kramdown::Document.new(str).root)[0].html_safe
end

В идеале должно быть возможно просто использовать Kramdown::Document.new(str).to_my_html.html_safe, но я не могу заставить его работать в режиме разработки рельсов, поскольку Kramdown использует const_defined?, чтобы проверить, доступен ли конвертер и не запускает ли автозагрузчик. Пожалуйста, прокомментируйте, если вы знаете, как это исправить.

0 голосов
/ 28 апреля 2013

На RDiscount имеется открытый запрос для поддержки функции RDiscount для поддержки изменения ссылок таким способом.

Он запланирован на один из следующих выпусков RDiscount 2.1.5.x.

...