日期:2014-05-17  浏览次数:20625 次

求{dede:sql}标签脚本内写php原生代码的方法!
{dede:sql sql='...' runphp='yes'}

echo 'fuck';

{/dede:sql}

我这么写没用,应该怎样才可以在 {dede:sql}标签脚本内写php原生代码 ??

------解决方案--------------------
以下是dede中的php应用,希望对你有帮助
调用tag: {dede:field name='keywords' runphp='yes' }
if(!empty(@me)){
$kws = explode(' ',@me);
@me = "";
foreach($kws as $k){
@me .= "<a href='/tag.php?/$k/'>$k</a> ";
}
@me= str_replace('+', ' ',trim(@me));
}
{/dede:field} 
dede在首页调用文章内容 
-------------------------------------------------
方法一:{dede:sql sql="SELECT aid,typeid,body,body1, body2,body3,body4,body5 FROM 
`dede_addonarticle` where typeid=2 ORDER BY `aid` DESC LIMIT 0 , 1"}
[field:body /] [field:body1 /] [field:body2 /] [field:body3 /] [field:body4 /] [field:body5 
/]
{/dede:sql}
方法二:{dede:sql sql="SELECT aid,typeid,body FROM `dede_addonarticle` where typeid=2 ORDER 
BY `aid` DESC LIMIT 0 , 1"}
[field:body /]
{/dede:sql}
调用说明:其中typeid=2,栏目ID号,表示调用此ID栏目内的文章,换成aid=1则表示调用的aid为1的文
章(具体哪篇文章aid是多少,要进数据库看,从后台看也可以),DESC表示排序,按从大到小排,换成
ASC则按从小到大排序,LIMIT 0 , 1表示调用数量,也可以写成数量LIMIT 1,这个1代表调用的数量。


列表隔5行加一行线: 
{dede:list pagesize='50'}
<LI><a href="[field:arcurl /]" title="[field:title function='htmlspecialchars(@me)'/]" 
target=_blank>[field:title function="cn_substr(@me,48)"/]</a>[field:pubdate 
runphp='yes'] 
$a="<font color=red>".strftime('%m-%d',@me)."</font>";
$b=strftime('%m-%d',@me);
$ntime = time(); 
$day3 = 3600 * 24;
if(($ntime - @me) < $day3) @me = $a;
else @me =$b; 
[/field:pubdate]<br>
[field:global name=autoindex runphp="yes"]
if(@me%5==0)@me="<hr />";
else @me="";
[/field:global]
{/dede:list}
<DIV class="line2 m1 m3"></DIV></LI> 
--------------------------------------------
最新 文章列表 “隔行换色” 的方法 
{dede:arclist orderby=pubdate titlelen='26' row='10'} 
[field:global runphp='yes' name=autoindex]
$a="<div id='a'>";
$b="<div id='b'>";
if ((@me%2)==0) @me=$a;
else @me=$b;
[/field:global] 
<ul>
<li>[field:title/]</li>
</ul>
</div>
{/dede:arclist} 
--------------------------------------------
广告代码::{dede:myad name='广告位标识'/}
24小时内更新的文章时间显示为红色: 
[field:pubdate runphp='yes'] 
$a="<font color=red>".strftime('%m-%d',@me)."</font>";
$b=strftime('%m-%d',@me);
$ntime = time(); 
$day3 = 3600 * 24;
if(($ntime - @me) < $day3) @me = $a;
else @me =$b; 
[/field:pubdate] 
实现“文章标题-2级栏目-1级栏目-网站名”形式 
{dede:field name='title'/}-{dede:field name='position' runphp='yes'}
$tc="-"; //分隔符
$tw=$GLOBALS['cfg_list_symbol']; //调用位置分隔符
@me=html2text(@me); //去除html标签
$tf=split($tw,@me); //分解成数组
for($ta=(count($tf)-2);$ta>=1;$ta--){ //循环赋值给$tk
$tk.=trim($tf[$ta]).$tc;
}
$tk=substr($tk,0,-1);
@me=$tk; //赋值给@me
{/dede:field}-{dede:global name='cfg_webname'/}

发布的文章显示红色日期或加上new字或new小图片
给近三天(或当天)发布的文章显示红色日期或加上new字或new小图片等。
都是围绕pubdate做文章,写扩展的。
第2、3要注意的问题是:如:"<img src='new.gif' />中不能用双引号,否则不行。
如果要给当天的加,把 3600 * 24 * 3 改为 3600 * 24  即可。
1、==========红色的日期========
[field:pubdate runphp='yes'] 
$a="<font color=red>".strftime('%m-%d',@me)."</font>";
$b=strftime('%m-%d',@me);
$ntime = time();