TypechoJoeTheme

Dcr163的博客

统计

PHPCMS列表页where条件默认查找当前栏目下的文章

2019-03-17
/
0 评论
/
1,016 阅读
/
正在检测是否收录...
03/17

在使用PHPCMS的时候,我发现使用内容标签lists的的时候加了where条件会默认调用栏目所属模型的所有文章,下面是我在页面中使用的标签:

{pc:content action="lists" catid="$catid" where="id%2=0" order="id DESC" num="12"}

{loop $data $v}

{/loop}

{/pc}

未修改标签前,查看 /phpcms/modules/content/classes/content_tag.class.php 文件带where条件生成的sql语句都是不带catid,默认调用所属模型下面的所有文章;根据我的需求,只需要取当前栏目或子栏目的所有文章,所以在 content_tag.class.php 这个文件中小小修改了一下:
在文件 public function lists($data) 这个函数里,在
$sql = $data['where'] 
这行代码下方,大概65行,添加下面的代码

//drc 添加了 where 条件没有添加栏目的时候默认调用该栏目下的列表,不调用 模型的新闻 s
if( strpos($sql,'catid=') === false && strpos($sql,'catid =') === false && $data['getmodel'] != 1 ){
    if($this->category[$catid]['child']) {
        $catids_str = $this->category[$catid]['arrchildid'];
        $pos = strpos($catids_str,',')+1;
        $catids_str = substr($catids_str, $pos);
        $sql .= " AND catid IN ($catids_str)";
    } else {
        $sql .= " AND catid='$catid'";
    }
}
//dcr 添加了 where 条件没有添加栏目的时候默认调用该栏目下的列表,不调用 模型的新闻 e

上面代码,意思就是 如果页面标签where条件没有添加catid条件而且不调用所属模型,就默认调用当前栏目的文章;

这样就解决了,phpcms 标签 where条件不调用当前栏目id的问题;如果需要调用所属的模型文章,标签里加一个getmodel="1" 即可


{pc:content action="lists" catid="$catid" where="id%2=0" order="id DESC" num="12" getmodel="1"}
{loop $data $v}
{/loop}
{/pc}



朗读
赞(0)
版权属于:

Dcr163的博客

本文链接:

https://www.dcr163.cn/394.html(转载时请注明本文出处及文章链接)

评论 (0)

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

最新回复

  1. William Tardent
    2024-02-27
  2. Maryann Hamer
    2024-02-27
  3. Sanora Pantano
    2024-02-24
  4. aa
    2024-02-21
  5. Kassie Baum
    2024-01-28

标签云