**[[質問箱4/439]] [#qa03e1da]
#author("2018-03-11T20:38:46+09:00;2010-09-17T22:28:49+09:00","","")
**[[質問箱/4439]] [#qa03e1da]
|RIGHT:70|LEFT:410|c
|~カテゴリ||
|~サマリ|カテゴリ(簡易タグ)を簡単なプラグインでちょっと楽にしたい|
|~バージョン|1.4.7|
|~投稿者|[[tomas3]]|
|~状態|質問|
|~投稿日|&new{2009-03-16 (月) 01:27:35};|
***質問 [#u4c4ddc5]
[[Use PukiWiki/カテゴリー]]に記載してある内容を便利に使わせていただいているのですが、リンクするカテゴリの数が多いため、「Category/カテゴリ名」を何度も書くときに、「Category/」の部分だけでもプラグインで自動化したいと思っています。


ブロックプラグイン # category(A,B,C)を作成し、かぎ括弧2つのwiki記法のリンクの中に、「A>Category/A」「B>Category/B」「C>Category/C」として、convert_htmlに渡しました。表示としては、ちゃんとリンクになるのですが、# relatedプラグインで表示されません。

make_linkやmake_pagelinkなども試してみましたが(もともとは、convert_htmlではpタグで囲まれてしまうのを回避するためでしたが)、これもダメでした。

このようなことはできないのでしょうか。本文中に2重のかぎ括弧がある場合はOKなので、プラグインにしてしまったためダメなのかと思っています。

不可能であれば、sonots'さんのtagプラグインを検討しますが、バージョン管理が大変になるのでプラグインのみで済ませたく、キャッシュ処理の改造は避けたいと思っています。

なにかアドバイスをいただければ幸いです。よろしくお願いします。



***回答 [#ocfb870e]
- 編集画面の下に新しくこのコメント欄のような小さな記入欄を作成し、そこはカテゴリ専用のフォームとして
 abc,def,ghi
と記入した場合、自動で本文の一番下、もしくはスキンで指定した場所、さらにもしくは#categoryと記入した場所に
 [[abc>Category/abc]] | [[def>Category/def]] | [[ghi>Category/ghi]]
という形(デザインは自分でアレンジ可能)で挿入できると楽そうですね。 --  &new{2009-03-16 (月) 01:49:29};
- おっしゃる通りです。やりたいことは、その通りです。実は初めは、convert_htmlした内容を、グローバル変数に溜めておいて、スキン側で展開する方式にしようとしました($bodyと似たような感じです)。このようにすると、カテゴリ表示の位置を変えたくなっても、本文を変えずに済むと思ったからです。しかし、これも# relatedプラグインが効きません。これは当然のことと感じて、上質問内容をトライしていたところでした。 -- [[tomas3]] &new{2009-03-16 (月) 09:20:49};
- 本文以外に情報が持てると、いろいろできるようになるな、とは感じています。大改造は今の私のスキルではできないので、だましだましやっております。 -- [[tomas3]] &new{2009-03-16 (月) 09:21:25};
-- 更新日時の他に、[[DOBONさんの作成日時の記録>http://wiki.dobon.net/index.php?PukiWiki%2FTips%2F%A5%DA%A1%BC%A5%B8%A4%CE%BA%EE%C0%AE%C6%FC%BB%FE%A1%A2%CA%D4%BD%B8%C6%FC%BB%FE%A4%F2%C9%BD%BC%A8%A4%B9%A4%EB]]など。この例は、本文中に埋め込んでいるようですが(ハードルが高くて理解しきれず・・・) -- [[tomas3]] &new{2009-03-16 (月) 09:22:44};
- related プラグインのキャッシュ(本当は他でも使ってますけど)の更新は、links_update 関数(通常時)かlinks_init 関数(links プラグイン利用時)から行っていますよ。そこからlinks_get_objects 関数で各ページの本文を呼び出して、ページへのリンクを抽出しています。 --  &new{2009-03-16 (月) 17:51:16};
-- なのでそこから考えられる1つの方法は、links_get_objects 関数で呼び出した本文中の
 #category(A,B,C)
を
 [[Category/A]][[Category/B]][[Category/C]]
に先に置き換えてしまって、カテゴリへのリンクが存在すると認識させてしまうという方法です。 --  &new{2009-03-16 (月) 17:51:16};
- アイデアありがとうございます。情けないですが、すぐに理解するには力不足の状態です。該当の関数を教えて頂きましたので、ソースコードを追ってみます。 -- [[tomas3]] &new{2009-03-17 (火) 08:37:19};
- $str_rulesを使えば==A==と記述して保存すると[ [Catergory/A] ]に置換される、というような事ができると思いますよ。 --  &new{2009-03-19 (木) 02:30:17};
-- ご回答ありがとうございます。置換機能ですが、本文が置換されてしまうのは、Categoryの部分を変えたくなってしまったときなどのことを考えると、避けたいと思っています。ひとつ、「動的な」変換機構をかましておかないと、全ページ修正という状況になりそうで。わがままですみません。 -- [[tomas3]] &new{2009-03-23 (月) 10:37:47};
-- 置換機能について、試してみましたが、 -- [[tomas3]] &new{2009-03-23 (月) 10:41:23};
--- $ str_rulesは、上記していただいたように、本文を保存時に置換 --  &new{2009-03-23 (月) 10:41:50};
--- $ datetime_rulesは閲覧時に実行され、本文は置換されない。(ルールの中にmake_pagelinkを埋め込めばリンクが作れそうだがいまいちうまくいかず)。リンクができても、# related は効かない --  &new{2009-03-23 (月) 10:52:09};
--- Sonots'さんの[[convwiki_rules>sonots:Hack/convwiki_rules]]も置換はされないが、# relatedは効かない --  &new{2009-03-23 (月) 10:53:25};
- [[dev:PukiWiki/1.4/ちょっと便利に/タグ入力支援フォーム]] --  &new{2009-09-06 (日) 22:36:31};

- [[質問箱4/440]] --  &new{2010-01-29 (金) 06:19:45};
- [[質問箱/4440]] --  &new{2010-01-29 (金) 06:19:45};
- [[編集支援]] --  &new{2010-01-29 (金) 06:19:45};
- [[欲しいプラグイン/249]] --  &new{2010-09-17 (金) 22:28:48};

#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.033 sec.

SourceForge