手机
当前位置:查字典教程网 >编程开发 >php教程 >dedecms中常见问题修改方法总结
dedecms中常见问题修改方法总结
摘要:新手常见问题,此贴是早些时候我发的,在3.1正式版中.有些问题已得到修正,不过仍可作为修改或学习参考请大家花点耐心看完这个吧,这些问题很多人...

新手常见问题,此贴是早些时候我发的,在3.1正式版中.有些问题已得到修正,不过仍可作为修改或学习参考

请大家花点耐心看完这个吧,这些问题很多人都有碰到.何必要不停的发贴子问呢?

另外,看完这个请去你自己的后台看完模板标记参考!!特别是arclist这个标记的参数说明!!

多思考一下问题,多试验一下标记,,学到就是自己的,学不到,谁也帮不到你!!

补充一点..很多标记都可以参考系统默认的模板和模板区的一些好模板,多看标记体会每个标记的用法,

下文如果有您的贴子..感谢您对DEDE的匏礁冻?.

3.1lit最新版当一级栏目为最终列表栏目时,使列表显示其下级栏目的文章的修改

include/inc_arclist_view.php

80行:

$addSql.="And(typeid='".$this->TypeID."'ortypeid2='".$this->TypeID."')";

更改为:

//增加的,用来解决上级列表调用不出下级列表的问题

$ssid=TypeGetSunID($this->TypeID,$this->dsql);

$ssid2=str_replace('typeid','typeid2',$ssid);

//结束增加的

$addSql.="And(typeid='".$this->TypeID."'or".$ssid."ortypeid2='".$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行是Selectcount(*).....

关于那个栏目路径有个{cmspath}

首先说一下{cmspath}的意思,,打开后台"系统配置参数"可以看到第二项,DedeCms安装目录:

这个就是{cmspath}所解析出来的路径,

如果beta2升级到lit,需要手工修改栏目属性,把{cmspath}去除.或者你运行setup升级完之后用lit的所有文件

替换掉之前的B2的所有文件,这样{cmspath}就可以正常解析成你的网站路径

如果你不用{cmspath}这个参数,.可以照下面的修改

执行SQL:updatedede_arctypesettypedir=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:descriptionfunction='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="whereischeck=1";

[Copytoclipboard]

将1改为2就行了.

11.11更新过后,取消了inc_fun_SpGetFriendLink.php这个文件的调用.

所以只须要打开inc_arcpart_view.php

在410行附近

CODE:

$wsql="whereischeck=1";

if($type=="p_w_picpath")$wsql.="Andlogo<>''";

elseif($type=="text")$wsql.="Andlogo=''";

else$wsql.="";

[Copytoclipboard]

同样将whereischeck=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/]

改为

<ahref='[field:arcurl/]'>[field:titlefunction='cn_substr(@me,30)'/]</a>

新建频道模型教程

http://bbs.dedecms.com/read.php?tid=5972

dedecms实现列表页双样式

<tablewidth='100%>

{dede:listtype='full'}

<tr>

<tdclass='[field:IDfunction='MagicVar("arch2","arch2")'/]'><b>[field:typelink/][field:textlink/]</b>点击:[field:click/]([field:stime/])</td>

</tr>

{/dede:list}

</table>

我想实现一个功能,就是在文章列表中(模板list_article)如果文章有缩略图就显示缩略图,没有的话则直接显示文章列表而不显示“没有缩略图”的图片。

dedecms的扩展是用function形式的,因为加入if这种结构太占用资源,如果你有必要,你可以这样:

[field:picnamefunction="GetMyPic('@me')"/]

在inc_functions.php里定义一个函数

functionGetMyPic($img)

{

if($img=="")return"";

elsereturn"<imgsrc='$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]);

然后,最后加上函数,注意在最后一个括号里面!

//把图片替换成链接

//----------------------------

functionClickPicNext(&$body)

{

if($this->NowPage!=$this->TotalPage){

$lPage=$this->NowPage+1;

$body=preg_replace("/<(img|IMG)(.*)(src|SRC)=["|'|]{0,}((.*)>)/isU","<ahref='".$this->NameFirst."_".$lPage.".".$this->ShortName."'>"."${0}"."</a>",$body);

//$body="<ahref='".$this->NameFirst."_".$lPage.".".$this->ShortName."'>".$body."</a>";

}else{

if($this->GetNext()){

$body=preg_replace("/<(img|IMG)(.*)(src|SRC)=["|'|]{0,}((.*)>)/isU","<ahref='".$this->GetNext()."'>"."${0}"."</a>",$body);

//$body="<ahref='".$this->GetNext()."'>".$body."</a>";

}

}

return$body;

}

自动地把文章中的图片替换为下一页的链接,如果是最后一页,则为下一篇!

注意:先要按下面的改法,把上一篇下一篇分开才行!

[dede3.1][改法]上一篇下一篇分开调用,且限定文章所在栏目内而不是现在的全站。

http://bbs.dedecms.com/read.php?tid=5051

在文章列表中,有的标题被截断了,用什么样的代码可以让鼠标在上面的时候可以显示完整的文件名?

{dede:arclistrow=16orderby=pubdatecol=1typeid=3}

<li>·<ahref="[field:arcurl/]"title="[field:title/]">[field:titlefunction="cn_substr('@me',30)"/]</a></li>

{/dede:arclist}

怎么样在文章名前面显示所属的文章栏目?

{dede:arclistrow=10orderby=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的一些思考,

<ahref='[field:arcurl/]'><imgsrc='[field:picname/]'alt='[field:title/]'border='0'width='imgwidth'height='imgheight'></a>

参考arclist标记的说明,,

dede编辑器的问题..从WORD复制进去的错误

复制后安工具栏上那个右下角有黄色T的粘贴按钮~~~移上去有提示的,无格式粘贴

标签的定义放在什么地方的

凡是include里的文件,有什么***view.php都是控制视图的

关于自动分页的问题

自动分页的大小为只能在2-5之前

3就是每个分页为3K的意思。

这个跟动易的不一样,动易的是字节,所以你可以写2000或则3000DEDE的是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中找到(如果是其他的模型找到对应的添加和修改文件)

<tdwidth="90">附加选项:</td>

<td><inputname="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

呵呵.能看到这里.说明你是真心做站!祝你成功!!

【dedecms中常见问题修改方法总结】相关文章:

风格模板初级不完全修改教程

php代码优化及php相关问题总结

PHP rsa加密解密使用方法

php中set_error_handler的用法总结

PHP输出一个等腰三角形的方法

php开发中的页面跳转方法总结

Php部分常见问题总结

php中关于socket的系列函数总结

PHP中路径问题的解决方案

PHP生成唯一订单号的方法汇总

精品推荐
分类导航