DokuWiki中如何隐藏“媒体管理器”链接,或登录用户在顶部的任何链接,非?
Answer 1:
一种方法是更改模板是这样的:在/lib/tpl/dokuwiki/tpl_header.php:
<?php
if ($INFO['isadmin']) {
tpl_action('recent', 1, 'li'); //recent changes
tpl_action('media', 1, 'li'); //media manager
tpl_action('index', 1, 'li'); //sitemap
}
?>
Answer 2:
如果没有用户登录,$ INFO [“用户信息”]为空
在/lib/tpl/dokuwiki/tpl_header.php更换
tpl_toolsevent('sitetools', array(
tpl_action('recent', true, 'li', true),
tpl_action('media', true, 'li', true),
tpl_action('index', true, 'li', true)
));
同
if(!empty($INFO["userinfo"])) {
tpl_toolsevent('sitetools', array(
tpl_action('recent', true, 'li', true),
tpl_action('media', true, 'li', true),
tpl_action('index', true, 'li', true)
));
}
Answer 3:
创建插件。 让我们假设插件名称是nositetoolsanon
,所以你需要创建下的文件lib/plugins/nositetoolsanon/action.php
。
<?php
if(!defined('DOKU_INC')) die();
class action_plugin_nositetoolsanon extends DokuWiki_Action_Plugin {
public function getInfo(){
return array('date'=>'2017-08-25', 'name'=>'No sitetools for anonymous users', 'author'=>'Phy25');
}
public function register(Doku_Event_Handler $controller) {
$controller->register_hook('TEMPLATE_SITETOOLS_DISPLAY', 'BEFORE', $this, 'action_link');
}
public function action_link(&$event, $param){
global $INFO;
if(empty($INFO["userinfo"])){
// more robust check by ACL: global $ID; if (auth_quickaclcheck($ID) < AUTH_READ)
$event->preventDefault();
}
}
}
此方法适用于任何模板,并且不会被更新覆盖。
提示:如果您想对后腿谁是无法读取用户的命名空间,尝试设置$conf['sneaky_index'] = 1
在配置文件中,但它可能会导致问题,如果更深层次的命名空间比上述那些更高的权限 。
Answer 4:
不是你要找的(也许有点晚了呢),但这里究竟是禁用的方式Media Manager
链接所有(包括登录)用户:
- 去管理面板, 配置设置 ;
- 搜索禁用DokuWiki的行动 (选项名称:
disableactions
); - 在其他操作 ,添加关键字
media
(见这里引用 )。
请注意,这将隐藏的链接给大家,但用户写访问仍可以通过点击编辑页面时,相应的按钮启动媒体管理器。
Answer 5:
最近,我有这个问题,我发现所选择的答案是不够的我。 我敢肯定,因为我使用的是Codowik模板,而不是默认情况下它没有工作。 这是我想出了利用sivann的答案。
我编辑/lib/tpl/codowik/tpl_header.php
,并将此顶部:
<?php
if (!$INFO['isadmin']) {
echo "<script>
var newStyle = document.createElement('Style');
newStyle.innerHTML = '#codowiki_search_ul a {display: none;}';
document.head.appendChild(newStyle);
</script>";
}
?>
它相当的hackish,但我没有时间去深入探讨的模板是如何实现的,以及它的工作原理!
Answer 6:
我想只有在站点地图是向游客和注册用户(我用的网站作为一个博客)可见,所以只是想最近的变化和媒体链接,使我(管理员)可见。
这是我在“Greebo”改变,INC /菜单/ SiteMenu.php代码
protected $types = array(
//'Recent', // comment out stuff not required
//'Media',
'Index' // leave sitemap for spiders
);
// add this function
// remove the "&& $INFO['isadmin']" to allow all logged in users to see options
public function __construct(){
global $INPUT;
global $INFO;
if($INPUT->server->str('REMOTE_USER') && $INFO['isadmin']){
$this->types = array( 'Recent', 'Media', 'Index' );
}
}
Answer 7:
我与“格雷波”解决方案
- 找到INC /动作/忽略原始
- 编辑方法tplContent():
public function tplContent() {
global $INFO;
if ( empty($INFO['userinfo']) ) {
echo "<p>No way</p>";
return;
}
tpl_media();
}
因此,只有用户 - 但不是匿名的 - 可以看到媒体管理器。
Answer 8:
我的解决方案将可以被隐藏了太多的信息,但在这里我们去:
- 以管理员身份登录
- 进入管理部分
- 滚动到ACL(访问控制列表)管理
- 设置用户/组“@all”权限设置为“无”