-
Nov9日
-
从dedecms模板中调用tipask数据很简单,用dede:sql这个标签就可以调用,类似的语法格式如下:
{dede:sql sql="SELECT * FROM `fenyunask`.`ask_question` where status=2 and cid=55 ORDER BY rand() LIMIT 6"}<li class="d"><a href="/ask/?q-[field:id/].html">[field:title function='(strlen("@me")>30 ? cn_substr("@me",30)."…":"@me")'/]</a></li>{/dede:sql}
其中的fenyunask是tipask的表名称,下面同样,cid代表的是栏目的ID,如果不区分栏目把 and cid=55 给删除了就可以了。status=2 的意思是状态为已解决的,如果调用其他状态的,自行修改。如果调用最新的那就删除该条件语句即可。问题在于,如何去在文章页模板中,根据不同的栏目来获取不同的问答内容那?像我们的站有大概50多个栏目,当初设计的时候没有考虑太多,问答调用是空着的,然后就没有管,现在想调用对应的问答,笨办法是不同的栏目用不同的模板,但是50以上个栏目的代价就太大了。于是写了下面的代码测试了下,通过了。给大家分享下:
{dede:field name='typeid' runphp='yes'}$tid=@me;if ($tid==52){ $tsql = new DedeSql(false); $tsql->SetQuery("SELECT * FROM `fenyunask`.`ask_question` where status=2 and cid=55 ORDER BY rand() LIMIT 4"); $tsql->Execute('t'); while($row = $tsql->GetArray('t',MYSQL_ASSOC)) { $tit=$row['title']; $tit=strlen($tit)>30 ? cn_substr($tit,30)."…":$tit; $link.="<li><a href=/ask/?q-".$row['id'].".html title=".$row['title'].">".$tit."</a></li>"; }}else if($tid==52){ $tsql = new DedeSql(false); $tsql->SetQuery("SELECT * FROM `fenyunask`.`ask_question` where status=2 and cid=55 ORDER BY rand() LIMIT 4"); $tsql->Execute('t'); while($row = $tsql->GetArray('t',MYSQL_ASSOC)) { $tit=$row['title']; $tit=strlen($tit)>30 ? cn_substr($tit,30)."…":$tit; $link.="<li><a href=/ask/?q-".$row['id'].".html title=".$row['title'].">".$tit."</a></li>"; }}else{ $tsql = new DedeSql(false); $tsql->SetQuery("SELECT * FROM `fenyunask`.`ask_question` where status=2 ORDER BY rand() LIMIT 4"); $tsql->Execute('t'); while($row = $tsql->GetArray('t',MYSQL_ASSOC)) { $tit=$row['title']; $tit=strlen($tit)>30 ? cn_substr($tit,30)."…":$tit; $link.="<li><a href=/ask/?q-".$row['id'].".html title=".$row['title'].">".$tit."</a></li>"; }} @me=$link;{/dede:field}
其实懂PHP的人看一遍大概就知道怎么回事了。很简单,包含了获取当前栏目ID的办法,判断栏目ID来执行对应的SQL语句。当然上面的这个代码有很多可以优化和完善的地方,初步先这样测试的。比如可以用case判断,比如可以把sql语句简化了,调用一个参数就可以。这个细节部分还是大家自己完善把,此文仅仅是抛砖引玉了。我继续完善这个代码和调用。UP:刚才写好了。顺手贴上来把,大家都省事了:
{dede:field name='typeid' runphp='yes'}$tid=@me;switch ($tid){case 52: $cids="cid=55"; break;case 52: $cids="cid=53"; break;default: $cids="1=1";} $tsql = new DedeSql(false); $tsql->SetQuery("SELECT * FROM `fenyunask`.`ask_question` where status=2 and $cids ORDER BY rand() LIMIT 4"); $tsql->Execute('t'); while($row = $tsql->GetArray('t',MYSQL_ASSOC)) { $tit=$row['title']; $tit=strlen($tit)>30 ? cn_substr($tit,30)."…":$tit; $link.="<li><a href=/ask/?q-".$row['id'].".html title=".$row['title'].">".$tit."</a></li>"; }@me=$link;{/dede:field}
文章整理:阿桑笔记,本文地址:http://www.sanglog.com/post/16.html

- 评论:(2)
- 引用通告
【已有2位网友发表了看法】点击这里获取该日志的TrackBack引用地址