includexプラグイン

Last-modified: Mon, 12 Mar 2018 11:42:00 JST (72d)

概要

ページを取り込むプラグイン include の拡張です。

標準 #include との違い

  1. ページタイトルの表示形式指定可能
  2. ページタイトルにアンカーが付く
  3. 行番号指定機能
  4. 正規表現による全文検索機能(grep)
  5. 正規表現による除外全文検索機能(grep -v)
  6. セクション指定
  7. lsx.inc.php との併用による複数ページの取り込み

使い方

#includex(ページ名[,オプション])

必須

  • ページ名
    • とりこむページ名

オプション

option=bool なオプションは共通して、 option, option=true, option=on でそのオプションが有効になり、option=false, option=off で無効になります。

num=数字

表示件数指定。正数は前からN件目、負数は後ろからN件目の意味。

num=1:10 で先頭1件目から10件目までの意味。num=-10:-1 で後ろ10件目から後ろ1件目までの意味。num=2: で先頭2件目から最後までの意味。 num=5+2 で先頭5件目から、そこから2件先まで(5,6,7)の意味。

filter/except などの絞込みオプションと併用した場合、絞込みされてからの、件数指定になります。

filter=正規表現

各行を正規表現で限定する。Wikiソースに対する grep 的なもの。全文検索。

ヒント: ereg で判定を行います。

except=正規表現

除外全文検索。Wikiソースに対する grep -v 的なもの。

ヒント: ereg で判定を行います。 except=Test|sample → Test または sample を含む行を除く。
ヒント:例えばページの1部だけを取り込んでいるのに #contents によるリストが表示されて邪魔だと思ったときに except=^#contents として消去したりします。

titlestr=name | off | basename | relname | title

ページタイトル(<h1>ページ名</h1>)の表示形式。デフォルトは title。

  1. name|pagename|absolute: include プラグインと同じくページ名を使用する。
  2. off: ページタイトルを表示しない。
  3. basename: ページ名の basename, つまり仮想階層を使用している場合のファイル名に相当する部分。
  4. relname|relative: 現在ページからの相対的ページ名。例:現在ページ PukiWiki かつ include 先が Plugin/Hoge/includex.inc.php → Hoge/includex.inc.php
  5. title: TITLE: 行があればその文字を、なければ name を表示。

備考:TITLE: の取得には contentsx.inc.php のコードを再利用します。インストールしておいてください(なければ常に name になります)。TITLE: とは Pukiwiki Plus! において HTML のタイトルを設定する書式です。本家の場合、default.ini.php の $line_rules で "^(TITLE):(.*)$" => "", と設定し、TITLE: 行を表示しないようにすればよいでしょう。おそらく。

titlelink=bool

ページタイトル(<h1>ページ名</h1>)でリンクを貼るか否か。

ヒント: pukiwiki.ini.php で $fixed_heading_edited を 1 に設定しておくと、ページタイトルの脇に編集リンク用の編集アイコンも表示されます。$fixed_heading_edited は pukiwiki plus におけるパラグラフ編集機能を利用する際の、それぞれの見出しの脇に編集アイコンを表示するか否かの設定です。
section=(contentsxオプション)

取り込むセクションを見出しに対する制限で指定。例えば、section=(num=0:1) で第0セクションと第1セクションの取り込み。

セクション番号の定義

   0 - 先頭から第一見出し直前までの部位
   1 - 第一見出しから第二見出し直前まで
   2 - 以下進む

num 以外でも contentsx のオプションを使用することによって、 取り込むセクションを見出しに対する制限で指定することが出来ます。

   num=数字
   depth=数字
   filter=正規表現
   except=正規表現
   cache=bool

等。上述同名オプションで想像が付くとは思いますが、詳しくは contentsx.inc.php 参照。
firsthead=bool

先頭行が見出しの場合、それも表示するか否か。<h1>ページタイトル</h1> 直後に、見出しがきて外観が損なわれるような場合に firsthead=off として使用。section と併用する場合が多い。
readmore=until | from

   until - #readmore プラグイン(同プラグインパッケージに梱包。特に何もしないプラグイン)が記述されている箇所まで取り込む。ブログ的な使用ができるかもしれない。
   from - #readmore から取り込む

