dedecms中常见问题修改方法总结


Posted in PHP onMarch 21, 2007

新手常见问题,此贴是早些时候我发的,在3.1正式版中.有些问题已得到修正,不过仍可作为修改或学习参考
请大家花点耐心看完这个吧,这些问题很多人都有碰到.何必要不停的发贴子问呢?
另外,看完这个请去你自己的后台看完模板标记参考!!特别是arclist这个标记的参数说明!!
多思考一下问题,多试验一下标记,,学到就是自己的,学不到,谁也帮不到你!!
补充一点..很多标记都可以参考系统默认的模板和模板区的一些好模板,多看标记体会每个标记的用法,
下文如果有您的贴子..感谢您对DEDE的匏礁冻?.
3.1lit最新版当一级栏目为最终列表栏目时,使列表显示其下级栏目的文章的修改
include/inc_arclist_view.php
80行:
$addSql .= " And (typeid='".$this->TypeID."' or typeid2='".$this->TypeID."') ";
更改为:
//增加的,用来解决上级列表调用不出下级列表的问题
    $ssid = TypeGetSunID($this->TypeID,$this->dsql);
    $ssid2 = str_replace('typeid','typeid2',$ssid);
    //结束增加的
    $addSql .= " And (typeid='".$this->TypeID."' or ".$ssid." or typeid2='".$this->TypeID."' or ".$ssid2.") ";//本句也已修改
上面这部分用来解决分页问题
include/inc/inc_fun_SpGetArcList.php
70行开始:
if($ridnum>1){
    $tpsql = "";
    for($i=0;$i<$ridnum;$i++){
        if($tpsql=="") $tpsql .= " And (".TypeGetSunID($reids[$i],$dsql,'arc');
        else $tpsql .= " Or ".TypeGetSunID($reids[$i],$dsql,'arc');
    }
    $tpsql .= ") ";
    $orwhere .= $tpsql;
    unset($tpsql);
    }
    else{
    $orwhere .= " And ".TypeGetSunID($typeid,$dsql,'arc');
    }
更改为:
if($ridnum>1){
    $tpsql = "";
    for($i=0;$i<$ridnum;$i++){
        if($tpsql=="") {
        //开始修改文章第二栏目调用问题
        $ssid = TypeGetSunID($reids[$i],$dsql,'arc');
        $ssid2 = str_replace('typeid','typeid2',$ssid);
        $tpsql .= " And (".$ssid." or ".$ssid2;}
        else {
        $tpsql .= " Or ".TypeGetSunID($reids[$i],$dsql,'arc');
        $tpsql .= str_replace('typeid','typeid2',$tpsql);}
    }
    $tpsql .= ") ";
    $orwhere .= $tpsql;
    unset($tpsql);
    }
    else{
    $ssid = TypeGetSunID($typeid,$dsql,'arc');
    $ssid2 = str_replace('typeid','typeid2',$ssid);
    $orwhere .= " And (".$ssid." or ".$ssid2.") ";//结束修改文章第二栏目调用问题
    }
此部分用来解决调用下级栏目文章列表问题
替换的代码我写的很粗糙,可以暂时先用着,等官方的解决方案出来后再替换
在 include/inc_arclist_view.php还要改一处:
//获得一个单列的文档列表

    //类别ID的条件
    $orwhere .= " And (#@__archives.typeid='".$this->TypeID."' or #@__archives.typeid2='".$this->TypeID."') ";
改为:
    //类别ID的条件
      $ssid = TypeGetSunID($this->TypeID,$this->dsql);
    $orwhere .= " And (#@__archives.typeid='".$this->TypeID."' or ".$ssid." or #@__archives.typeid2='".$this->TypeID."') ";
