如何将MediaWiki页面内容嵌入我的网站?

时间:2013-07-31 07:21:51

标签: html mediawiki mediawiki-api

我们的公司维基是Mediawiki。将 iframe 放入我的网站以便在wiki上引用一些文章我没有问题。

但我自己的网站有很多小部件和自己的风格。我不想包含Mediawiki导航/搜索/登录小部件,徽标图像。

是否可以以及如何在没有小部件的情况下获取Mediawiki页面内容(仅限文章正文)?

2 个答案:

答案 0 :(得分:5)

是的,确实如此。您可能希望使用action=render url参数,例如:http://en.wikipedia.org/w/index.php?action=render&title=Main_Page。请注意,wiki中的样式表不包含在内,因此您需要将相关规则复制到站点的css文件中。另请参阅this

答案 1 :(得分:1)

感谢waldir的回答!

在提出问题后,我会进行自己的研究并以代码结束:

window.onload = function() {
    httpRequest = new XMLHttpRequest();
    httpRequest.onreadystatechange = function() {
        if (httpRequest.readyState !== 4) {
            console.log("Not ready, code: %o", httpRequest.readyState);
            return;
        }
        if (httpRequest.status !== 200) {
            console.log("Server error: %o", httpRequest.status);
            return;
        }
        var json = JSON.parse(httpRequest.responseText);
        console.log("json: %o", json);
        var wiki = json.query.pages["1"].revisions[0]["*"];
        console.log("wiki: %o", wiki);
        var html = InstaView.convert(wiki);
        console.log("html: %o", html);
        document.getElementById('area').innerHTML = html;
    };
    var url = 'https://wiki.evil-company.com/api.php?action=query&prop=revisions&format=json&titles=Main_page&rvprop=timestamp|user|comment|content';
    httpRequest.open('GET', url, true);
    httpRequest.send(null);
}

在这里,我使用https://github.com/cscott/instaview/blob/master/main.js项目进行了增强http://en.wikipedia.org/wiki/User:Pilaf,将 json 输出转换为浏览器端的 HTML

此代码的原因是因为我们的wiki已旧或配置错误且 action = render 不可用。但我陷入了跨域脚本问题,所以我认为 iframe action = render 是更好的解决方案。

另见How do you grab an article including the links in a usable format?

使用 action = parse http://en.wikipedia.org/w/api.php?action=parse&title=Linux)的另一个建议会导致警告:

You are looking at the HTML representation of the XML format.
HTML is good for debugging, but is unsuitable for application use.
Specify the format parameter to change the output format.

<强>更新

完美的解决方案只需将查询 action = render 附加到任何有效的Wiki网址,例如:

http://en.wikipedia.org/wiki/Linux?action=render