About - このプラグインについて

blockquote 要素や、q 要素の引用元の情報を簡単に示すことができます。
たとえば、このようにマークアップされた HTML があったとすると……

<blockquote cite="http://ja.wikipedia.org/wiki/%E5%BC%95%E7%94%A8" title="引用 - Wikipedia">
    <p>引用(いんよう、英語:citation, quotation[1])とは、広義には、他人の著作を自己の作品のなかで紹介する行為、先人の芸術作品やその要素を自己の作品に取り入れること。</p>
</blockquote>

プラグインの初期設定では次のように整形されます。
(実際には、インデントや元テキスト以外の改行はされません)

<div class="prettyQuote">
    <div class="header">引用 - Wikipedia</div>
    <blockquote cite="http://ja.wikipedia.org/wiki/%E5%BC%95%E7%94%A8" title="引用 - Wikipedia">
        <p>引用(いんよう、英語:citation, quotation[1])とは、広義には、他人の著作を自己の作品のなかで紹介する行為、先人の芸術作品やその要素を自己の作品に取り入れること。</p>
    </blockquote>
    <div class="footer"><cite><a href="http://ja.wikipedia.org/wiki/%E5%BC%95%E7%94%A8">http://ja.wikipedia.org/wiki/引用</a></cite></div>
</div>

このようにリンクが生成されることで閲覧者が引用元を確認するのが容易になります。
また、書き手にとっても引用時にリンクを作る必要がなくなるので、少しは楽ができるかもしれません。

このプラグインを公開したときのブログ記事はこちらです。
blockquote 要素を整形する jQuery プラグイン「jQuery.prettyQuote.js」

プラグインの特徴

  • 引用元が Web 上か書籍かを自動判別し、リンクを生成。
  • 書籍の場合は Amazon.co.jp の商品ページへのリンクを生成。
  • cite 属性の ISBN は ISBN-13 でも ISBN-10 でも OK。
  • 生成される HTML をある程度まで指定可能。
  • blockquote でも q でも使用可能。
  • Amazon へのリンクにはアフィリエイト ID を付与可能。

DownLoad - ダウンロードとライセンスについて

ダウンロードversion 1.2

プラグインのライセンスは MIT ライセンスです。
参考リンク:MIT License - Wikipedia

Installation - 導入方法

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.prettyquote.js"></script>
<script type="text/javascript">
$(function() {
    $('blockquote').prettyQuote();
});
</script>

jQuery.prettyQuote.js は jQuery プラグインですので、使用には jQuery.js が必須となります。
jQuery.js は公式サイトからダウンロードするか、Google にホスティングされているものをご利用ください。

$('blockquote') の部分は、適用したいセレクタに書き換えてください。

Options - オプション

jQuery.prettyQuote.js にはいくつかオプションがあり、デフォルトでは以下のようになっています。

$(function() {
    $(selector).prettyQuote({
        newWin: true,
        container: { tag: 'div', className: 'prettyQuote'},
        quoteWrap: { wrap: false, tag: 'div', className: 'body' },
        header: { display: true, tag: 'div', className: 'header' },
        footer: { display: true, tag: 'div', className: 'footer', text: 'uri' },
        tooltip: '',
        amazonId: ''
    });
});

オプション項目の説明

ここで使われる対象要素とは、スクリプトを適用する要素のことで blockquote 要素、もしくは q 要素となります。