否则有页面没有列表内容,因为80行是Select count(*).....
关于那个栏目路径有个{cmspath}
首先说一下{cmspath}的意思,,打开后台"系统配置参数"可以看到第二项,DedeCms安装目录: 
这个就是{cmspath}所解析出来的路径,
如果beta2升级到lit,需要手工修改栏目属性,把{cmspath}去除.或者你运行setup升级完之后用lit的所有文件
替换掉之前的B2的所有文件,这样{cmspath}就可以正常解析成你的网站路径
如果你不用{cmspath}这个参数,.可以照下面的修改
执行SQL: update dede_arctype set typedir=replace(typeidr,'{cmspath}','');
以去掉数据库的里 {cmspath}
然后修改文件 catalog_add.php 找到 $true_typedir = str_replace("{cmspath}",$cfg_cmspath,$typedir);
改成
$true_typedir = str_replace("",$cfg_cmspath,$typedir);
就行
[field:description /]这个标签如何限制字数?
[field:description function='cn_substr(@me,80)'/]
dede 里的所有标记都支持这样使用函数的
关于3.1版友情链接添加后在首页没有显示的问题
引起这个的主要原因是BLT在编写的时候把表 dede_flink的ischeck的值弄反了造成的.
在3.01里..ischeck=1表示首页链接..2表示内页链接,但3.1正好相反,
给一个最简直的改法就是打开inc_fun_SpGetFriendLink.php
找到第13行..
CODE:
$wsql = " where ischeck=1 "; 
[Copy to clipboard]
将1改为2就行了.
11.11更新过后,取消了inc_fun_SpGetFriendLink.php这个文件的调用.
所以只须要打开inc_arcpart_view.php
在410行附近
CODE:
    $wsql = " where ischeck=1 ";
    if($type=="p_w_picpath") $wsql .= " And logo<>'' ";
    else if($type=="text") $wsql .= " And logo='' ";
    else $wsql .= "";
