在进行dedecms二次开发中,dede的模板引擎虽然能满足大部分的需求,但是有一些还是无法满足,不明白官方为什么不做的更细化一些,既然官方没有,那就只能自己动手了;
- /**
- * 根据关键字调取文章
- * $limits SQL语句参数 从第几条开始获取
- * $limite SQL语句参数 获取记录条数
- * $orderby SQL语句排序字段
- * $orderway SQL语句排序方式 asc或desc
- * $showImg 是否需要图片
- * $titleLen 标题长度
- * $typeid 栏目id,可以调用多栏目 如 8~9~10
- * $keyWord 获取的关键字
- * $css 模板样式 如 <h2><a href=/"^link^/">^title^</a></h2> 或者 <li><a href=/"^link^/" target=/"_blank/"><img src=/"^img^/" onerror=/"this.src=/'../images/defaultpic.gif/'/" alt=/"^title^/"/>^title^</a>
- */
- function ShowKeyWordArc($limits, $limite, $orderby, $orderway, $showImg, $titleLen, $typeid, $keyWord, $css) {
- $dsql = new DedeSql ( false );
- $typeid = str_replace ( '~', ',', $typeid );
- $sql = " xc_archives.typeid in (" . $typeid . ")";
- //关键字分词技术
- $ks = explode ( " ", $keyWord );
- foreach ( $ks as $k ) {
- $k = trim ( $k );
- if ($k != "") {
- $kwsqlarr [] = " (xc_archives.title like '%$k%') ";
- $kwsqlarr [] = " (xc_archives.keywords like '%$k%') "; //如果需要相关到其它文章的关键字,解除此行注释
- }
- }
- $where = implode ( ' OR ', $kwsqlarr );
- $sql = "Select tp.namerule,tp.typedir,xc_archives.* From xc_archives left join xc_arctype tp on xc_archives.typeid=tp.ID where " . $sql . "
- and ((xc_archives.title like '%" . $keyWord . "%') or $where) order by " . $orderby . " " . $orderway . " limit " . $limits . "," . $limite;
- $dsql->SetQuery ( $sql );
- $dsql->Execute ();
- $rstr = "";
- while ( $row = $dsql->GetObject () ) {
- $ss = $css;
- $url = GetFileUrl ( $row->id, $row->typeid, $row->senddate, $row->title, $row->ismake, $row->arcrank, $row->namerule, $row->typedir, $row->money );
- if ($titleLen != 0) {
- $title = cn_substr ( $row->title, $titleLen );
- } else {
- $title = $row->title;
- }
- if ($showImg == 0) {
- //<h2><a href=/"^link^/">^title^</a></h2>
- $ss = str_replace ( '^link^', $url, $ss );
- $ss = str_replace ( '^title^', $title, $ss );
- } else {
- //<li><a href=/"^link^/" target=/"_blank/"><img src=/"^img^/" onerror=/"this.src=/'../images/defaultpic.gif/'/" alt=/"^title^/"/>^title^</a>
- if ($row->litpic != "") {
- $ss = str_replace ( '^img^', $row->litpic, $ss );
- } else {
- $ss = str_replace ( '^img^', '', $ss );
- }
- $ss = str_replace ( '^link^', $url, $ss );
- $ss = str_replace ( '^title^', $title, $ss );
- }
- $ss = str_replace ( '^date^', MyDate ( 'm-d', $row->pubdate ), $ss );
- $rstr = $rstr . $ss;
- }
- retu $rstr;
- }
模板调取函数的方法:
- {dede:field name='typename' function='ShowKeyWordArc(1,9,"click","desc",0,30,"8~9~10~11~173","@me","<li><a href=/"^link^/" target=/"_blank/">^title^</a></li>")'/}
一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。