permalink=リンク文字列

include した後にそのページへのリンク、 Permalink を表示する。ブログ的に。

動作例(仕様)

TEST/a というページが以下の内容で存在するとします。

Contents of TOP section
**AA
Contents of AA section
#contentsx
*B 
Contents of B section
***BBB 
Contents of BBB section
**BC 
Contents of BC section
*D
Contents of D section

このページを TEST ページから include するものとします。

下記の表示例はイメージです。リンクを PukiWiki のように [[]] 記法で表現し、h1 タイトルを <h1></h1> で表現し、見出しも PukiWiki のように * で表現することにします。


#includex(TEST/a)
#includex(./a) // 相対階層指定。

PukiWiki の相対階層指定は UNIX とは異なることに注意。TEST + ./a = TEST/a

<h1>[[テストページa>TEST/a]]</h1>
Contents of TOP section
**AA
Contents of AA section
#contentsx
*B 
Contents of B section
***BBB 
Contents of BBB section
**BC 
Contents of BC section
*D
Contents of D section

#includex(TEST/a,num=1:2) // 1行目から2行目抜き出し
<h1>[[テストページa>TEST/a]]</h1>
Contents of TOP section
**AA

#includex(TEST/a,num=1:2,titlestr=name) // h1 タイトルにページ名を使用
<h1>[[Test/a>TEST/a]]</h1>
Contents of TOP section
**AA

#includex(TEST/a,num=1:2,titlestr=off) // h1 タイトルを表示しない
Contents of TOP section
**AA

#includex(TEST/a,num=1:2,titlestr=basename) 
// h1 タイトルにページ名の basename, つまり仮想階層を使用している場合のファイル名に相当する部分。
<h1>[[a>TEST/a]]</h1>
Contents of TOP section
**AA

#includex(TEST/a,num=1:2,titlestr=relname) // h1 タイトルに現在ぺージからの相対パス
<h1>[[a>TEST/a]]</h1>
Contents of TOP section
**AA

#includex(TEST/a,num=1:2,titlestr=title) 
// h1 タイトルに TITLE: があれば使用。なければページ名。デフォルト
<h1>[[テストページa>TEST/a]]</h1>
Contents of TOP section
**AA

#includex(TEST/a,num=1:2,titlestr=title,titlelink=off) // h1 タイトルにリンクを貼らない
<h1>テストページa</h1>
Contents of TOP section
**AA

#includex(TEST/a,num=1:2,permalink=パーマリンク) // ブログ的に permalink を表示 
<h1>[[テストページa>TEST/a]]</h1>
Contents of TOP section
**AA
[[パーマリンク>TEST/a]]

#includex(TEST/a,filter=B) // grep 的抜き出し
<h1>[[テストページa>TEST/a]]</h1>
*B 
Contents of B section
***BBB 
Contents of BBB section
**BC 
Contents of BC section

#includex(TEST/a,except=B) // grep -v 的抜き出し
<h1>[[テストページa>TEST/a]]</h1>
Contents of TOP section
**AA
Contents of AA section
#contentsx
*D
Contents of D section

#includex(TEST/a,section=(num=0:1)) // セクション抜き出し

0番セクションがページ先頭から第1見出しまで。1番セクションが第1見出しから第2見出しまで。

<h1>[[テストページa>TEST/a]]</h1>
Contents of TOP section
**AA
[[パーマリンク>TEST/a]]

#includex(TEST/a,section=(depth=1)) // 見出しの深さでセクション指定
<h1>[[テストページa>TEST/a]]</h1>
*B 
Contents of B section
*D
Contents of D section

#includex(TEST/a,section=(depth=1),firsthead=off) // 先頭行が見出しの場合削る
<h1>[[テストページa>TEST/a]]</h1>
Contents of B section
*D
Contents of D section

プラグインについて

このプラグインsonots様のincludex.inc.phpを使用しています。