Dedecms 模板中心

您现在的位置: 首页 > 教程文档 > 常见问题 >

DeDeCMS 新手常见问题

来源:未知 发布时间:2016-06-04热度:
3.1lit最新版当一级栏目为最终列表栏目时,使列表显示其下级栏目的文章的修改 include/inc_arclist_view.php 80行: $addSql .= And (typeid=.$this-TypeID. or typeid2=.$this-TypeID.) ; 更改为: //增加的,用来解决上级列表调用不出下级列表的问题 $ssid...

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 (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);

改成
$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导入才可能会提示用户名不存在

    责任编辑:好织梦