广

织梦CMS教程

  • 帝国cms教程
  • 织梦CMS教程
  • PHP CMS教程
  • ECSHOP教程
  • WordPress教程
  • Discuz教程
  • CMS学习

    DEDECMS通过动态关键字获取任意栏目文章

    2018-04-02 20:47:59 次阅读 稿源:互联网
    广告

     在进行dedecms二次开发中,dede的模板引擎虽然能满足大部分的需求,但是有一些还是无法满足,不明白官方为什么不做的更细化一些,既然官方没有,那就只能自己动手了;

    dede默认的调取相关文章方法,只能用于文章页,且只能调取本栏目下的,并且keyword是写死的,如果要通过keyword调取别的栏目相关文章,而且每篇文章的keyword都不同,动态的keyword就无法实现,所以自己写了一个函数,懒得去配置,就写入了/include/common.func.php。
    1. /** 
    2.  * 根据关键字调取文章 
    3.  * $limits  SQL语句参数  从第几条开始获取 
    4.  * $limite  SQL语句参数  获取记录条数 
    5.  * $orderby  SQL语句排序字段 
    6.  * $orderway SQL语句排序方式 asc或desc 
    7.  * $showImg 是否需要图片 
    8.  * $titleLen 标题长度 
    9.  * $typeid 栏目id,可以调用多栏目  如  8~9~10 
    10.  * $keyWord 获取的关键字 
    11.  * $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> 
    12.  */ 
    13. function ShowKeyWordArc($limits$limite$orderby$orderway$showImg$titleLen$typeid$keyWord$css) { 
    14.     $dsql = new DedeSql ( false ); 
    15.  
    16.     $typeid = str_replace ( '~'','$typeid ); 
    17.     $sql = " xc_archives.typeid in (" . $typeid . ")"
    18.     //关键字分词技术 
    19.     $ks = explode ( " "$keyWord ); 
    20.     foreach ( $ks as $k ) { 
    21.         $k = trim ( $k ); 
    22.         if ($k != "") { 
    23.             $kwsqlarr [] = " (xc_archives.title like '%$k%') "
    24.             $kwsqlarr [] = " (xc_archives.keywords like '%$k%') "//如果需要相关到其它文章的关键字,解除此行注释 
    25.         } 
    26.  
    27.     } 
    28.     $where = implode ( ' OR '$kwsqlarr ); 
    29.     $sql = "Select tp.namerule,tp.typedir,xc_archives.*  From xc_archives left join xc_arctype tp on xc_archives.typeid=tp.ID  where " . $sql . " 
    30.     and ((xc_archives.title like '%" . $keyWord . "%'or  $where) order by " . $orderby . " " . $orderway . " limit " . $limits . "," . $limite
    31.  
    32.     $dsql->SetQuery ( $sql ); 
    33.     $dsql->Execute (); 
    34.     $rstr = ""
    35.  
    36.     while ( $row = $dsql->GetObject () ) { 
    37.         $ss = $css
    38.         $url = GetFileUrl ( $row->id, $row->typeid, $row->senddate, $row->title, $row->ismake, $row->arcrank, $row->namerule, $row->typedir, $row->money ); 
    39.         if ($titleLen != 0) { 
    40.             $title = cn_substr ( $row->title, $titleLen ); 
    41.         } else { 
    42.             $title = $row->title; 
    43.         } 
    44.         if ($showImg == 0) { 
    45.             //<h2><a href=/"^link^/">^title^</a></h2> 
    46.             $ss = str_replace ( '^link^'$url$ss ); 
    47.  
    48.             $ss = str_replace ( '^title^'$title$ss ); 
    49.  
    50.         } else { 
    51.             //<li><a href=/"^link^/" target=/"_blank/"><img src=/"^img^/" onerror=/"this.src=/'../images/defaultpic.gif/'/" alt=/"^title^/"/>^title^</a> 
    52.             if ($row->litpic != "") { 
    53.                 $ss = str_replace ( '^img^'$row->litpic, $ss ); 
    54.             } else { 
    55.                 $ss = str_replace ( '^img^'''$ss ); 
    56.             } 
    57.             $ss = str_replace ( '^link^'$url$ss ); 
    58.             $ss = str_replace ( '^title^'$title$ss ); 
    59.  
    60.         } 
    61.         $ss = str_replace ( '^date^', MyDate ( 'm-d'$row->pubdate ), $ss ); 
    62.  
    63.         $rstr = $rstr . $ss
    64.  
    65.     } 
    66.  
    67.     retu $rstr

     模板调取函数的方法:

    1. {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>")'/} 

     

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告