解决织梦后台模块管理中心不显示模块列表
来源:互联网 发布:淘宝客如何做淘口令 编辑:程序博客网 时间:2024/06/05 01:21
笔者最近正策划写个织梦在线考试插件,当打开后台的“模块管理”的时候,先是加载许久,随后出现空列表。
于是谷歌了一番,找到的几种解决方法都没有解决问题。只好慢慢调试,于是又开始 DEBUG 之旅。
1、配置 php.ini 显示错误信息
display_errors = On
2、配置织梦 /include/common.inc.php 显示错误信息
error_reporting(E_ALL);
// error_reporting(E_ALL || ~E_NOTICE);
再次点击“模块管理”时,出现如下警告信息:
Warning: array_merge(): Argument #2 is not an arrayin D:\xampp\htdocs\dedecms_test\dede\module_main.php on line 95
它说我的第二个参数不是数组?
当我们把鼠标悬停在“模块管理”时,可以看到它调用的文件是 /dede/module_main.php 文件,我们打开编辑此文件。
直接跳到 95 行,代码如下:
if($action=='')
{
$types= array('soft'=>'模块','templets'=>'模板','plus'=>'小插件','patch'=>'补丁');
$dm= newDedeModule($mdir);
if(empty($moduletype)) $moduletype= '';
$modules_remote= $dm->GetModuleUrlList($moduletype,$mdurl);
$modules= array();
$modules= $dm->GetModuleList($moduletype);
is_array($modules) || $modules= array();
$modules= array_merge($modules,$modules_remote);
require_once(dirname(__FILE__)."/templets/module_main.htm");
$dm->Clear();
exit();
}
警告信息提示我们:modules_remote 不是一个数组,为此我们将它手工调成数组试试。在:
$modules = array_merge($modules,$modules_remote);
上面添加:
is_array($modules_remote) || $modules_remote= array();
最终代码:
if($action=='')
{
$types= array('soft'=>'模块','templets'=>'模板','plus'=>'小插件','patch'=>'补丁');
$dm= newDedeModule($mdir);
if(empty($moduletype)) $moduletype= '';
$modules_remote= $dm->GetModuleUrlList($moduletype,$mdurl);
$modules= array();
$modules= $dm->GetModuleList($moduletype);
is_array($modules) || $modules= array();
is_array($modules_remote) || $modules_remote= array();
$modules= array_merge($modules,$modules_remote);
require_once(dirname(__FILE__)."/templets/module_main.htm");
$dm->Clear();
exit();
}
保存修改,再点击后台的“模块管理”发现列表出来了,问题算是解决了。我们来看看点击模块管理过后的列表:
列表确实出来了,但是我们未安装的插件并没有显示在这里,比如:手机 WAP 浏览模块、UCenter 模块、问答模块等。
在这个 php 文件的顶部,我们看到有这样一句话:
$mdurl= $updateHost.'dedecms/module_'.$cfg_soft_lang.'/modulelist.txt';
它最终生成的结果是:http://updatenew.dedecms.com/base-v57/dedecms/module_utf-8
/modulelist.txt,这个链接打开超级慢,有可能是织梦服务器问题导致连接超时不能读取文件。我们打开它发现是一个类似 JSON 的
KEY-VALUE 形式,内容如下:
a:15:{s:32:"0a7bea5dbe571d35def883cbec796437";a:14:{s:3:"url";s:22:......(略)
这是什么?这有点像织梦的云接口,包含了所有的插件,点击织梦之后会自动的去下载这个文件,并保存在
/data/module/moduleurllist.txt
中,如果服务器禁止了访问服务器之外的网络或请求超时,那么该文件就不能正常被读取,这也解释了之前我们打开模块管理后会加载很长时间(最终读取超时),
最后显示空列表的情况。
最终解决方法:
1、打开 http://updatenew.dedecms.com/base-v57/dedecms/,根据网站编码进入文件夹,保存里面的 modulelist.txt 文件到本地。
2、把新下载 modulelist.txt 改名为 moduleurllist.txt 并替换 /data/module/moduleurllist.txt
3、编辑 /dede/module_main.php 文件(大概 82 行),将以下代码:
/*--------------
function ShowAll();
--------------*/
if($action=='')
{
$types= array('soft'=>'模块','templets'=>'模板','plus'=>'小插件','patch'=>'补丁');
$dm= newDedeModule($mdir);
if(empty($moduletype)) $moduletype= '';
$modules_remote= $dm->GetModuleUrlList($moduletype,$mdurl);
$modules= array();
$modules= $dm->GetModuleList($moduletype);
is_array($modules) || $modules= array();
$modules= array_merge($modules,$modules_remote);
require_once(dirname(__FILE__)."/templets/module_main.htm");
$dm->Clear();
exit();
}
替换为:
/*--------------
function ShowAll();
--------------*/
if($action=='')
{
$types= array('soft'=>'模块','templets'=>'模板','plus'=>'小插件','patch'=>'补丁');
$dm= newDedeModule($mdir);
if(empty($moduletype)) $moduletype= '';
$modules_remote= $dm->GetModuleUrlList($moduletype,$mdurl);
$modules= array();
$modules= $dm->GetModuleList($moduletype);
is_array($modules) || $modules= array();
is_array($modules_remote) || $modules_remote= array();
$modules= array_merge($modules,$modules_remote);
require_once(dirname(__FILE__)."/templets/module_main.htm");
$dm->Clear();
exit();
}
最后,点击“模块管理”一切显示正常了,有图有真相:
到此问题解决,希望这篇文章会对你有所帮助。
- 解决织梦后台模块管理中心不显示模块列表
- 织梦DedeCMS后台模块管理列表不显示 【终极解决办法】
- Magento创建管理列表和后台模块
- IM模块-UiCollectionView列表显示气泡文本
- IM模块-UiCollectionView列表显示气泡图片
- phpmpsv2.3编辑模块不显示解决方法
- 解决模块与内核不匹配问题
- 解决模块与内核不匹配问题
- 织梦后台验证码不显示
- 织梦后台内容编辑器不显示
- 解决织梦dedecms搜索列表不显示自定义字段方法
- jeecg模块list页面显示不出来只显示"[]"
- iwebshop后台模块
- 后台管理登录模块
- Discuz X前台删除了DIY模块,后台“模块管理”中却删不掉怎么办?解决
- 织梦DEDECMS模块管理的模块列表显示空白的解决方法
- miranda-主要模块列表
- 测试模块列表
- 软件架构(software architecture)
- Linux:使用php-java-bridge让PHP5支持java
- arm2QT相关
- 浅析PageRank算法
- redis
- 解决织梦后台模块管理中心不显示模块列表
- WatchKit 正式上线,告诉我们 Apple Watch 长啥样
- [iOS-GQiang]改变状态栏文字颜色
- Linux 查看内核版本
- 栈的应用--中缀表达式转换为后缀表达式&逆波兰计算器的实现
- Eclipse快捷键大全(转载)
- 报文处理中的主动和被动轮询
- java生成指定长度的随机字符串
- 软件工程第二次二人协作项目 3D俄罗斯方块