2014-11-23 14 views
9

Bir <a> bağlantısının target özniteliğinin CSS tarafından belirlenemediğini anlıyorum.Jekyll: dış bağlantılar için özel HTML üret (hedef ve CSS sınıfı)

[the text](the url){:target"_blank" class="external"} 

Ben istemiyorum: Böyle bir şey başvurmadan olmadan

<a href="the-url" class="external" target="_blank">the text</a> 

: Aşağıdaki çıkışı ile bir Jekyll tabanlı markdown belgesinde harici bağlantılar oluşturmak mümkün olmak istiyorum her bir bağlantıda target kodunu zorlayabilirim, çünkü bir noktada değiştirmek isteyebilirim, aynı zamanda gürültülü. Yani ideal ben

[the text](the url){:class="external"} 

olurdu ... ama sonra CSS target="_blank" ekleyemezsiniz.

Yani benim fikrim

{% ext-link the-url the text %} 

böyle bir eklenti var mı yazmaya olanak sağlayan özel bir eklenti olurdu? Bunu başarmanın daha iyi yolları var mı?

cevap

8

Bir eklenti yazmak doğru görünüyor.

module Jekyll 
    class ExtLinkTag < Liquid::Tag 
    @text = '' 
    @link = '' 

    def initialize(tag_name, markup, tokens) 
     if markup =~ /(.+)(\s+(https?:\S+))/i 
     @text = $1 
     @link = $3 
     end 
     super 
    end 

    def render(context) 
     output = super 
     "<a class='external' target='_blank' href='"[email protected]+"'>"[email protected]+"</a>" 
    end 
    end 
end 

Liquid::Template.register_tag('extlink', Jekyll::ExtLinkTag) 

Örnek kullanım:

Exhibition at {% extlink Forum Stadtpark http://forum.mur.at %}. 

HTML çıktısı: Bu benim ile geldi budur

<p>Exhibition at <a class="external" target="_blank" href="http://forum.mur.at">Forum Stadtpark</a>.</p> 
11

Eğer Github yapmanız gerekir pagesand sonra eklentileri kullanamazsınız, javascript ile yapabilirsin:

this answer'den ilham alındı. target="_blank", rel="nofollow", sınıf adları ve otomatik harici linkler Seçtiğiniz başka özelliklerini uygulamak için küçük Jekyll eklentisi yoktur

2

: rel uygularken

Jekyll ExtLinks Plugin

ana listesi atlanmasına Bazı bağlantılar el değmeden tutmak istiyorsanız yapılandırılabilir. Bu şekilde, artık Markdown ile mangle yapmak zorunda değilsiniz.

UPD: Bu eklenti şimdi RubyGems'e bırakıldı: jekyll-extlinks. Yüklemek için gem install jekyll-extlinks kullanın. Ayrıca available on GitHub.

+0

Bu eklenti jekyll benim için çalışmıyor 3.3.1. –

+0

Jekyll 3.4.0 üzerinde test edildi, nokogiri ile ilgili bir sorun vardı - Gemfile projesinde gem 'nokogiri' belirterek düzeltildi. Bunun dışında eklenti güzel çalıştı. – nourish