最近服务器上迁移过来了一些网站(后台是DEDECMS),今天遇到了两个因为PHP缓冲区导致的图像损坏问题。
1.验证码无法显示
这个验证码在原本的服务器上是正常的,到了新服务器上却无法显示了。
对于这个问题,我们可以修改dedecms的文件去除验证码,但是这个办法治标不治本。正确的处理办法是在include文件夹的vdimgck.php里加一句ob_end_clean();函数来解决。
Read More →
PHP缓冲区问题导致的dedecms异常
织梦(dedecms)后台默认首页是动态网页,其余栏目页、文章页是静态网页。
静态化有利于减小服务器压力,但是在开发、调试的时候,修改完网站需要更新网页才能看到效果,不如使用动态化来得便捷。
要切换静态。动态页面,步骤如下:
1.首页
①:静态改动态:
如果首页一直保持的是默认的“动态浏览”,则无需改动。
如果首页之前已经改成静态化了,在后台设置里改成“动态浏览”,再删除网站根目录里的index.html就行了(之后访问首页网址,如果后面还带的有index.html,是浏览器缓存的原因,实际上已经动态化了)。
2.栏目页
执行以下SQL语句把所有栏目页设置为动态化:
update dede_arctype set isdefault=-1
如果最后改为1,则是静态化。
3.文章页
执行以下SQL语句把所有文章页设置为动态化:
update dede_archives set ismake=-1
如果最后改为1,则是静态化。
如果最后改为0,则是伪静态。但织梦的伪静态我还没用过,不知道是什么样。
ps:栏目页和文章页都可以在最后加上 where typeid=1 的形式来修改指定栏目的设置。
dedecms整站静态、动态切换
dedecms(织梦)的文章在修改后不会自动更新文章简介。我们可以用下面的办法清除简介并重新生成:
首先在 系统→SQL命令行工具里,执行如下语句:
update dede_archives set description="";
然后到 核心→批量维护→自动摘要|分页 里面批量生成摘要即可。
dedecms 批量更新文章摘要的方法
在织梦的列表页我们会使用dede:list标签调出文章。此标签可以自动分页,但是要在其中调用文章正文的一部分来做简介的话,却不像dede:arclist标签那么方便。
要在列表页调用文章正文,需要我们更改频道模型。
到后台 核心 -> 频道模型 -> 内容模型管理 -> 普通文章 -> 更改,在“列表附加字段”一栏填入“body保存,其他不用改。
之后即可在dede:list里调用:
{dede:list pagesize='10'} [field:body function='cn_substr(html2text(@me),600)'/] {/dede:list}
在织梦列表页调用文章正文
dedecms里默认的文章标题长度是60,如果添加文章时标题长度超出60,就会被截断,影响恶劣。
假设我要修改dedecms的文章标题长度为200,那么需要两个步骤:
1.到“系统设置”→“系统基本参数”→“其它选项”,修改“文档标题最大长度”选项为200。
2.到“系统设置”→“SQL命令行工具”中执行下面Sql语句:
alter table #@__archives change title title varchar(200)
这样就OK了。
需要注意的是,dedecms里设置的这个长度并不是按字数,而是按PHP里的字节数。在PHP中,GBK系列编码里的一个中文占据2个字节的长度;UTF-8编码里的一个中文占据3个字节的长度。英文字符则始终是一个长度。
dedecms织梦修改文章标题长度
织梦自身并没有调用顶级栏目名称的功能,需要我们自己添加。
打开织梦目录下的include/common.inc.php,在末尾添加函数:
function getTopCategoryName($cid=0) { global $dsql; if($cid==0) { $string ="无效参数"; } else { $cid=GetTopid($cid); $sql ="SELECT typename FROM dede_arctype where id=".$cid; $arcRow=$dsql->GetOne($sql); $string = $arcRow[typename]; } return $string; }
ps:如果你的表名称不是dede_前缀,则需要修改dede_arctype表名为自己的表名。
之后我们在模板里使用以下代码调用即可:
{dede:field name='typeid' function = getTopCategoryName(@me)'/}
织梦调用顶级栏目名称
昨天我准备把一个网站做个demo,先在dedecms的后台里添加了一篇文章,之后我想把它复制多次,可是dedecms没有复制文章的功能。于是我从数据库里操作,最后搞明白了。
dedecms关于文章的信息储存在三个表里:
dede_addonarticle:主要存储文章正文;
dede_archives:储存文章诸多次要信息,如标题、简介、flag等。
dede_arctiny:储存的信息较少,添加文章时dedecms会从这个表里判断哪些文章id被用过了。
虽然大佬们可能用sql语句来复制数据,不过作为主键的文章id(aid字段)不能重复,栏目id(typeid)也有好几个,所以我这弱鸡还是用可视化工具操作的。
下面以Navicat for MySQL为例讲解一下具体的操作。
Read More →
dedecms如何在数据库复制文章
dedecms的系统设置里有许多参数(蓝色线条上面的是其他种类的设置),合起来有一百五十多条。不过我们最常用的还是第一栏的这些选项,这些选项也经常会在模板里调用。
如果我们要增加一项内容,以便在全站调用,应该怎么做呢?
Read More →
在 dedecms的系统参数中添加设置项
dedecms的文章都可以设置flag,这样当我们调用时可以调用带有指定flag的文章。有时候我们可能需要添加自定义的flag(如上图的“显示到首页”就是自定义的)。
ps:虽然flag的说明文字可以写的比较长,但是在后台文章列表里只会显示每个flag的前两个字。
下面直接放百度经验的内容=。=
Read More →
dedecms给文章增加自定义flag的办法
dedecms的栏目可以“文件保存目录”属性,这样栏目的ul就会使用这里设置的链接。这个字段在数据库里是dede_arctype表的typedir字段,但是它默认是char(60),这个长度对网址来说显然是太短了,如果网址超长就会被截断。如果需要,我们可以到数据库修改它的长度。
Read More →