created: 20140502213500000
modified: 20241216111540858
original-modified: 20210406131243532
tags: Features Concepts
title: PermaLinks
ja-title: パーマリンク
type: text/vnd.tiddlywiki

パーマリンクを使用すると、TiddlyWiki内の個々のTiddlerへの直接リンクが可能になります。

! シンプルなパーマリンク

パーマリンク(<<.icon $:/core/images/permalink-button>>)の最も単純な形式は、`#`をともなうベースURLに1つのターゲットTiddlerタイトルを追加したものです:

https://tiddlywiki.com/#HelloThere

必要なら、Tiddlerタイトルにスペースを含めることができます: 

[[https://tiddlywiki.com/#Using TiddlyWiki on Node.js]]

ターゲットTiddlerのタイトルを囲む二重角括弧は不要であることに注意してください。ただし、存在する場合は暗黙的に削除されます。

! ストーリーのパーマリンク

パーマリンクでは、対象のTiddlerと一緒に開くTiddlerのストーリーリストを[[Tiddlerフィルター|Filters]]として指定することもできます: 

[[https://tiddlywiki.com/#TiddlerFields:Tiddlers TiddlerTags TiddlerFields ContentType]]

ターゲットTiddlerがストーリーリストに存在しない場合は、自動的に先頭に挿入されます。つまり、次の2つの例はどちらもストーリーシーケンス`Tiddlers`、`Tags`、`TiddlerFields`内の`Tiddlers`Tiddlerをターゲットにしています: 

[[https://tiddlywiki.com/#Tiddlers:Tags TiddlerFields]]

[[https://tiddlywiki.com/#Tiddlers:Tiddlers Tags TiddlerFields]]

ナビゲーションのターゲットTiddlerを指定せずにストーリーフィルターを指定することもできます: 

<a href="https://tiddlywiki.com/#:[tag[task]]" rel="noopener noreferrer">~https://tiddlywiki.com/#:[tag[task]]</a>

! URLエンコードについて

URLフラグメント内の有効な文字には技術的な制限があります。すべてのTiddlerタイトルに対応できるようにするために、不正な文字は"URL エンコード"と呼ばれるプロセスの対象となり、問題のある文字は数値コードに置き換えられます。たとえば、スペース文字は`%20`に置き換えられます。

ターゲットTiddlerのタイトルとストーリーフィルターは両方ともURLエンコードされている必要があります(区切りのコロンはエンコードされません)。TiddlyWikiは適切にエンコードされたURLを生成しますが、見た目がかなり醜い場合があります。ただし、実際には、ブラウザーは通常、URLフラグメント内の任意の文字を問題なく処理します。したがって、パーマリンクを手動で作成する場合は、URLエンコードを無視することを選択できます。

! パーマリンクの動作

TiddlyWikiのパーマリンクの動作に関する2つの重要な側面は、[[コントロールパネル|$:/ControlPanel]] <<.icon $:/core/images/options-button>>の''設定''タブのオプションで制御できます: 

* 各ナビゲーションでアドレスバーを自動的に更新するかどうか、また更新する場合は、対象のTiddlerだけでなくストーリーシーケンスも含めるかどうか
* アドレスバーの更新がブラウザの履歴に反映されるかどうか。デフォルトは''いいえ''です。 ''はい''に切り替えると、ブラウザの「戻る」ボタンと「進む」ボタンを使用して、Tiddler間のナビゲーションを巻き戻すことができます

パーマリンクを入力または移動すると、常にパーマリンクが処理され、Tiddlerが適宜開閉されることに注意してください。

!! 技術詳細

TiddlyWikiが起動すると、以下の手順に従ってパーマリンクを処理します。パーマリンクが動的に変更される場合(たとえば、ユーザーがアドレスバーを編集したことに応じて変更される場合)、同じ手順が繰り返されます。

# パーマリンクにコロンが含まれている場合は、その前の文字列を''ターゲット''として扱い、その後ろの文字列を''ストーリーフィルター''として扱います
# パーマリンクにコロンが含まれていない場合は、文字列全体を''ターゲット''として扱い、''ストーリーフィルター''を//未指定//としてマークします
# ''ストーリーフィルター''が指定されておらず、起動中の場合、''ターゲット''が指定されている場合は''ストーリーフィルター''を空の文字列に設定し、''ターゲット''が指定されていない場合はデフォルトのTiddlerに設定します
# ''ストーリーフィルター''が指定されておらず、起動中でない場合は、''ストーリーフィルター''を現在のストーリーリストに設定します
# ''ストーリーフィルター''を''ストーリーリスト''として評価します
# ''ターゲット''が指定されていて''ストーリーリスト''にない場合は、一番上に追加します
# ''ターゲット''が指定されている場合はそこに移動し、そうでない場合は''ストーリーリスト''の最初のTiddlerに移動します
