“FAQ:MediaWiki”的版本间差异
(→示例) |
(→示例) |
||
第241行: | 第241行: | ||
{| class="wikitable mw-collapsible mw-collapsed" style="width:100%;" | {| class="wikitable mw-collapsible mw-collapsed" style="width:100%;" | ||
|- | |- | ||
! style="width:10%;" | | ! style="width:10%;" | | ||
! style="width:45%;" | 代码 | ! style="width:45%;" | 代码 | ||
! style="width:45%;" | 效果 | ! style="width:45%;" | 效果 |
2021年12月19日 (日) 22:36的版本
无法生成avg缩略图
如果要使用第三方的converter,参见Image thumbnailing页面
- 描述:
上传.svg
文件过后,页面中提示“生成缩略图出错:无法创建临时缩略图文件”,在“特殊页面:文件列表”中查看文件时:
Warning: symlink() has been disabled for security reasons in /www/wwwroot/wiki.eijux.com/includes/media/SvgHandler.php on line 280
。
- 处理:
默认安装的PHP一些函数是没有默认开启的。
我们需要的函数是symlink()
,则用在PHP的禁用函数中删除该函数即可。
- 描述:
生成缩略图处提示:sh: convert: command not found
,PHP错误信息为Warning: is_executable(): open_basedir restriction in effect. File(/bin/bash) is not within the allowed path(s): (/www/wwwroot/wiki.eijux.com/:/tmp/) in /www/wwwroot/wiki.eijux.com/includes/shell/Command.php on line 311
。
- 处理:
先考虑是PHP配置的问题,
PHP错误'''require(): open_basedir restriction in effect”''',即访问脚本不在'''<code>open_basedir</code>'''的限定目录里面,'''<code>open_basedir</code>'''的作用是将php所能打开的文件限制在指定的目录或文件。<br/>
修改PHP配置文件PHP.ini
的open_basedir
之后错误依旧,而后一直都盯着open_basedir
打转。兜兜转转许久才注意到sh: convert: command not found
的提示,想到可能没有配置Svg Converter,从而进一步发现MediaWiki没有默认安装Converter。最后在| 官网手册SVG节了解到支持信息,相关的Converter("ImageMagick", "ImagickExt", "sodipodi", "inkscape", "batik", "rsvg", and "imgserv")均需单独安装。相较之下,选用了| NativeSvgHandler扩展(将SVG文件直接发送至客户端以进行客户端渲染)。步骤如下:
- 下载文件,并将其放置在extensions/文件夹中的NativeSvgHandler目录内。(注意修改所有者及读写权限)
- 将下列代码放置在您的LocalSettings.php的底部:'
wfLoadExtension( 'NativeSvgHandler' );
' - 导航至Special:Version,以验证扩展已成功安装。
再于网页刷新,svg缩略图显示正常。
- 如果要使用第三方的converter,参见[https://www.mediawiki.org/wiki/Manual:Installing_third-party_tools#Image_thumbnailing Image thumbnailing页面]
左侧导航栏设置
MediaWiki的左侧导航栏,在搜索栏中搜索“mediawiki:Sidebar
”,
修改左侧导航栏如下:
* navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * 标题 ** 链接 |名称 ** 链接 |名称 ** 链接 |名称
- Note:
- “*”后为标题,可以是MediaWiki命名空间的页面(如navigation,即“MediaWiki:Navigation”)、文本内容,不能为http链接或MediaWiki格式链接。(其后没有“**”内容则该标题不显示)
- “**”后为导航链接,可以是MediaWiki命名空间的页面(如mainpage,即“MediaWiki:Mainpage”)、http链接,不能为MediaWiki格式链接。
- 默认侧边栏只有两级(标题、链接|名称),若要实现多级链接、树形链接,需要需要修改MediaWiki的相关代码,或用Extension实现。
关于导航栏的SEARCH、TOOLBOX、LANGUAGES
我想要在左侧导航栏通过类似于模板的方式,来自定义导航页并添加到mediawiki:Sidebar中,类似于其中的TOOLBOX(SEARCH、LANGUAGES)导航栏,* TOOLBOX
,就可以变成:
工具 链入页面 相关更改 上传文件 特殊页面 页面信息
起初,我以为是需要在MediaWiki命名空间下安装Sidebar的规则编写文件就可以,但尝试一番以失败告终。
然后,我考虑是不是这些内容和skin有关,并在skins\Vector\includes\VectorTemplate.php
中看到了线索:
private function buildSidebar() : array {
$skin = $this->getSkin();
$portals = $skin->buildSidebar();
$props = [];
$languages = null;
// Render portals
foreach ( $portals as $name => $content ) {
if ( $content === false ) {
continue;
}
// Numeric strings gets an integer when set as key, cast back - T73639
$name = (string)$name;
switch ( $name ) {
case 'SEARCH':
break;
case 'TOOLBOX':
$portal = $this->getMenuData(
'tb', $content, self::MENU_TYPE_PORTAL
);
// Run deprecated hook.
// Use SidebarBeforeOutput instead.
ob_start();
Hooks::run( 'VectorAfterToolbox', [], '1.35' );
$props[] = $portal + [
'html-hook-vector-after-toolbox' => ob_get_clean(),
];
break;
case 'LANGUAGES':
$portal = $this->getMenuData(
'lang',
$content,
self::MENU_TYPE_PORTAL
);
// The language portal will be added provided either
// languages exist or there is a value in html-after-portal
// for example to show the add language wikidata link (T252800)
if ( count( $content ) || $portal['html-after-portal'] ) {
$languages = $portal;
}
break;
default:
// Historically some portals have been defined using HTML rather than arrays.
// Let's move away from that to a uniform definition.
if ( !is_array( $content ) ) {
$html = $content;
$content = [];
wfDeprecated(
"`content` field in portal $name must be array."
. "Previously it could be a string but this is no longer supported.",
'1.35.0'
);
} else {
$html = false;
}
$portal = $this->getMenuData(
$name, $content, self::MENU_TYPE_PORTAL
);
if ( $html ) {
$portal['html-items'] .= $html;
}
$props[] = $portal;
break;
}
}
$firstPortal = $props[0] ?? null;
if ( $firstPortal ) {
$firstPortal[ 'class' ] .= ' portal-first';
}
return [
'has-logo' => $this->isLegacy,
'html-logo-attributes' => Xml::expandAttributes(
Linker::tooltipAndAccesskeyAttribs( 'p-logo' ) + [
'class' => 'mw-wiki-logo',
'href' => Skin::makeMainPageUrl(),
]
),
'array-portals-rest' => array_slice( $props, 1 ),
'data-portals-first' => $firstPortal,
'data-portals-languages' => $languages,
];
}
不懂PHP粗略看了下,自定义导航名称的话当前函数内并没有Hooks::run( 'VectorAfterToolbox', [], '1.35' );
类似的代码会执行,不知道函数返回之后的流程,就此搁置,以后再看吧。
【2020/09/09 00:40:57】
“open_basedir restriction in effect”
- 错误:
Warning: is_executable(): open_basedir restriction in effect. File(/bin/bash) is not within the allowed path(s): (/www/wwwroot/wiki.eijux.com/:/tmp/) in /www/wwwroot/wiki.eijux.com/includes/shell/Command.php on line 311
。
分析:出现此类问题一般为open_basedir的问题,即访问的文件不在open_basedir
的限定目录里面(open_basedir
的作用是将php所能打开的文件限制在指定的目录或文件,防止跨目录、跨站的访问)。
- 处理:
修改php配置
查阅PHP配置文件php.ini
搜索open_basedir
,添加配置如下:
; open_basedir, if set, limits all file operations to the defined directory ; and below. This directive makes most sense if used in a per-directory ; or per-virtualhost web server configuration file. ; Note: disables the realpath cache ; http://php.net/open-basedir ; open_basedir = open_basedir = /www/wwwroot/wiki.eijux.com/:/tmp/
结果还是搞不定!
BTPanel防跨站攻击
上网搜索一番才发现,BTPanel中站点设置的“网站目录”中有“防跨站攻击(open_basedir)”的选项,取消勾选之后,重启PHP,就不再有这错误了。
(该选项的配置文件为:“/www/server/panel/vhost/openlitespeed/detail/wiki.eijux.com.conf”),取消勾选即注释了代码:
phpIniOverride { #php_admin_value open_basedir "/tmp/:/www/wwwroot/wiki.eijux.com/" }
- 注意:
注意用open_basedir
指定的限制是路径前缀,而非目录名。所以如果要将访问限制在仅为指定的目录,应用斜线结束路径名。
如:若"open_basedir = /dir/user", 那么目录 "/dir/user" 和 "/dir/user1"都是可以访问的。
设置open_basedir
对此有效。之前解析.svg
、使用syntaxhighlight
遇到此问题时,还有确实依赖的库、服务的问题需要解决,此备忘。
目录控制
当文章中含有3个以上标题时,mediawiki将自动在第一个标题之前生成目录(这是默认的设置)。
- 如果需要隐去目录,可以在文章中加入“
__NOTOC__
”标记; - 如果需要强制显示目录而不管标题数量,可以加入“
__TOC__
”标记; - 这两个wiki标记不限制出现位置,但一般出现在文章第一个标题之前。
关于文章标题
不要使用“.php”之类的后缀作为文章标题!
不要使用“.php”之类的后缀作为文章标题!
不要使用“.php”之类的后缀作为文章标题!
如果,一不小心使用了特殊后缀作为标题,并已经提交了,但是又不能显示页面(nginx404好像)。如何删除?
在其他文章的删除页面,将url中的文章标题替换为要删除的标题,就能跳转到该文章的删除页面。
(移动页面是特殊页面,其url末尾是文章标题,即最后也是“.php”,也不能正常显示)
如何在输入框自定义标签
- 参见:“Extension:Gadgets”
【2021/05/16 01:01:52 已安装扩展“CharInsert”,系统安装时已有“Gadgets”】
折叠显示
参考: https://zh.wikipedia.org/wiki/Help:%E6%91%BA%E7%96%8A%E9%A1%AF%E7%A4%BA#%E6%96%B0%E6%91%BA%E7%96%8A%E6%95%88%E6%9E%9C 在当前使用的 MediaWiki 版本中: 1、上述页面中使用“NavFrame”、“collapsible”、“collapsed”等标签不再有效; 2、上述页面中使用“mw-collapsible”、“mw-collapsed”、“mw-collapsible-content”、“mw-customtoggle-<自定义名字>”等标签可用。(“新折叠效果”一节) 折叠效果可以用在:'''<div>、<table>、<ul>、<ol>'''等标签(或这些标签的嵌套使用)中,通过“class”属性来指定。
标签说明:
- “mw-collapsible”:表示元素可折叠;
- “mw-collapsed”:表示元素默认折叠;
- “mw-collapsible-content”:用于指定折叠部分;
- (须选择前两个元素中任意一个配合使用)
- 示例:
<div class="darken mw-collapsible mw-collapsed"> 这里的文字不会被折叠 <div class="mw-collapsible-content">折叠文字 Four score and seven years ago our forefathers brought forth on this continent</div> </div>
- “mw-customtoggle-<自定义名字>”:用于设置自定义折叠按钮;
- (须选择前两个元素中任意一个配合使用)
- 示例:
<span class="darken mw-customtoggle-huiji">折叠按钮A</span> <div class="darken mw-collapsible mw-collapsed" id="mw-customcollapsible-huiji">折叠的内容</div> <span class="darken mw-customtoggle-huiji">折叠按钮B</span>
示例
代码 | 效果 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
mw-collapsible
mw-collapsed |
“data-collapsetext”、“data-expandtext”用于设置折叠展开的文字:
<div class="mw-collapsible" data-collapsetext="点此隐藏" data-expandtext="点此开启">
Lorem ipsum
</div>
|
Lorem ipsum | ||||||||
默认折叠:
<div class="mw-collapsible mw-collapsed">
Lorem ipsum
</div>
|
Lorem ipsum | |||||||||
折叠嵌套:
<div class="mw-collapsible mw-collapsed">
第一个折叠
<div class="mw-collapsible" style="background:#eee">
第一个子折叠
</div>
<div class="mw-collapsible" style="background:#eee">
第二个子折叠
</div>
</div>
|
第一个折叠 第一个子折叠 第二个子折叠 | |||||||||
Mediawiki 表格:标题行不会被折叠
{| class="wikitable sortable mw-collapsible"
! 你好
! 世界
|-
| 內容
| 会在
|-
| 这里
| 出现
|}
|
| |||||||||
也可用于 syntaxhighlight 标签:
<syntaxhighlight lang="xml" highlight="" class=" mw-collapsible mw-collapsed">
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
</ syntaxhighlight>
|
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
| |||||||||
html 的 <table> 标签的折叠:(用法更灵活复杂,但代码不如 Mediawiki 表格易读)
<table class="wikitable">
<tr>
<th>X</th> <th>Y</th> <th>Z</th>
</tr>
<tr>
<td>下面的內容是预设隐藏的</td> <td>35</td> <td>91</td>
</tr>
<tr>
<td class="mw-collapsible mw-collapsed">我是mw-collapsible的內容</td> <td>42</td> <td>63</td>
</tr>
</table>
|
| |||||||||
<ul> 标签折叠效果:
<ul class="mw-collapsible">
<li>Lorem
<li>Ipsum
<li>Dolor
</ul>
|
| |||||||||
<ol> 标签折叠效果:
<ol class="mw-collapsible">
<li>One
<li>Two is more than one
<li>..a total of three items!
</ol>
|
| |||||||||
mw-collapsible-content |
<div class="darken mw-collapsible mw-collapsed">
这里的文字不会被折叠
<div class="mw-collapsible-content">折叠文字 Four score and seven years ago our forefathers brought forth on this continent</div>
</div>
|
这里的文字不会被折叠 折叠文字 Four score and seven years ago our forefathers brought forth on this continent
| ||||||||
<div class="darken mw-collapsible mw-collapsed">
这里的文字不会被折叠
<div class="mw-collapsible-content">
被折叠的文字,和列表:
<ul>
<li>A
<li>B
<li>C
<li>D
</ul>
</div>
</div>
|
这里的文字不会被折叠 被折叠的文字,和列表:
| |||||||||
mw-customtoggle-<自定义名字>
|
<span class="darken mw-customtoggle-huiji">折叠按钮A</span>
<div class="darken mw-collapsible mw-collapsed" id="mw-customcollapsible-huiji">折叠的内容</div>
<span class="darken mw-customtoggle-huiji">折叠按钮B</span>
|
折叠按钮A 折叠的内容
折叠按钮B | ||||||||
<div class="mw-customtoggle-myTable">点此折叠表格</div>
{| class="wikitable sortable mw-collapsible" id="mw-customcollapsible-myTable"
! Hello
! World
|-
| Content
| Goes
|-
| In
| Here
|}
|
点此折叠表格
| |||||||||
<div class="mw-customtoggle-myList">折叠列表</div>
<ul class="mw-collapsible" id="mw-customcollapsible-myList">
<li>A
<li>B
<li>C
<li>D
</ul>
|
折叠列表
|