newWin
生成されたリンクを新しいウィンドウで開くかどうか。
truefalse で指定。デフォルトは true です。
container
対象要素と追加される要素を格納する要素です。サブオプションは以下のようになっています。
tag
使用する要素。デフォルトは 'div' です。
空にするとプラグインは無効になりますので注意してください。
className
使用する要素に適用するクラス名。デフォルトは 'prettyQuote' です。
quoteWrap
必要な場合に対象要素のみを囲む要素を指定できます。サブオプションは以下のようになっています。
wrap
囲むかどうか。truefalse で指定します。デフォルトは false です。
tag
wrap: true の場合に有効。何の要素で囲むかを指定します。デフォルトは 'div' です。
className
wrap: true の場合に有効。囲む要素に適用するクラス名。デフォルトは 'body' です。
header
対象要素の前に追加する要素。title 属性の値を表示します。title 属性がない場合は追加されません。
display
ヘッダーを表示するかどうか。truefalse で指定します。デフォルトは true です。
tag
display: true の場合に有効。どの要素を使うかを指定します。'' のように空を指定すると、要素でマークアップされていないテキストが表示されます。
デフォルトは 'div' です。
className
display: true の場合に有効。使用する要素に適用するクラス名。デフォルトは 'header' です。
footer
対象要素の後に追加する要素。
title 属性の値、または URI を表示し、cite 属性がある場合にはリンクを生成します。
display
フッターを表示するかどうか。truefalse で指定します。デフォルトは true です。
tag
display: true の場合に有効。どの要素を使うかを指定します。
'' のように空を指定すると、<cite><a href="URI">アンカーテキスト</a></cite> のみが出力されます。リンクがない場合はアンカーテキストがそのまま表示されます。
デフォルトは 'div' です。
className
display: true の場合に有効。使用する要素に適用するクラス名。デフォルトは 'footer' です。
text
アンカーテキストに使用するテキスト。'title' または 'uri' で指定します。デフォルトは 'uri' です。
tooltip
生成するリンクのタイトル属性に入れたいテキスト (例:'引用元へ')。
'title' を指定すると、title 属性の値を使用できます。デフォルトは空です。
amazonId
Amazon へのリンクに使用する Amazon トラッキングコード (例:'xxx-22')。デフォルトは空です。

各オプションは省略可能ですが、サブオプションに何か指定する場合、サブオプションは省略できません。
以下の例はフッターのテキストだけ変更する場合です。
(赤いテキストが変更箇所)

$(function() {
    $(selector).prettyQuote({
        footer: { display: true, tag: 'div', className: 'footer', text: 'title' }
    });
});

q 要素に適用する場合など、以下のように指定すると使いやすいかもしれません。

$(function() {
    $('q').prettyQuote({
        container: { tag: 'span', className: 'prettyQuote'},
        header: { display: false, tag: 'div', className: 'header' },
        footer: { display: true, tag: 'span', className: 'cite', text: 'uri' }
    });
});

Examples(Basic) - 基本的な使用例

デフォルト設定

スタイルはこのデモ用に作ったので、各自でいい感じにデザインしてください。
(このプラグインはスタイルシートを追加しません)

引用元が Web 上の場合

引用(いんよう、英語:citation, quotation[1])とは、広義には、他人の著作を自己の作品のなかで紹介する行為、先人の芸術作品やその要素を自己の作品に取り入れること。

引用元が書籍の場合

jQueryの最大の特徴は、通常のJavaScriptとは異なる方法でJavaScriptの命令を記述できることです。JavaScriptの記述には多くの手続きを必要としますが、jQueryを利用すると非常に短いコードで済みます。

デフォルト設定下で、title 属性や cite 属性の有無による違い

どちらも指定されている場合は、上記のデフォルト設定の例のようになります。

cite 属性あり・title 属性なし

引用(いんよう、英語:citation, quotation[1])とは、広義には、他人の著作を自己の作品のなかで紹介する行為、先人の芸術作品やその要素を自己の作品に取り入れること。

cite 属性なし・title 属性あり

引用(いんよう、英語:citation, quotation[1])とは、広義には、他人の著作を自己の作品のなかで紹介する行為、先人の芸術作品やその要素を自己の作品に取り入れること。

cite 属性なし・title 属性なし

引用(いんよう、英語:citation, quotation[1])とは、広義には、他人の著作を自己の作品のなかで紹介する行為、先人の芸術作品やその要素を自己の作品に取り入れること。

Examples(Advanced) - 高度な使用例

設定例を紹介します。これを参考にして自分好みの設定にしてください。
対象要素には cite 属性・title 属性の両方があるものとします

ヘッダーなしで、アンカーテキストに title 属性の値を使う

オプションの設定は以下。

$(function() {
    $(selector).prettyQuote({
        header: { display: false, tag: 'div', className: 'header' },
        footer: { display: true, tag: 'div', className: 'footer', text: 'title' }
    });
});

表示されるもの。