[Copy to clipboard]
同样将where ischeck=1改为2就可以
3.1LIT版广告名称修改后无效的解决办法
http://bbs.dedecms.com/read.php?tid=7135
看4楼的回贴.
dede新版如何去掉列表的文章摘要
删除[field:info/]
关于后台登陆验证码样式的修改
http://bbs.dedecms.com/read.php?tid=6244
当文章描述中出现的英文长度大于table的宽度时,会搞的很难看
[field:textlink /]
改为
<a href='[field:arcurl /]'>[field:title function='cn_substr(@me,30)' /]</a>
新建频道模型教程
http://bbs.dedecms.com/read.php?tid=5972
dedecms实现列表页双样式
<table width='100%>
{dede:list type='full'}
<tr>
<td class='[field:ID function='MagicVar("arch2","arch2")'/]'><b>[field:typelink /] [field:textlink /]</b>点击:[field:click /]([field:stime /])</td>
</tr>
{/dede:list}
</table>
我想实现一个功能,就是在文章列表中(模板list_article)如果文章有缩略图就显示缩略图,没有的话则直接显示文章列表而不显示“没有缩略图”的图片。
dedecms的扩展是用function形式的,因为加入if这种结构太占用资源,如果你有必要,你可以这样:
[field:picname function="GetMyPic('@me')"/]
在 inc_functions.php 里定义一个函数
function GetMyPic($img)
{
if($img=="") return "";
else return "<img src='$img' width='120' height='100' border='0'>";
}
这样来处理
这种做法可能会有点不便,但好处是既达到扩展目的,又不会占用太大资源,又不影响模板结构,实现真正的模板与代码分离
点击图片进入下一页 
打开include/inc_archives_view.php
大概在444行左右,找到
$this->Fields[$this->SplitPageField]=$this->Fields[$this->SplitPageField];
注释掉,改为
$this->Fields[$this->SplitPageField]=$this->ClickPicNext($this->Fields[$this->SplitPageField]);
然后,最后加上函数,注意在最后一个括号里面!
//把图片替换成链接
//----------------------------
function ClickPicNext(&$body)
{
if($this->NowPage!=$this->TotalPage){
  $lPage=$this->NowPage+1;
  $body=preg_replace("/<(img|IMG)(.*)(src|SRC)=[\"|'| ]{0,}((.*)>)/isU","<a href='".$this->NameFirst."_".$lPage.".".$this->ShortName."'>"."\${0}"."</a>",$body);
  //$body="<a href='".$this->NameFirst."_".$lPage.".".$this->ShortName."'>".$body."</a> ";
}else{
  if($this->GetNext()){
    $body=preg_replace("/<(img|IMG)(.*)(src|SRC)=[\"|'| ]{0,}((.*)>)/isU","<a href='".$this->GetNext()."'>"."\${0}"."</a>",$body);
    //$body="<a href='".$this->GetNext()."'>".$body."</a> ";   
  }
}
  return $body;
}
自动地把文章中的图片替换为下一页的链接,如果是最后一页,则为下一篇!
注意:先要按下面的改法,把上一篇下一篇分开才行!
[dede3.1][改法]上一篇下一篇分开调用,且限定文章所在栏目内而不是现在的全站。
http://bbs.dedecms.com/read.php?tid=5051 
在文章列表中,有的标题被截断了,用什么样的代码可以让鼠标在上面的时候可以显示完整的文件名?
{dede:arclist row=16 orderby=pubdate col=1 typeid=3}
<li>· <a href="[field:arcurl /]" title ="[field:title/]">[field:title function="cn_substr('@me',30)" /]</a></li>
{/dede:arclist}
怎么样在文章名前面显示所属的文章栏目?
{dede:arclist row=10 orderby=pubdate}
·[field:typelink/] [field:textlink/]<br/>
{/dede:arclist}
生成的文章文件名能不能增加MD5加密
自己改一下,这种属于典型的无聊需求吧
include/inc_channel_unit_functions.php
.
[field:writer /]怎么没有用
lit版inc_arcpart_view.php没有读取附加表
修改include\inc\inc_fun_SpGetArcList.php第120行,在后面加 arc.writer,
当然你也可以加入你还想引入的附加表内容如:
arc.writer,arc.source,arc.shorttitle,
新安装的DEDECMS3.0.1,第一次登陆就说我密码错误!
你要查一下是否有 dede_admin 这个表,如果有,看看有没有数据,
如果用户名和密码没有不允许的符号的话,
一般是服务器可能能无法完成安装的SQL导入才可能会提示用户名不存在
手工加个用户就OK了.
也可以在数据库中删除表dede_admin,然后重新安装即可
关于listpage分页在生成会有表格的修改 
搜索 
//获取静态的分页列表
在下面的几行可以看到分页的一些东东
关于栏目多风格和系统底层模版的问题 
用arclist
{dede:arclist
typeid='' row='' col='' titlelen='' 
infolen='' imgwidth='' imgheight='' listtype='' orderby='' keyword=''}
自定义样式模板(InnerText)   //这里定义你显示的样式..不要修改底层模板了..免得你自己麻烦.
{/dede:arclist}
另外栏目的模板可以不使用系统默认的{style}/list_article.htm
你可以手工指定栏目的封面模板或是列表模板嘛..列如:{style}/list_class1.htm
{style}/list_class2.htm
等.这样就可以多风格了嘛.
用dedecms做小说站的思路 
1、新建两个模型
book模型和章节模型
2、重新写档案发布程序,关键把两个模型关联起来,而现在提供内容模型的cmsware 和dede都是办不到的,而dede自建频道提供的档案发布程序项可以很好的利用。重新些这四个文件(两个界面和两个提交后处理的程序)即可。
3、如果要做成起点中文网哪种模式,那就要在member目录下写关于投稿的程序,以及在plus里面写业务模式如计费、计点等功能的程序。
其实, dede只是一个内容发布的框架,提供的后台工具只针对管理员而已,用户完全可以自我定制各种模型,不过要对dede熟悉一点而已。
能写程序的不妨一试。
为什么我的自定义标记总是被当做文本来输出
标记里要加上 ismake='yes' 属性
对图片SEO的一些思考,
<a href='[field:arcurl /]'><img src='[field:picname /]' alt='[field:title /]' border='0' width='imgwidth' height='imgheight'></a>
参考arclist标记的说明,,
dede编辑器的问题..从WORD复制进去的错误
复制后安 工具栏 上那个右下角有黄色T的粘贴按钮~~~移上去有提示的,无格式粘贴 
标签的定义放在什么地方的
凡是include里的文件,有什么 ***view.php 都是控制视图的
关于自动分页的问题
自动分页的大小为只能在2-5之前
3 就是每个分页为3K的意思。
这个跟动易的不一样,动易的是字节,所以你可以写2000 或则 3000 DEDE的是K 所以,你只能写 2或则3,我的错误在,我写成2000K!汗一个,
这在DEDE里的意思是,一个分页允许到2M !自然不成功
关于分页标题
内容部分如下格式即可:
分页标题1#e#
第1页内容
#p#分页标题2#e#
第2页内容
#p#分页标题3#e#
第3页内容
#p#分页标题4#e#
第4页内容






