我想要在dedecms里面实现以下功能,请大神帮我写一段代码,用dedecms标签或者自定义标签。
sql语句是从表中调取一天内的文库下载排行前10名。
[field:id runphp='yes'] $id=@me;@me='';$url=GetOneArchive($id);@me=$url['arcurl'];[/field:id]
这句是根据ID获取文章链接地址
其他应该没什么了。
结构和流程如下:
1、if 语句有下面三种情况。
第一种,条件成立就做。不成立就不做。
if (条件)
endif
第二种,条件成立做“程序一”,不成立做“程序二”。不管条件成不成立都做。
if (条件)
程序一
else
程序二
endif
第二种,嵌套条件语句。第一条件成立做“程序一”,不成立又进行条件二判断,条件二成立做“程序三”,条件二不成立做“程序四”。当然还可进行增加判断条件。视软件情况不同嵌套层级也不一样。
if (条件一)
程序一
else if (条件二)
程序二
else
程序三
endif
2、 switch语句。当switch后面的表达式的计算结果 与case 后的值相同的就执行这个case语句后的程序,执行完成跳出。 break;是跳出这个语句体的词句,有的编程语言一定要加的。 当表达式计算的值没有一个与 case 后面的值相同就执行default 后面语句。
switch (表达式)
{ case 3:
表达式等于3,执行的程序。
(break;)
case 2:
表达式等于3,执行的程序。
(break;)
case 1:
表达式等于3,执行的程序。
(break;)
case 0:
表达式等于3,执行的程序。
(break;)
default:
没有匹配的条件,执行的程序。
}
在\dede\include\extendfuncphp文件中添加如下函数:
function getArticleList($category=0,$order="",$limit="0,200"){
global $dsql;
$query = "SELECT arc,tptypedir,tptypename,tpcorank,tpisdefault,tpdefaultname,tpnamerule,
tpnamerule2,tpispart,tpmoresite,tpsiteurl,tpsitepath
FROM `#@__archives` arc LEFT JOIN `#@__arctype` tp on arctypeid=tpid
where tpid=$category";
//此sql语句我只加了where判断文章所属分类
//其他的order limit 你根据需要自己添加
$dsql->SetQuery($query);
$dsql->Execute('lit');
$arr = array();
$cnt = 0;
$str = "";
while ($row = $dsql->GetArray('lit')) {
if($cnt%4 == 0){
$str = "<div class='css1'>";
}
if($cnt%4 > 0){
$class = "css3";
}else{
$class = "css2";
}
$str = "<span class='"$class"'>"$row['title']"</span>";
$cnt++;
if($cnt%4 == 0){
$str = "</div>";
}
//$row中可用的常用字段如下:$row['id'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'], row['arcrank'],$row['namerule'],$row['typedir'],$row['money'],$row['filename'],$row['moresite'],$row['siteurl'],$row['sitepath']
}
return $str;
}
然后在模板中使用
{dede:field name='typeid' function="getArticleList(@me)" /}
将分类的id传给此函数就可以调用到数据,输出就是你要的格式。
输出内容你修改下php文件,常用字段都给你写在注释里了。
如果可以请也将我昨天给你回答的采纳一下。
0条评论