zoukankan      html  css  js  c++  java
  • dedecms中常见问题修改方法

      
      新手常见问题,此贴是早些时候我发的,在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‘);

      }https://www.rdredcross.org.cn/plus/view-5663-1.html
      更改为:
      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(dede_archives.typeid=‘".$this->TypeID."‘or dede_archives.typeid2=‘".$this->TypeID."‘)";
      改为:
      //类别ID的条件
      $ssid=TypeGetSunID($this->TypeID,$this->dsql);
      $orwhere.="And(dede_archives.typeid=‘".$this->TypeID."‘or".$ssid."or dede_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);

          rdredcross.org.cn/plus/view-5663-1.html
      改成
      $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没有读取附加表
      修改includeincinc_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标记的说明,, https://www.rdredcross.org.cn/plus/view-5663-1.html
      dede编辑器的问题..从WORD复制进去的错误
      复制后安工具栏上那个右下角有黄色T的粘贴按钮~~~移上去有提示的,无格式粘贴
      标签的定义放在什么地方的
      凡是include里的文件,有什么***view.php都是控制视图的
      关于自动分页的问题
      自动分页的大小为只能在2-5之前
      3就是每个分页为3K的意思。
      这个跟动易的不一样,动易的是字节,所以你可以写2000或则3000 DEDE的是K所以,你只能写2或则3,我的错误在,我写成2000K!汗一个,
      这在DEDE里的意思是,一个分页允许到2M!自然不成功
      关于分页标题

  • 相关阅读:
    [NOIP2011提高组]聪明的质监员
    NOIP 2010 关押罪犯
    题目:埃及分数
    用scanf输入long long 型的数
    poj 1014 Dividing
    Cactus
    SQLite数据库的增删改查代码
    UltraGrid常用方法属性代码
    维护数据表常用SQL语句
    C#备份收藏夹代码
  • 原文地址:https://www.cnblogs.com/zqw111/p/13637271.html
Copyright © 2011-2022 走看看