如何在discuz X3.2模板htm文件里自由写php代码,和一般php嵌入html代码不同

2014年9月26日 发表评论 阅读评论

今天doa闪电站小猪试验了一下discuz彩色标签云功能,说错了,不是标签云,只是彩色标签。非常好看:http://bbs.shandian.biz/misc.php?mod=tag,需要直接在htm模板文件/public_html/template/default/tag/tag.html里面写入php代码。不得不参考网上的说明写法才能成功。

如何在discuz X2模板htm文件里自由写php代码

原网址:http://feilong.org/discuz-x-how-to-write-php

feilong.org 2011-08-17 11:54:32 2,734

discuzX或者说discuz系列,模板标签写法很奇怪,模板文件是htm后缀,以为是静态页面呢,但是后台CSS和模板更新后,飞龙发现 ./data/template 文件夹下自动多了好多php格式的模板文件,当然还有./data/cache缓存文件夹里也多了一些css和php文件,他们都是你提交更新CSS缓存或模板discuz后自动生成和更新的。

所以写DISCUZ X模板,是万万不可直接在data这个缓存文件夹下直接写的!那么我们如何在discuz里自由写php代码呢?这个问题你在模板里多做试验就慢慢明白了。本日志修订网址:http://feilong.org/discuz-x-how-to-write-php

先举个例子看看:

举例1:某个约歌的封面图片:先取用户上传的封面图片、如没有则取用户的头像,如果头像都没有,则取放在discuz的IMGDIR下的某张图

<!--{eval
$music=fl_get_music($musicid);
$musicface=fl_get_music_face($music);
//echo ' and $musicface='.$musicface;
}-->

飞龙认为这在htm模板里看起来不简洁,而且不方便多处运用。因此飞龙直接写入相关php函数文件:./sourse/function/function_yuege.php

获取某个二维数组记录的某条记录的封面图片:

//某个音乐的封面图片:先取用户上传的封面图片、如没有则取用户的头像,如果头像都没有则取默认头像
function fl_get_music_face($music){
$uid=$music['uid'];//echo $uid;
$avaurl=avatar($uid,big,true);//echo $avaurl;
$imgurl=$music['imgurl']?$music['imgurl']:'';//echo $imgurl;   $faceurl=$imgurl ? $imgurl :$avaurl;//echo $faceurl;
return $faceurl;
}//20110817-0918

现在我们来学习discuz模板标签写法的基础。

举例2:discuz X2内置字符长度截取php函数用法

discuzX2内置截取字符串函数原型: function cutstr($string, $length, $dot = ‘ …’){//飞龙省略,朋友你自己用dreamweaver在discuz X的源程序里搜索下 ‘function cutstr’ 吧呵呵}

<!-- 以下写法都可以用, -->
<!--{eval echo cutstr(strip_tags($meet['meet_info']), 50);}-->(这种写法小猪成功了)
<!--{echo cutstr(strip_tags($meet['meet_info']), 50)}-->(这种写法小猪没成功)
{echo cutstr(strip_tags($meet['meet_info']), 50)}

举例3:写一个discuz X2调用多条记录数据的模板范例,飞龙提示:外围ul标签未写。

<!--{eval $thatmeets=fl_get_meets(1,1,8,1);//此函数参加前面。}-->
<!--{loop $thatmeets $meet}-->
<!--{eval
$theface=fl_get_meet_face($meet,$default='/pic_16.jpg');
$theurl='./yeuge.php/?mod=view&meetid='.$meet['meetid'];
$thesinger=$meet['author'];
$thespace='./home.php?mod=space&uid='.$meet['uid'];
$thesummany=cutstr(strip_tags($meet['meet_info']), 20,'');
}-->
<li><a href="$theurl"><img src="$theface" width="94" height="94" class="imgp" /></a>
<p><a href="$theurl">$thesinger</a></p>
<p>$thesummany</p>
</li>

举例4:…discuz模板里血while 循环语句

  <!-- 1、discuz x 简单循环语句例子 -->   <!--{eval $j=0;   while($j<=4) : $j++;
echo 'this is '.$j."</br>
\n";   endwhile;
}-->   <!-- 2、discuz x 循环语句和条件语句 嵌套 -->   <!--{eval $j=0;   while($j<=4) : $j++;   if($j==1) :
echo 'this is the first ,that is '.$j."</br>
\n";   else :
echo 'this is '.$j."</br>\n";   endif;   endwhile;
}-->   <!-- 3、discuz x 循环语句和条件语句 嵌套,分开写法,方便插入html -->   <!--{eval $j=0;   while($j<=4) : $j++;   if($j==1) :
}-->   This is the first ,that is  $j  You can inser any html here,even variable itself<br />   <!--{eval else : }-->   This is $j You can inser any html here,even variable haha<br />     <!--{eval
endif;   endwhile;
}-->     <!-- 4、discuz x 循环语句和条件语句 嵌套,分开写法,实际用法举例,方便插入html -->   <!--{eval $j=0;   while($j<=4) :   if($j==0) : 
}-->     这是第1个     <!--{eval else : $k=$j+1;}-->   '$j' is 数组序号
'$k' is 第几个,共5个     <!--{eval
endif;   endwhile;
}-->

更新网址:http://feilong.org/discuz-x-how-to-write-php

最后修订:20110926 01:26:55 feilong.org 于广州


转载请注明来自:[MSN Spaces]http://msn.shandian.biz/790.html

  1. 本文目前尚无任何评论.