質問箱/3342

カテゴリ
サマリページ名置換(&page;)で(&page;)を再利用したい
バージョン1.4
投稿者sano:
状態完了
投稿日2006-03-01 (水) 02:12:15

質問

ページ名置換(&page;)を使うと、変換は1度しか有効にならないようで、(&page;)が文字列に置き換わってしまい、ページ名のリネーム時や雛形複製で利用出来ません。ページ名を何度もコピー&ペーストせずに、ページ内に自動的に読み込む方法をお教えください。 ※質問箱/286 に類似記述 (&page;)

(やりたいこと)登録する氏名を元にページを作成し、ページ内で何度も同じページ名=名前を使う。入力場所などは定型化している。InterWikiNameを使って検索設定等にもページ名の挿入機能を使いたい。


■補足:たとえば、下記のようにページ名と同じ用語「上原」について、ページ内で複数の検索サイト△社や□社で検索設定を行う場合などに使いたいということです。説明不足で申し訳ございません。※質問箱/286 にあった、fpage.inc.phpやpage.inc.phpなどをダウンロードして使ってみたのですが、うまくいきませんでした。

ファイル名 「上原」 ←雛形としても使用する

以上よろしくお願いします。


■環境 FreeBSD+Apache さくらインターネット Pukiwiki1.4

回答

  • 「InterwikiNameを使って~」の意味がよくわかりませんが、とりあえず下のようなプラグインで動的な置換は可能です。 -- 2006-03-01 (水) 12:55:52
    <?
    function plugin_pagename_inline()
    {
    	global $vars;
    	return htmlspecialchars($vars['page']);
    }
    ?>
  • 早速のご返事有難うございます。上記については、プラグイン名は任意のphpファイルで、ページ内には(&page;)の記述で良いのでしょうか? プラグイン名を「page1.inc.php」として試してみました。しかし、そのまま(&page;)だと、変換後に文字列に置き換わるようで、機能的に変わりありませんでした。違う名前が良いのでしょうか?-- 佐野? 2006-03-01 (水) 14:26:36
  • 任意ではありません。pagename.inc.phpという名前でpluginディレクトリにEUCで保存し、使用時は「&filename;」と記述してください。 -- 2006-03-01 (水) 15:14:54
  • 「&filename;」 ではなく。「&pagename;」のようですが、無事に機能しました。どうも助かりました!大変有難うございます。感謝!! -- 佐野? 2006-03-01 (水) 15:24:28
  • 上記について一部機能の確認不足でした。表示はうまく変換されているのですが、InterWikiNameの場合には、そのまま&pagename;の値で検索エンジンに渡るようです。この場合の、うまい対処法などありますでしょうか?いろいろ聞くだけで申し訳有りませんが、よろしくお願いします。 -- 佐野? 2006-03-01 (水) 16:06:06
  • 本体の改造かプラグインの自作が必要になると思います。 -- 2006-03-02 (木) 00:13:19
  • 分かりました。Xoopsのサイトで似たようなもの(Pukiwiki-mod?)を見かけたので、そちらで調べてみます。いろいろお手数をかけました。どうも有難うございました。 -- 佐野? 2006-03-02 (木) 00:29:13
  • あー。遅かったですかね。設定だけでいけるんじゃないかと思います。ちょっと個人的に作ってたPukiWiki機能マニュアルからの抜粋なんで、怪しげな文章ですが御容赦。例は&now;で書かれていますが、&page;でもいけると思います。 -- にぶんのに 2006-03-02 (木) 00:33:35

    ユーザー定義ルールは「ページの更新」を行った時に変換後の値に置き換わってしまいます。 そのため、テンプレートとして利用しようとしても、 変換後の値がコピーされるだけで意図した変換結果にはなりません。
    管理者はユーザー定義ルールに一工夫して、この問題を回避する事ができます。 ユーザー定義ルールは上から順番に適用され、再帰的には適用されませんので、例えば、

    $str_rules = array(
    	'&now;' 	=> format_date(UTIME),
    	'&date;'	=> get_date($date_format),
    	'&time;'	=> get_date($time_format),
    	'&t;'   	=> "\t",
    	'&_ampersand;' => '&',
    );

    のように&_ampersand;を&に変換するユーザー定義ルールを&now;のルールより後に追加し、

    &_ampersand;now;

    として「ページの更新」をすると、

    &now;

    に書き換わります。(注:再度このページを編集すると、日時に書き換わってしまうので注意が必要です)
    テンプレートとしてコピーされる時は&now;の状態でコピーされるため、コピーされた日時に置き換わります。

  • コメントがバッティングしてしまいました。「にぶんのに」さん、上記どうやればよいのでしょうか?知識&技術力が足りなくて、分かりませんでした。雛形の解決策としては、「&pagename;」のままで良い物はそのままにして、検索などに使う場所では「&pagename■;」などといった文字を入れて、その都度はずすことにしました。←かなりアナログですが、これでも以前より時間短縮に役立っています。 ※ちなみにこんなサイトを作ろうとしています。よろしければごらんください。CSSなどを少し凝って作っています。(http://e-saino.jp/idol/)-- 佐野? 2006-03-02 (木) 00:37:24


  • いろいろ解決法が無いか、探していたところ「テンプレート内に置換文字設定(dev:BugTrack/299)」に似たような質問の記事を見つけました。同じようなことを考えている人は、やはりいるもんです。質問する時点では、単語検索の文字入力の違いで見つからなかったようです。また、自作プラグイン/forinter.inc.php というのがあるのを見つけました。ブロック型しか適用が出来ないというのが少し残念ですが、これを使うとページ名をInterWikiに渡せるようです。 どうも、回答して下さった方々、ご協力有難うございました。
    • 佐野? 2006-03-03 (金) 22:15:42
  • 結局ご自身で解決されたようですが、2点教えて下さい。結局佐野さんはどの方法を用いたのでしょうか?あと&_ampersand;を使う方法は何か問題があったのでしょうか? -- にぶんのに 2006-03-04 (土) 00:45:39
  • 上にある「&pagename;」で解決しました。ページのファイル名をそのまま表題にする際やそれをひな形にしてファイルを増やす場合に使用しています。(ですから何度でも使えるものが欲しかったのです) -- 佐野? 2007-07-01 (日) 14:29:45


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-10-17 (水) 03:04:13
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u2. HTML convert time: 0.323 sec.

OSDN