phpcms文章调用的各种方式
[ 2016/01/29, Phpcms , 3306阅, 0评 ]

1.官方默认模板调用方式

  1. {pc:content action="lists" catid="$catid" num="25" order="id DESC"}
  2. <ul>
  3. {loop $data $r}
  4. <li><span>{date('Y-m-d H:i:s',$r[inputtime])}</span><a href="{$r[url]}"{title_style($r[style])}>{$r[title]}</a></li>
  5. {/loop}
  6. </ul>
  7. <div>{$pages}</div>
  8. {/pc}

2.调用相同模型下多个栏目的文章

a.这种方法的好处:可以想取那个栏目可以自定义;缺点:要写多个id,后台增加了栏目的话得再把id写进去。

  1. {pc:get sql="SELECT * from v9_news where status=99 and catid in(21,22,23,24,25) thumb!='' order by id DESC" num="7" return="data"}
  2. {loop $data $r}
  3. <li><a href="{$r[url]}" title="{$r[title]}" target="_blank">{str_cut($r['title'],40)}({date('m-d',$r[inputtime])})</span></a></li>
  4. {/loop}
  5. {/pc}

b.根据父栏目id,如上面的21,22,23,24,25都是 15下面的子栏目,可以这样写

  1. {loop subcat(15) $k $v}
  2. {php $subcatid[] = $k;}
  3. {/loop}
  4. {php $subcatid = implode(',', $subcatid);}
  5. {pc:get sql="SELECT * from v9_news where status=99 and catid in ($subcatid) order by id DESC" num="7" return="data" }
  6. {loop $data $r}
  7. <li>
  8. <a href="{$CATEGORYS[$r[catid]][url]}">[{$CATEGORYS[$r[catid]][catname]}]</a>
  9. <a href="{$r[url]}" title="{$r[title]}" target="_blank">{str_cut($r['title'],40)}</a>
  10. <em>[{date('Y-m-d',$r[inputtime])}]</em>
  11. </li>
  12. {/loop}
  13. {/pc}

好处:只要写一个父栏目id,自动取下级子栏目id;缺点:循环父栏目下所有的子栏目id,如果某个子栏目的内容不想显示的话,不好实现。

3.调取某个模型下的最新文章

  1. {pc:get sql="SELECT a.title,a.catid,a.inputtime,b.catid,b.catname,a.url as turl,b.url as curl,a.id FROM `v9_news` a,`v9_category` b WHERE a.catid=b.catid ORDER BY `a`.`id` DESC" num="9" cache="300"}
  2. {loop $data $r}
  3. 发布时间:{date('Y-m-d H:i:s',$r[inputtime])}<br>
  4. 所属分类:<a href="{$r[curl]}">{$r[catname]}</a><br>
  5. 标题链接:<a href="{$r[turl]}">{$r[title]}</a>
  6. {/loop}
  7. {/pc}

4.调用被推荐且指定栏目的文章

调用news模型中“被推荐到posid为1和2的推荐位且栏目id为6和9”的文章,start="0"表示从第一条开始调用。

  1. {pc:get sql="SELECT * FROM v9_news WHERE id IN (SELECT id FROM v9_position_data WHERE posid in(1,2) and catid in(6,9)) order by listorder DESC" cache="3600" start="0" num="5" return="data"}
  2. {loop $data $n $r}
  3. <li><a href="{$r[url]}" target="_blank">{$r[title]}</a></li>
  4. {/loop}
  5. {/pc}

5.get方式直接用sql查询调用

用phpcms提供的get操作sql非常好用,它跳出了官方内置各种调用方式的限制,可自由灵活的按需使用。

  1. {pc:get sql="select * from v9_news where catid=6"}
  2. {pc:get sql="select * from v9_news where catid=6 and status=99 order by updatetime desc" num="5" page="$page"}
  3. {pc:get sql="select * from v9_news where catid in(6,9) and status=99 order by updatetime desc" num="5" page="$page"}

6.修改默认的{pc:content action="lists"让它能调用多个栏目的文章(同模型)

文件位置:phpcms\modules\content\classes\content_tag.class.php,在public function lists($data)函数中

  1. $catid = intval($data['catid']);
  2. if(!$this->set_modelid($catid)) return false;
  3. if(isset($data['where'])) {
  4. $sql = $data['where'];
  5. } else {
  6. $thumb = intval($data['thumb']) ? " AND thumb != ''" : '';
  7. if($this->category[$catid]['child']) {
  8. $catids_str = $this->category[$catid]['arrchildid'];
  9. $pos = strpos($catids_str,',')+1;
  10. $catids_str = substr($catids_str, $pos);
  11. $sql = "status=99 AND catid IN ($catids_str)".$thumb;
  12. } else {
  13. $sql = "status=99 AND catid='$catid'".$thumb;
  14. }
  15. }
  16.  
  17. //修改为:
  18.  
  19. $catid = $data['catid'];
  20. if(isset($data['where'])) {
  21. $sql = $data['where'];
  22. } else {
  23. $thumb = intval($data['thumb']) ? " AND thumb != ''" : '';
  24. if(strpos($catid,',')){
  25. $catidd =explode(",",$catid);
  26. if(!$this->set_modelid($catidd[0])) return false;
  27. $sql = "status=99 AND catid IN ($catid)".$thumb;
  28. } elseif ($this->category[$catid]['child']){
  29. if(!$this->set_modelid($catid)) return false;
  30. $catids_str = $this->category[$catid]['arrchildid'];
  31. $pos = strpos($catids_str,',')+1;
  32. $catids_str = substr($catids_str, $pos);
  33. $sql = "status=99 AND catid IN ($catids_str)".$thumb;
  34. } else {
  35. if(!$this->set_modelid($catid)) return false;
  36. $sql = "status=99 AND catid='$catid'".$thumb;
  37. }
  38. }

修改后的调用方式:{pc:content action="lists" catid="6,7,8" num="25" order="id DESC"}

有朋自远方来...评论一下呗O(∩_∩)O