是否可以拥有一个带有两个表的维基页面,反映来自两个不同第三方站点的数据?
如果是这样,如何完成它?页面模板会对此有所帮助吗?
答案 0 :(得分:2)
简短的回答是否定的,没有简单的内置方式将外部内容拉入MediaWiki网站。允许第三方注入任意内容将是巨大的安全风险。
很长的答案是任何可能的扩展,无论是现有的扩展还是您自己编写的扩展。 MediaWiki网站有一个完整类别的“Remote content extensions”列表,它们以某种形式执行此类操作,External Data看起来特别有用。您将需要管理员权限来安装其中任何一个,并且您需要信任扩展代码和您提取的数据。
答案 1 :(得分:0)
我已经准确地写了你描述的内容。可能对你有帮助。
# Define a setup function
$wgHooks['ParserFirstCallInit'][] = 'efStackOverflow_Setup';
# Add a hook to initialise the magic word
$wgHooks['LanguageGetMagic'][] = 'efStackOverflow_Magic';
function efStackOverflow_Setup( &$parser ) {
# Set a function hook associating the "example" magic word with our function
$parser->setFunctionHook( 'stag', 'efStackOverflow_Render' );
return true;
}
function efStackOverflow_Magic( &$magicWords, $langCode ) {
# Add the magic word
# The first array element is whether to be case sensitive, in this case (0) it is not case sensitive, 1 would be sensitive
# All remaining elements are synonyms for our parser function
$magicWords['stag'] = array(1, 'stag');
# unless we return true, other parser functions extensions won't get loaded.
return true;
}
function efStackOverflow_Render( $parser, $param1 = '', $param2 = '' ) {
// there was filtering
$modif = 0;
$cache_file_path = "cache/".$param1."_".$param2;
if (file_exists($cache_file_path))
$modif = time() - @filemtime ($cache_file_path);
if (file_exists($cache_file_path) and $modif < 60*60*24) {
return file_get_contents($cache_file_path);
}
$page = file_get_contents("http://www.google.com/rss/".$param1);
$xml = new SimpleXMLElement($page);
foreach ($xml as $key => $value) {
// do some
}
if (!empty($output))
file_put_contents($cache_file_path, $output);
return $output;
}
Mediawiki版本是1.16。