织梦dedecms5.7提示标题不能为空的原因及解决方案
如遇蓝奏网盘打不开lanzous替换成lanzoux尝试!
问题症状:V5.7登录后台后,发布英文标题没问题,发布中文会提示“标题不能为空”。
问题根源:htmlspecialchars在php5.4默认为utf8编码,gbk编码字符串经 htmlspecialchars 转义后的中文字符串为空,也就是标题为空。
解决办法:给htmlspecialchars添加ENT_COMPAT ,’GB2312’参数修改编码默认值。
具体修改页面:
1、dede/article_add.php 和 dede/article_edit.php
将
$title=htmlspecialchars(cn_substrR($title,$cfg_title_maxlen));
改成
$title=htmlspecialchars(cn_substrR($title,$cfg_title_maxlen),ENT_COMPAT ,’GB2312′);
2、include/ckeditor/ckeditor_php5.php 138行
将 htmlspecialchars($value) 替换为 htmlspecialchars($value, ENT_COMPAT ,’GB2312′)
测试,发布文章成功。
提示:若不想修改程序源码的话,建议更换到PHP5.3版本,等织梦升级支持PHP5.4以后再更换空间服务器。
相信很多人都遇到过这个问题,一点搜索,除了标题、简介、日期、点击能出来,很多自定义字段都调取不到数据,显示为空,我也遇到了,但是我也遇到了好人,教我处理了这个问题,现在教大家修改几个地方就可以使用自定义字段标签调出数据了。
第一处修改的是:根目录下/include/arc.searchview.class.php文件。
用搜索找到 :
//处理一些特殊字段
然后在:
$row[“arcurl”]=GetFileUrl($row[“id”],$row[“typeid”],$row[“senddate”],$row[“title”],
前面加入以下代码:
$row[“你的字段名”]=date(“Y-m-d”, Search_addfields($row[“id”],”你的字段名”)); // 此项是显示时间格式的
$row[” 你的字段名 “]=Search_addfields($row[“id”],” 你的字段名 “); //普通字段名字
第二处修改的是: 根目录下/plus/advancedsearch.php
$row4=$dsql->GetOne(“SELECT * FROM ` dede_addonother ` where aid=’$id'”);
//dede_addonother是你内容模型的表名称,这里需要填你自己的内容模型名
最后就是你自己在你的搜索页面加入自定义字段的代码了,希望能帮助到你们。
当我们设置好dedecms图片水印功能之后,在实际使用过程中发现有些时候上传图片却没有水印,检查网站管理后台–>系统设置–>图片水印设置
水印功能设置的功能已打开,但使用图集进行上传png/gif/jpg等图片却没有任何水印效果。
解决dedecms png/gif/jpg上传图片水印失效的方法
查找原因,我们来检查一下用于控制上传图片组件。
打开/dede/swfupload.php文件,找到代码大概在108行:
//WaterImg($cfg_basedir.$fileurl, ‘up’); $title=$filename.$sname;
在保存原图中存在一个bug,修改为:
WaterImg($cfg_basedir.$fileurl, ‘up’); $title=$filename.$sname;
启用注释掉的这行就可以了,然后上传图片测试后发现水印功能可以正常使用了。
新建立了一个独立模型,可是突然发现模型列表中标题不能显示了,仔细分析发现并非完全不能显示,而是凡是带有中文的就不能显示。
然后一步一步分析,发现dede在显示独立模型文章列表时对独立模型的每一个字段都经过了ChannelUnit->MakeField方法的处理,原因是独立模型文章表中,凡是联动类型字段都保存的是数值,因此,需要将其转换成对应的名称,除此之外还进行了一些其他类型字段的处理。其中包括对于type是text的字段,那dedecms 会经过 HtmlReplace()方法进行处理。
function MakeField($fname, $fvalue, $addvalue=”)
{
//处理各种数据类型
$ftype=$this->ChannelFields[$fname][‘type’];
if($fvalue==”)
{
if($ftype !=’checkbox’) $fvalue=$this->ChannelFields[$fname][‘default’];
}
if($ftype==’text’)
{
$fvalue=HtmlReplace($fvalue);
}
……
问题就出在HtmlReplace方法中。某些时候HtmlReplace的中文转换是有问题的。
HtmlReplace
(>=DedeCMS 5.5)
函数名:HtmlReplace
功能:去除html中不规则内容字符
参数:
$str=” 需要处理的字符串
$rptype=0 返回类型
$rptype=0 表示仅替换 html标记
$rptype=1 表示替换 html标记同时去除连续空白字符
$rptype=2 表示替换 html标记同时去除所有空白字符
$rptype=-1 表示仅替换 html危险的标记
返回值:
格式化后的字符串
注:其实貌似HtmlReplace出现问题与否跟php的版本是有关系的,最新的php版本好像会出问题,但也有可能是配置的问题。
大家都说这是因为织梦代码优化不好怎么着怎么着的,其实有一些是因为这个原因,但不是完全因为这个。
dede登录后台卡死原因分析
登录完后台,加载的分别为顶部、左侧、右侧内容三个部分。
顶部只是简单的查询一下权限不会卡、左侧也是简单的查询了一下也不会卡,那么原因就是出在右侧内容部分了。那么是因为什么原因引起的呢?我们在右侧会发现有《信息统计》、最新文档、系统版本等信息。
信息统计,很有可能会卡,主要是因为查询四五个表左右,而查询的这些表中如果数据比较多的话,那么可能就会引起卡或是卡死的情况。
最新文档,不是很有可能。
更新信息,如果权限设置不好,在读写时可能会引起卡死情况。
最好的解决方法就是把所有显示的信息全部都删除,这样一来不管是什么原因,在登录后中间就不会查询数据库了,也就不会在卡了。
dede后台卡/假死解决
第1步:打开ftp软件,输入正常的ftp登录帐号和密码及端口号成功到网站中。
第2步:打开dede网站的后台目录dede。
注:dede为dede默认的后台目录,如果是正常使用的网站可能dede目录已经修改。
第3步:在dede目录中找到index_body.php文件,并下载下来。
第4步:把文章中所有的代码全删除掉,并替换为以下代码并保存。
复制代码代码如下:
echo “”;
?>
使用织梦程序,换了空间后,出现“dede网站搬家后出现/include/templets/default/index.htm Not Found!”
下面分享解决办法,希望对遇到类似问题的朋友能快速解决:
因为在网站后台把DedeCMS安装目录修改了
把/data/config.cache.inc.php中
$cfg_cmspath=’/dev57′;改为$cfg_cmspath=’/’;
就引发了上述的错误。
解决方法:
在/data/config.cache.inc.php中
改为$cfg_cmspath=”;
使用织梦建站的朋友,不知道你们是否注意到,如果网站做大内容比较多时,使用织梦自带的搜索功能会非常慢了,那到底是怎么回事呢,下面笔者给大家分析下 原因和解决办法?
1、产生原因
新增了利用“配置sphinx技术”的文档“全文检索”的功能,并且默认打开了此功能。而大多数的用户站点中,又没有配置或没有条件配置全文索引技术,这就造成了每次前台在搜索的时候都去连接Sphinx服务器,而这个服务器却又不存在。造成了搜索非常慢。
2、解决方案
登录网站后台,点击【系统】选项卡,进入“系统基本参数”页面,点击“其它选项”,找到“是否启用文章全文检索功能(需配置sphinx服务器):”,将其设置为“否”,保存即可。