我希望将所有官僚行为(所有操作、所有特殊页面等)锁定给所有在 MediaWiki 中没有管理员角色的用户。
这就是我目前半自动完成的方法。
首先,我安装扩展锁定。
然后,在锁定所有特殊页面之前,我锁定所有操作,因为这比锁定所有特殊页面容易得多(大约有 6 个操作,但有大约 150 个特殊页面)。
要锁定所有操作,我将其放入 LocalSettings.php 中:
$wgActionLockdown['edit'] = array( 'sysop' );
$wgActionLockdown['delete'] = array( 'sysop' );
$wgActionLockdown['move'] = array('sysop');
$wgActionLockdown['protect'] = array( 'sysop' );
$wgActionLockdown['history'] = array( 'sysop' );
$wgActionLockdown['createtalk'] = array('sysop');
之后,锁定所有特殊页面有点困难,但目前可以自动锁定,如下所示:
1)所有特殊页面的列表可在https://en.wikipedia.org/wiki/Help:Special_page
2)我从 shell (CLUI) 将页面下载到 stdin,使用 grep 匹配名称,使用 sort 过滤名称(这也会删除重复项)并将输出重定向到 txt 文件:
curl https://en.wikipedia.org/wiki/Help:Special_page -s | grep -oP 'Special:\K[a-zA-Z0-9]*' | sort -u > special_page_names.txt
3)我使用 AWK 将每个名称放入 Extension:Lockdown 的阻止模板中:
awk '{ print "$wgSpecialPageLockdown[\47"$0"\47] = array(\47sysop\47);" }' special_page_names.txt > special_page_names_processed.txt
- 我将输出粘贴到 LocalSettings.php 中
您知道锁定所有特殊网页的更简单方法吗?
请注意,如果您锁定除操作和特殊页面之外的其他任何内容。
答案1
人们需要能够登录。
$wgSpecialPageLockdown['用户登录'] = ['*'];
所有其他特殊页面均被阻止。
$wgSpecialPageLockdown[] = 数组('sysop');