附加选项: 下载远程图片和资源 怎么关闭啊???
dede/article_add.php 和 article_edit.php中找到(如果是其他的模型找到对应的添加和修改文件)
<td width="90"> 附加选项:</td>
    <td> <input name="remote" type="checkbox" class="np" id="remote" value="1" checked>
    下载远程图片和资源
把value改成0 删除checked
3.1B2///channelArtlist和arclist的BUG暂时解决方案
修正所有栏目列表都一样和channelArtlist下arclist标签无法自定义
打开include/inc_arcpart_view.php
在207行找到
else $typeid = 0;
然后把他删掉
---------------------
再打开include/inc/inc_fun_SpGetChannelList.php
在第66行找到
$ctag->GetAtt('innertext')
改为
$ctag->GetInnerText()
即可。
如果有问题的,也可以加群:18176791
呵呵.能看到这里.说明你是真心做站!祝你成功!!

PHP 相关文章推荐
PHP生成HTML静态页面实例代码
Aug 31 PHP
php 无限分类的树类代码
Dec 03 PHP
php数组函数序列之in_array() - 查找数组中是否存在指定值
Nov 07 PHP
hadoop常见错误以及处理方法详解
Jun 19 PHP
apache中为php 设置虚拟目录
Dec 17 PHP
PHP获取ip对应地区和使用网络类型的方法
Mar 11 PHP
WordPress中注册菜单与调用菜单的方法详解
Dec 18 PHP
PHP简单遍历对象示例
Sep 28 PHP
thinkPHP中验证码的简单实现方法
Dec 05 PHP
php实现XML和数组的相互转化功能示例
Feb 08 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
Apr 04 PHP
dedecms后台验证码总提示错误的解决方法
Mar 21 #PHP
dedecms中显示数字验证码的修改方法
Mar 21 #PHP
PHP的分页功能
Mar 21 #PHP
完美解决dedecms中的[html][/html]和[code][/code]问题
Mar 20 #PHP
自动生成文章摘要的代码[PHP 版本]
Mar 20 #PHP
关于BIG5-HKSCS的解决方法
Mar 20 #PHP
php中支持多种编码的中文字符串截取函数!
Mar 20 #PHP
You might like
编写漂亮的代码 - 将后台程序与前端程序分开
2008/04/23 PHP
php addslashes和mysql_real_escape_string
2010/01/24 PHP
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
php获取目标函数执行时间示例
2014/03/04 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
PHP脚本自动识别验证码查询汽车违章
2016/12/20 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
JavaScript实用技巧(一)
2010/08/16 Javascript
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
JavaScript排序算法之希尔排序的2个实例
2014/04/04 Javascript
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
vue二级路由设置方法
2018/02/09 Javascript
js经验分享 JavaScript反调试技巧
2018/03/10 Javascript
vue实现通讯录功能
2018/07/14 Javascript
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
简述Python中的进程、线程、协程
2016/03/18 Python
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
python使用flask与js进行前后台交互的例子
2019/07/19 Python
python日志模块logbook使用方法
2019/09/19 Python
PyTorch 中的傅里叶卷积实现示例
2020/12/11 Python
python 三种方法提取pdf中的图片
2021/02/07 Python
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
"火柴棍式"程序员面试题
2014/03/16 面试题
Java中各种基本数据类型的默认值都是什么
2016/12/22 面试题
六查六看自查材料
2014/02/17 职场文书
单位委托函范文
2015/01/29 职场文书
介绍信的写法
2015/01/31 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
小学见习报告
2015/06/23 职场文书
2016关于军训的心得体会
2016/01/11 职场文书
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL
Apache Hudi 加速传统的批处理模式
2022/04/24 Servers