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 相关文章推荐
Base64在线编码解码实现代码 演示与下载
Jan 08 PHP
php数据库抽象层 PDO
May 07 PHP
PHP explode()函数用法、切分字符串
Oct 03 PHP
解析zend Framework如何自动加载类
Jun 28 PHP
php实现文件下载(支持中文文名)
Dec 04 PHP
Thinkphp中import的几个用法详细介绍
Jul 02 PHP
php实现对两个数组进行减法操作的方法
Apr 17 PHP
round robin权重轮循算法php实现代码
May 28 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
Apr 27 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
Sep 10 PHP
PHP unset函数原理及使用方法解析
Aug 14 PHP
PHP7 新增功能
Mar 09 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
浅析php与数据库代码开发规范
2013/08/08 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
jQuery 处理网页内容的实现代码
2010/02/15 Javascript
jquery中ajax使用error调试错误的方法
2015/02/08 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
基于JavaScript实现TAB标签效果
2016/01/12 Javascript
jquery-mobile基础属性与用法详解
2016/11/23 Javascript
javascript实现鼠标点击页面 移动DIV
2016/12/02 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
ionic实现底部分享功能
2017/05/11 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
jQuery实现炫丽的3d旋转星空效果
2018/07/04 jQuery
vue组件横向树实现代码
2018/08/02 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
vue使用nprogress实现进度条
2019/12/09 Javascript
JavaScript如何操作css
2020/10/24 Javascript
[52:57]2014 DOTA2国际邀请赛中国区预选赛 LGD-CDEC VS HGT
2014/05/21 DOTA
python使用scrapy解析js示例
2014/01/23 Python
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
浅析Python函数式编程
2018/10/06 Python
python消费kafka数据批量插入到es的方法
2018/12/27 Python
对python过滤器和lambda函数的用法详解
2019/01/21 Python
python实现支付宝转账接口
2019/05/07 Python
利用Python发送邮件或发带附件的邮件
2020/11/12 Python
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
雅诗兰黛旗下走天然植物路线的彩妆品牌:Prescriptives
2016/08/14 全球购物
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
2014年三八妇女节活动总结
2014/03/01 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
六一儿童节主持开场白
2015/05/28 职场文书
SpringDataJPA在Entity中常用的注解介绍
2021/12/06 Java/Android
PyTorch中permute的使用方法
2022/04/26 Python