429
回編集
細 (→2011年12月14日(水)) |
|||
66行目: | 66行目: | ||
</p> | </p> | ||
</pre> | </pre> | ||
= 2011年12月15日(木)= | |||
=== ページ毎に meta タグに入れるキーワードを設定したい === | |||
* 前日に作った拡張 AddKeywordsMetaTag に [http://www.mediawiki.org/wiki/Extension:MetaKeywordsTag この機能] をマージ | |||
<pre> | |||
<?php | |||
$wgExtensionCredits['other'][] = array( | |||
'name' => 'AddKeywordsMetaTag', | |||
'status' => 'Experimental', | |||
'author' => 'Yoshihiro OKUMURA', | |||
'version' => '2.0', | |||
'url' => 'http://www.neuroinf.jp/', | |||
'description' => 'Add keywords into meta tag', | |||
); | |||
$wgHooks['OutputPageBeforeHTML'][] = 'wfAddKeywordsMetaTag'; | |||
$wgExtensionFunctions[] = 'wfAddKeywordsMetaTagParserHooks'; | |||
function wfAddKeywordsMetaTagParserHooks() { | |||
global $wgParser, $wgMessageCache; | |||
$wgParser->setHook( 'keywords', 'wfAddKeywordsMetaTagRender' ); | |||
$wgMessageCache->addMessage( | |||
'metakeywordstag-missing-content', | |||
'Error: <keywords> tag must contain a "content" attribute.' | |||
); | |||
} | |||
function wfAddKeywordsMetaTagRender($text, $params = array(), $parser) { | |||
// Short-circuit with error message if content is not specified. | |||
if (!isset($params['content'])) { | |||
return '<div class="errorbox">'. | |||
wfMsgForContent('metakeywordstag-missing-content'). | |||
'</div>'; | |||
} | |||
// Return encoded content | |||
return '<!-- META_KEYWORDS '.base64_encode($params['content']).' -->'; | |||
} | |||
function wfAddKeywordsMetaTag(&$out, &$text) { | |||
global $wgTitle, $wgParser, $wgRequest, $action; | |||
if ($action !== 'edit' && | |||
$action !== 'history' && | |||
$action !== 'delete' && | |||
$action !== 'watch') { | |||
// Mediawiki:Keywords | |||
$title = Title::MakeTitle(NS_MEDIAWIKI, 'Keywords'); | |||
$article = new Article($title); | |||
$keywords = array_map('trim', explode(',', $article->getRawText())); | |||
foreach ($keywords as $keyword) | |||
if (!empty($keyword)) | |||
$out->addKeyword($keyword); | |||
$namespaces = array(NS_MAIN, NS_USER, NS_PROJECT, NS_MEDIAWIKI); | |||
foreach ($namespaces as $namespace) { | |||
// Mediawiki::Keywords-$namespace | |||
if ($wgTitle->getNamespace() === $namespace) { | |||
$page = sprintf('Keywords-%u', $namespace); | |||
$title = Title::MakeTitle(NS_MEDIAWIKI, $page); | |||
$article = new Article($title); | |||
$keywords = array_map('trim', explode(',', $article->getRawText())); | |||
foreach ($keywords as $keyword) | |||
if (!empty($keyword)) | |||
$out->addKeyword($keyword); | |||
} | |||
} | |||
} | |||
// part of MetaKeywordsTag.php | |||
if (preg_match_all('/<!-- META_KEYWORDS ([0-9a-zA-Z\\+\\/]+=*) -->/m', $text, $matches)) { | |||
$data = $matches[1]; | |||
// Merge keyword data into OutputPage as meta tags | |||
foreach ($data aS $item) { | |||
$content = @base64_decode($item); | |||
$keywords = array_map('trim', explode(',', $content)); | |||
foreach ($keywords as $keyword) | |||
if (!empty($keyword)) | |||
$out->addKeyword($keyword); | |||
} | |||
} | |||
return true; | |||
} | |||
</pre> | |||
= 2011年12月14日(水)= | = 2011年12月14日(水)= | ||
=== FCKEditor を使うと図のキャプションが消える.=== | === FCKEditor を使うと図のキャプションが消える.=== |