メニューバーの中でInvalid XHTML対策済みプラグインを使用するとInvalidになる

まとめ・修正

WikiテキストをXHTMLに変換する処理について:

修正:

メッセージ

Invalid XHTML 1.1になるプラグインについては、PukiWikiではプラグイン内で下記のように処理することになっている。

global $pkwk_dtd;

(中略)

if (! isset($pkwk_dtd) || $pkwk_dtd == PKWK_DTD_XHTML_1_1)
		$pkwk_dtd = PKWK_DTD_XHTML_1_0_TRANSITIONAL;

ところが、このようなプラグインをメニューバー内で使用した場合、標準のスキンでは、メニューバーが処理される前に$pkwk_dtdの内容を確定してheaderとして出力されてしまっているため、XHTML 1.0 Transitionalにはならず、Invalid XHTML 1.1となってしまう。

対策としては、スキンの中で、

if (isset($pkwk_dtd)) {
	$meta_content_type = pkwk_output_dtd($pkwk_dtd);
} else {
	$meta_content_type = pkwk_output_dtd();
}
?>
<head>
 <?php echo $meta_content_type ?>

このように$pkwk_dtdの内容を出力している部分より前の行で

if (arg_check('read') && exist_plugin_convert('menu')) {
	$menuhtml = do_plugin_convert('menu');
}

として、メニューバーの内容をとりあえず実行して変数に取り込んでおいて、メニューバーの実際の出力部分を下記のようにすれば、とりあえずはInvalidにならずに済む。

<?php if (isset($menuhtml)) { ?>
<div id="menubar">
 <?php echo $menuhtml ?>
</div>
<?php } ?>

泥縄式ではあるが、とりあえずの対策としては、これがいちばん簡単。

根本的な修正をやろうとすると、かなり大がかりになりそうなので・・・




コメント: デザイン(1)



コメント: デザイン(2)



サブページを全て同じタイミングでconvertした方が都合の良いケースに関する話題


メタコメント: 他人のコメントを含めた話題の整理



*1 Content-Script-Type
*2 話題の邪魔をしない、そこそこユニークな、色々考えると半角アルファベットと数字を使った方がいいだろう

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

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 1.345 sec.

OSDN