dedecms5.6升级5.7出现的bug
-
文章无法保存、栏目无法创建、数据保存到dede_archives时报错
原因是因为5.6升级到5.7数据表archives多了一个字段,如下图voteid
解决方式:
dede后台执行SQL命令:
alter tabledede_archives
ADDvoteid
mediumint(8) NOT NULL COMMENT ‘’ AFTERbadpost
;
alter tabledede_member_stow
CHANGEtype
type
varchar(10) COMMENT ‘’ AFTERaddtime
; -
织梦升级5.7,编辑器ck和fck的问题
在织梦后台系统设置-》系统基本参数-》核心设置-》Html编辑器选项(仅支持 dede 和 fck):,可以看到5.7 把5.6默认的ck替换成了ck。系统刚升级的时候,后台可以出现一些编辑的界面显示不全的问题,比如频道栏目的内容编辑页不显示编辑器,可以在这里添加一个ck,重新刷新一下。建议出现界面之后,重新改回系统默认的fck,避免出现其他界面问题。 -
发布文章时不出现栏目内容及发布(升级到5.7SP1会,5.7SP2不会)
在后台模板/dede/templets/content_list.htm目录栏查找到第81行;在 {dede:field.arcrankfunction=”GetRankName(@me)”/}这个标记中加入了, {dede:field.adminname/}。
获取标签变量的问题
- dede:type失效问题
{dede:type typeid=‘1’}栏目{/dede:type} 无效;
{dede:type typeid=‘1’}[field:typename/]{/dede:type} 有效;
type必须存在底层模板才起作用 - [field:typeurl/]和[field:typelink/]的区别
[field:typeurl/]:是a标签里面的路径,也就是href填写的内容
[field:typelink/]:是包括a标签的。 - myDate(Y与y的区别)
Y:是全名,比如Y-m-d:2010-01-02,
y:y-m-d:12-01-01
使用sql或修改php文件
- 织梦频道封面页调用当前栏目内容
{dede:sql sql=‘Select content from dede_arctype where id=2’}
[field:content function=‘cn_substr(html2text(@me),420)’/]
{/dede:sql}
function=‘cn_substr(html2text(@me),420)’:是截取字符串长度,不加也是可以的,中间可以是 [field:content /](栏目内容)、[field:description/](栏目描述)、 [field:typename/]( 栏目名称) - dedecms无法获取顶级栏目名的解决办法
在include/common.func.php中加入以下代码:
//获取顶级栏目名
function GetTopTypename($id)
{
global $dsql;
$row = $dsql->GetOne("SELECT typename,topid FROM #@__arctype WHERE id= $id");
if ($row['topid'] == '0')
{
return $row['typename'];
}
else
{
$row1 = $dsql->GetOne("SELECT typename FROM #@__arctype WHERE id= $row[topid]");
return $row1['typename'];
}
}
除此之外,获取顶级栏目图片,英文名称:
//获取顶级栏目英文名
function GetTopTypenameen($id)
{
global $dsql;
$row = $dsql->GetOne("SELECT typenameen,topid FROM #@__arctype WHERE id= $id");
if ($row['topid'] == '0')
{
return $row['typenameen'];
}
else
{
$row1 = $dsql->GetOne("SELECT typenameen FROM #@__arctype WHERE id= $row[topid]");
return $row1['typenameen'];
}
}
//获取顶级栏目栏目图片
function GetTopTypenameimg($id)
{
global $dsql;
$row = $dsql->GetOne("SELECT typenameimg,topid FROM #@__arctype WHERE id= $id");
if ($row['topid'] == '0')
{
return $row['typenameimg'];
}
else
{
$row1 = $dsql->GetOne("SELECT typenameimg FROM #@__arctype WHERE id= $row[topid]");
return $row1['typenameimg'];
}
}
//获取顶级栏目栏目图片
function GetTopTypeimg($id)
{
global $dsql;
$row = $dsql->GetOne("SELECT Typeimg,topid FROM #@__arctype WHERE id= $id");
if ($row['topid'] == '0')
{
return $row['Typeimg'];
}
else
{
$row1 = $dsql->GetOne("SELECT Typeimg FROM #@__arctype WHERE id= $row[topid]");
return $row1['Typeimg'];
}
}
- 使用if语句对变量进行判断
编码问题
- 织梦系统gbk和utf-8转换
在线转码工具:https://www.dedemao.com/convert/
如果手动转换,需要修改以下几个地方
1、html头部编码设置,<meta charset="GBK">、<meta charset="UTF-8">
2、代码文件本身编码转换,可以用hbuilderx、vscode重新编码打开文件,转换文件的编码,或用记事本转换编码后另存为。建议用编辑器转换编码,可以避免中文乱码,需要重写。
项目环境配置问题
- phpstudy 集成的mysql无法启动
问题:安装好phpstudy后,Apache可以启动,Mysql无法启动
原因:之前已经装过Mysql或是重装phpstudy遗留的mysql未卸载,要把系统服务里面的MySQL删除,留下MySQLa服务
方法:在cmd命令行下输入:sc delete mysql 即可删除(注意,如果没有权限,要用管理员运行)
在卸载phpstudy的时候,先将服务关闭,再删除文件。 - 报错:php.ini register_globals must is Off!
参考我的另一篇文章: https://blog.csdn.net/HDdgut/article/details/108336299 - 2006 - MySQL server has gone away
原因:数据库导入数据时,响应时间过长,或数据量过大
最直接的办法,不要使用phpstudy自带的mysql工具,下载一个mysql管理工具(比如Navicat )
vicat )
其他办法:修改配置文件,php.ini(没有的话,添加)或my.ini(mysql的配置文件)
1.超时间响应
wait_timeout=2880000
interactive_timeout = 2880000
2.数据包过大
max_allowed_packet = 30M(可以设置自己需要的大小)
升级步骤
- 要注意浏览器缓存问题
- 不同的模板图片,样式,js文件,如果是自定义的,最好放在模板下面的文件夹,以防止和其他模板出现文件名重复的问题。
- 备份数据库,下载升级包,解压升级包复制到项目,覆盖掉项目内容,保持data文件夹的。common.inc.php不变(数据库的配置信息),执行目录下的./update/文件夹,在浏览器中打开:http://您的站点域名/update,进行程序升级。升级完成之后,把备份数据库文件夹backupdata,进行还原。在后台系统设置的数据库备份/还原。还原之后,如果是5.6-5.7,需要修改文章主表,因为少了字段voteid。
- 参考官网文档:https://www.php.cn/cms/dedecms/425833.html
常见标签/模板调用
- 织梦嵌套写法
内层写法:[field:??/];外层写法:{dede:field.??/}
{dede:channelartlist}可以嵌套{dede:channel}
(待补充) - 列表页调用该栏目下指定id的文章
{dede:arclist row=‘10’ titlelen=‘24’ orderby=‘pubdate’ idlist=’’ col=‘2’}
•[field:textlink/]([field:pubdate function=MyDate(‘m-d’,@me)/])
{/dede:arclist}
aid=’’ 指定文档ID,
idlist =’’ 提取特定文档(文档ID),
channelid 频道ID,
limit=‘起始ID,记录数’ (起始ID从0开始)表示限定的记录范围(如:limit=‘1,2’ 表示 从ID为1的记录开始,取2条记录)
具体参数,请参考官网文档,第六章,6.1:全局标签http://tools.dedecms.com/uploads/docs/dede_tpl/index.htm。
织梦文件结构说明
- 重要的经常会用到文件
dede 管理后台目录(自己可以修改) 、/include 程序核心文件目录(修改模板或织梦原本的定义) 、/plus 插件及辅助功能目录 、 /templets 默认模板存放目录、/data 数据库相关目录(数据备份backupdata,数据缓存目录cache) - 总体的文件目录结构
参考官网文档:http://www.dedecms.com/help/other/2009/0929/1020.html
3.数据字典:
dede_arctype :栏目管理表 ;addonarticle:文章附加表;
dede_archives :文档主表;dede_channeltype:模型表;
详细数据字典可参考
https://blog.csdn.net/luyaran/article/details/70243348
http://www.dedecms.com/help/other/2009/0929/1017.html
http://help.dedecms.com/develop/2011/0627/141.html
其他问题
项目迁移的时候,如果使用的是phpstudy,可以将整个目录复制过去就可以了,即phpstudy整个安装目录。
跳转标签: {dede:arclist typeid=‘337’ channelid=1 addfields=‘redirecturl’}{/dede:arclist}
跳转的路径:[field:redirecturl/]