#author("2021-02-08T23:47:45+09:00","","")
**[[質問箱/5398]] [#me46fa8c]
|RIGHT:70|LEFT:410|c
|~カテゴリ|その他|
|~サマリ|ページ内で使われているプラグインを確認する方法|
|~バージョン|1.5.3|
|~投稿者|[[m0370]]|
|~状態|質問|
|~投稿日|&new{2021-02-07 (日) 17:20:32};|
***質問 [#fcf62dd6]
Pukiwiki 1.5.3およびPHP 7.4を活用させていただいております。

Pukiwikiで本文中にインラインで特定のプラグインを使っているかどうかを確認する方法はありませんでしょうか。

----

**具体的にやりたいこと [#v2909512]

検索エンジン対策として、pukiwiki.skin.phpを改造して<head>内に本文の始めの100字をdescriptionに表示するようにしていました。
一方で本文のはじめの文章以外をdescriptionに記載したいページでは、description.inc.phpを使って<head>内の $head_tag にdescriptionを埋め込んで表示することができますが、こうすると #description を使っているページでは<head>内にdescriptionがダブってしまします。

そこで、pukiwiki.skin.php内でPHPのif構文を用いて当該ページ内で #description が使われていれば最初の100字をdescriptionとして表示する一行を非表示にしたいと考えました。しかし、当該ページ内に #description が存在するかどうかをPHPで判定する方法がわかりません。

あるページで #description が使用されていることを判定するにはどのような方法がよいでしょうか。

***回答 [#s6c506bb]
- タグの重複を避けるなら、$head_tag に当該タグがすでに含まれていないかを判定してはいかがでしょうか。 -- [[?]] &new{2021-02-07 (日) 21:19:47};
- ありがとうございます。ひとまず<head>内に <?php if( strpos($head_tag,'<meta http-equiv="description"') === false ) { /* descriptionプラグインを使用しないページのみ出力 */ ?><meta name="description" content="<?php echo $str = str_replace(array("\r\n", "\n"), '', mb_substr(strip_htmltag($body, $all = TRUE), 1, 100, "UTF-8")); ?>" /><?php } /* descriptionプラグインを使用しないページのみ出力おわり */ ?> を置いてみて、なんとか解決しました。 -- [[m0370]] &new{2021-02-08 (月) 12:30:15};
- 今回はこれでなんとか運用できそうですが、そもそもこのdescriptionに限らず、#body 内で特定のインラインプラグインが使われているかどうかを判定する方法というのはないのでしょうか? -- [[m0370]] &new{2021-02-08 (月) 12:31:17};
- 変換前ソースを/&(.*?);/のような正規表現でマッチさせて、関数plugin_(マッチさせた文字列)_inline()が存在するかどうかで調べるのはどうですか? -- [[-]] &new{2021-02-08 (月) 17:07:04};
- descriptionプラグインで書いた内容をスキンの任意の場所で呼び出せるように、description.inc.phpに少し手を入れてみました。
https ://oncologynote.com/?947836c18a -- [[m0370]] &new{2021-02-08 (月) 23:46:35};

#comment


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.273 sec.

OSDN