私はjekyllを使ってブログを始めました。私は自分の投稿をマークダウンで書きます。次に、投稿にyoutubeビデオを含めたいと思います。これどうやってするの?
また、デフォルトでjekyllが提供するpygmentsハイライトはあまり好きではありません。とにかくこれを他のスタイルに変更できますか?はいの場合、いくつかの素敵なスタイル/プラグインを教えてもらえますか?
マークダウンに直接埋め込むHTMLを配置できるはずです。ビデオの下に「共有」ボタンがあり、これをクリックしてから「埋め込み」ボタンをクリックすると、次のようになります。
<iframe width="420" height="315" src="http://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0" allowfullscreen></iframe>
それをコピーして投稿に貼り付けるだけで、Markdownプリプロセッサはそれに触れません。
Pygmentsの場合、さまざまなカラーテーマ用のCSSスタイルシートが山積みになっており、 このリポジトリ で試すことができます。 (注:.codehilite
with .highlight
これらがJekyllと連携するために。)
私は同様のことをしましたが、私の場合、単純なコピーと貼り付けは機能しません。エラーメッセージは次のとおりです。
REXMLはこのXML/HTMLを解析できませんでした:
このエラーを回避するために、以下のようにコピーしたソースからallowfullscreen
を削除しました。
<iframe width="480" height="360" src="http://www.youtube.com/embed/WO82PoAczTc" frameborder="0"> </iframe>
_</iframe>
を閉じる前に空白を追加することが重要です。
その後、ビデオを自分のサイトに埋め込むことに成功しました。
https://Gist.github.com/1805814 で説明されているように、youtubeビデオを挿入するhtmlコードは、シンプルなプラグインを使用してJekyllで生成できます。
構文は次のように簡単になります。
{% youtube oHg5SJYRHA0 %}
私の場合、jQueryの問題は解決されています。
jQuery
$('.x-frame.video').each(function() {
$(this).after("<iframe class=\"video\" src=\"" + ($(this).attr('data-video')) + "\" frameborder=\"0\"></iframe>");
});
使用法
<div class="x-frame video" data-video="http://player.vimeo.com/video/52302939"> </div>
<div> </div>
の間には空白が必要です。
WordPresの優れた機能の1つは、Youtube URLをコンテンツに(新しい行に)貼り付けるだけで、WordPressを埋め込みコードに変換することです。
次のコードは、Jekyllに対して同じことを行います。このコードをフッターに入れる(またはJekyllインクルードを使用する)だけで、Just a Youtube URLを持つすべての段落は、Vanilla JSによって自動的にレスポンシブYoutube埋め込みに変換されます。
<style>
.videoWrapper {position: relative; padding-bottom: 56.333%; height: 0;}
.videoWrapper iframe {position: absolute; top: 0; left: 0; width: 100%; height: 100%;}
</style>
<script>
function getId(url) {
var regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/;
var match = url.match(regExp);
if (match && match[2].length == 11) {
return match[2];
} else {
return 'error';
}
}
function yt_url2embed() {
var p = document.getElementsByTagName('p');
for(var i = 0; i < p.length; i++) {
var pattern = /^((http|https|ftp):\/\/)/;
if(pattern.test(p[i].innerHTML)) {
var myId = getId(p[i].innerHTML);
p[i].innerHTML = '<div class="videoWrapper"><iframe width="720" height="420" src="https://www.youtube.com/embed/' + myId + '?rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe></div>';
}
}
}
yt_url2embed();
</script>
HTMLコードをMarkdownに追加するだけで非常に優れた(おそらくさらに優れた)有効なソリューションになりますが、このソリューションの方がユーザーフレンドリーです。
( Source )