引用(いんよう、英語:citation, quotation[1])とは、広義には、他人の著作を自己の作品のなかで紹介する行為、先人の芸術作品やその要素を自己の作品に取り入れること。

書籍からの引用文をアフィリエイト付きで Amazon.co.jp へリンクする

オプションの設定は以下。

$(function() {
    $(selector).prettyQuote({
        tooltip: 'title',
        amazonId: 'pnr-22'
    });
});

表示されるもの。

jQueryの最大の特徴は、通常のJavaScriptとは異なる方法でJavaScriptの命令を記述できることです。JavaScriptの記述には多くの手続きを必要としますが、jQueryを利用すると非常に短いコードで済みます。

dl 要素を使って、定義リストで出力する

オプションの設定は以下。

$(function() {
    $(selector).prettyQuote({
        container: { tag: 'dl', className: 'prettyQuote'},
        quoteWrap: { wrap: true, tag: 'dd', className: 'body' },
        header: { display: true, tag: 'dt', className: 'header' },
        footer: { display: true, tag: 'dt', className: 'footer', text: 'uri' }
    });
});

表示されるもの。
(Firebug などで確認してみてください)

引用(いんよう、英語:citation, quotation[1])とは、広義には、他人の著作を自己の作品のなかで紹介する行為、先人の芸術作品やその要素を自己の作品に取り入れること。

リンクの前に「引用元:」とか「via:」とかを追加する

これはプラグインの機能ではないんですが、やりたい人もいるでしょうから書いておきます。
プラグイン自体はデフォルトで使用している、という条件だとこうなります。

オプションの設定は以下。

$(function() {
    $(selector).prettyQuote();
    $(selector).next().prepend('via: ');
});

表示されるもの。

引用(いんよう、英語:citation, quotation[1])とは、広義には、他人の著作を自己の作品のなかで紹介する行為、先人の芸術作品やその要素を自己の作品に取り入れること。

q 要素にいい感じに適用してみる

CSS を上手く指定しましょう。

オプションの設定は以下。

$(function() {
    $(selector).prettyQuote({
        container: { tag: 'span', className: 'prettyQuote'},
        header: { display: false, tag: 'div', className: 'header' },
        footer: { display: true, tag: '', className: 'qAfter', text: 'uri' },
        tooltip: 'title'
    });
});

スタイルシートを以下のように指定。

span.prettyQuote {
    margin: 0 5px;
}

span.prettyQuote q {
    background-color: #ddd;
    quotes: '"' '"';
}

span.prettyQuote q:before {
    content: '"'; /* for webkit */
    content: open-quote;
}

span.prettyQuote q:after {
    content: '"'; /* for webkit */
    content: close-quote;
}

span.prettyQuote cite a {
    display: inline-block;
    margin-left: 5px;
    width: 1em; /* font-size と同じ */
    height: 1.6em; /* line-height と同じ */
    overflow: hidden;
    background: url(link.gif) center center no-repeat;
    text-indent: -9999px;
    vertical-align: bottom;
}

表示されるもの。
(文章は適当です)

引用文のことを考えてみましたが、よく分からないので、とりあえず Wikipedia を確認したところ、広義には、他人の著作を自己の作品のなかで紹介する行為、先人の芸術作品やその要素を自己の作品に取り入れることと書かれていました。
これをもう少し読む進んでいくと……

Contact - 連絡先

バグなどありましたらご連絡ください。
機能の追加とかは気が向いたらします。

まだまだ甘いところがあると思いますので
「ここはこうした方が速くなるよ!」
「もっとスマートにできるよ!」
などのアドバイスも歓迎です。

メールでのご連絡は Gmail へ。アカウントは pnr.matori です。
ブログ記事のコメントでも OK です。記事はこちらからどうぞ。

Change logs - 更新履歴

2010-09-28
version 1.2
処理を開始する前に対象要素が blockquote もしくは q かチェックし、それ以外の場合には処理を行わないように変更。
2010-09-28
version 1.1
Wikipedia などの日本語 URL がアンカーテキストの場合に、表示テキストが長くなりすぎるとの指摘があったため、表示テキストのみURLデコードするように変更。
2010-09-28
version 1.0
ひとまず完成。公開。
2010-09-17
version 0.1
テスト版完成。