织梦项目升级、套模版过程中可能遇到的问题

 

文章目录

  • dedecms5.6升级5.7出现的bug
  • 获取标签变量的问题
  • 使用sql或修改php文件
  • 编码问题
  • 项目环境配置问题
  • 升级步骤
  • 常见标签/模板调用
  • 织梦文件结构说明
  • 其他问题

dedecms5.6升级5.7出现的bug

  1. 文章无法保存、栏目无法创建、数据保存到dede_archives时报错
    原因是因为5.6升级到5.7数据表archives多了一个字段,如下图voteid
    在这里插入图片描述
    解决方式:
    dede后台执行SQL命令:
    alter table dede_archives ADD voteid mediumint(8) NOT NULL COMMENT ‘’ AFTER badpost;
    alter table dede_member_stow CHANGE type type varchar(10) COMMENT ‘’ AFTER addtime;
  2. 织梦升级5.7,编辑器ck和fck的问题
    在织梦后台系统设置-》系统基本参数-》核心设置-》Html编辑器选项(仅支持 dede 和 fck):,可以看到5.7 把5.6默认的ck替换成了ck。系统刚升级的时候,后台可以出现一些编辑的界面显示不全的问题,比如频道栏目的内容编辑页不显示编辑器,可以在这里添加一个ck,重新刷新一下。建议出现界面之后,重新改回系统默认的fck,避免出现其他界面问题。
  3. 发布文章时不出现栏目内容及发布(升级到5.7SP1会,5.7SP2不会)
    在后台模板/dede/templets/content_list.htm目录栏查找到第81行;在 {dede:field.arcrankfunction=”GetRankName(@me)”/}这个标记中加入了, {dede:field.adminname/}。

获取标签变量的问题

  1. dede:type失效问题
    {dede:type typeid=‘1’}栏目{/dede:type} 无效;
    {dede:type typeid=‘1’}[field:typename/]{/dede:type} 有效;
    type必须存在底层模板才起作用
  2. [field:typeurl/]和[field:typelink/]的区别
    [field:typeurl/]:是a标签里面的路径,也就是href填写的内容
    [field:typelink/]:是包括a标签的。
  3. myDate(Y与y的区别)
    Y:是全名,比如Y-m-d:2010-01-02,
    y:y-m-d:12-01-01

使用sql或修改php文件

  1. 织梦频道封面页调用当前栏目内容
    {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/]( 栏目名称)
  2. 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'];
    }
}
  1. 使用if语句对变量进行判断

编码问题

  1. 织梦系统gbk和utf-8转换
    在线转码工具:https://www.dedemao.com/convert/
    如果手动转换,需要修改以下几个地方
    1、html头部编码设置,<meta charset="GBK">、<meta charset="UTF-8">
    2、代码文件本身编码转换,可以用hbuilderx、vscode重新编码打开文件,转换文件的编码,或用记事本转换编码后另存为。建议用编辑器转换编码,可以避免中文乱码,需要重写。

项目环境配置问题

  1. phpstudy 集成的mysql无法启动
    问题:安装好phpstudy后,Apache可以启动,Mysql无法启动
    原因:之前已经装过Mysql或是重装phpstudy遗留的mysql未卸载,要把系统服务里面的MySQL删除,留下MySQLa服务
    方法:在cmd命令行下输入:sc delete mysql 即可删除(注意,如果没有权限,要用管理员运行)
    在卸载phpstudy的时候,先将服务关闭,再删除文件。
  2. 报错:php.ini register_globals must is Off!
    参考我的另一篇文章: https://blog.csdn.net/HDdgut/article/details/108336299
  3. 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(可以设置自己需要的大小)

升级步骤

  1. 要注意浏览器缓存问题
  2. 不同的模板图片,样式,js文件,如果是自定义的,最好放在模板下面的文件夹,以防止和其他模板出现文件名重复的问题。
  3. 备份数据库,下载升级包,解压升级包复制到项目,覆盖掉项目内容,保持data文件夹的。common.inc.php不变(数据库的配置信息),执行目录下的./update/文件夹,在浏览器中打开:http://您的站点域名/update,进行程序升级。升级完成之后,把备份数据库文件夹backupdata,进行还原。在后台系统设置的数据库备份/还原。还原之后,如果是5.6-5.7,需要修改文章主表,因为少了字段voteid。
  4. 参考官网文档:https://www.php.cn/cms/dedecms/425833.html

常见标签/模板调用

  1. 织梦嵌套写法
    内层写法:[field:??/];外层写法:{dede:field.??/}
    {dede:channelartlist}可以嵌套{dede:channel}
    (待补充)
  2. 列表页调用该栏目下指定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。

织梦文件结构说明

  1. 重要的经常会用到文件
    dede 管理后台目录(自己可以修改) 、/include 程序核心文件目录(修改模板或织梦原本的定义) 、/plus 插件及辅助功能目录 、 /templets 默认模板存放目录、/data 数据库相关目录(数据备份backupdata,数据缓存目录cache)
  2. 总体的文件目录结构
    参考官网文档: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整个安装目录。

没有账号? 忘记密码?

社交账号快速登录