分享
  • 收藏
  • 举报
    X
    再来个抛砖引玉 内容页根据关键词调用相关内容 新功能哦!
    1553
    19

    昨天升级了一个隐藏的功能,今天就简单的做个说明怎么用,反正也不能浪费不是 那就用内容页面关键词读取相关内容为例吧。

    前台是你模型中已经存在 keywords 字段  关键词支持 空格分割,号分割 那么就开始新功能之旅吧。

    我们在 application 目录中新建一个 api目录 api目录再新建一个 index 目录 也就是 application\api\index  下面新建一个Keywords.php

     <?php
    namespace app\api\index;
    /**
     * 动态获取内容关键词并读取相关内容
     * Class Keywords
     * @package app\api\index
     */
    class Keywords{
    	public function index($text){
    		$cfg=unserialize($text['cfg']);
            $biao=db($cfg['systype'].'_content')->where('id',$cfg['id'])->find(); // 查找这个内容的所在模型
    		$tags=db($cfg['systype'].'_content'.$biao['mid'])->where('id',$cfg['id'])->find(); //查找到模型后去模型表读取这个内容的信息
    		$detail=strpos($tags['keywords'],',')!==false?explode(',',$tags['keywords']):explode(' ',$tags['keywords']); //根据这个信息的 keywords 字段进行拆分检索 keywords 可以是自己定义的任意字段
    		$where=[];
    		$where_tit=[];
    		array_push($where_tit,'like');
    		$ARR=[];
    		for($i=0;$i<count($detail);$i++){
    			array_push($ARR,'%'.$detail[$i].'%');
    		}
    		array_push($where_tit,$ARR);
    		array_push($where_tit,'OR');
    		$where['title']=$where_tit;
    		$array=db($cfg['systype'].'_content'.$biao['mid'])->where($where)->order($cfg['order'],$cfg['by'])->limit($cfg['rows'])->select();
    		foreach($array AS $k=>$rs){
    			$data[$k]['title']=$rs['title'];
    			$data[$k]['create_time']=$rs['create_time'];
    			$data[$k]['picurl']=tempdir($rs['picurl']);
    			$rs['content']=preg_replace('/<([^<]*)>/is',"",$rs['content']);
    			$data[$k]['content']=get_word($rs['content'],500);
    			$data[$k]['url']=url($cfg['systype'].'/content/show',['id'=>$rs['id']],'html',true);
    		}
    		return $data;
    	}
    }

    临时拼凑的代码bug难免 仅仅是示例。

    怎么使用呢?

    template\index_style\default\cms\content\pc_show.htm 强烈建议自己复制default一份再改不然升级会覆盖


    在你需要的地方加上


     {qb:tag name="pc_show" rows="9" type="cms" union='id' class='app\api\index\Keywords@index'}

    <div class="lists"><a href="{$rs.url}">{$rs.title}</a></div>


    {$rs.url} 内容网址

    {$rs.title} 标题

    {$rs.create_time} 发布时间

    {$rs.picurl}  图片

    {$rs.content}  内容

    {/qb:tag}

    rows 调用数量

    type 调用的模块 你shop模块就写 =shop

    order 排序 


    是不是很好用 原理是union动态读取内容的id根据内容id查找所在模型和内容并把keywords拆分 用他作为关键词去查找内容。


    感谢齐博的无私奉献,官方一直在努力 

    ps:2020年1月15日已经修正

    13
    赏礼
    赏钱
    收藏
    点击回复
        全部留言
    • 19
    0 赏钱 赏礼回复
    • 谈笑淡轻云-2883 实战运营者 消费:91.03元 2021-06-28 17:14 17:146楼
      代码审计结果:可能存在反序列化漏洞
    0 赏钱 赏礼回复
    • fkenuiabcd 风格开发者 消费:55.05元 2021-06-27 13:28 13:286楼
      模型中已经存在 keywords 字段,按教程新建一个Keywords.php

      用的是下载系统 store  是不是不能用


      {qb:tag name="pc_show" rows="4" type="store" union='id' class='app\api\index\Keywords@index'}

        <div class="col-sm-3 col-xs-12">
          <a href="{$rs.url}" title="{$rs.title}">
              <i><img class="img-responsive" src="{$rs.picurl}" alt="{$rs.title}" /></i>
                      <div class="biaoti">{$rs.title}</div>
      </a>

              </div>

      {/qb:tag}
    0 赏钱 赏礼回复
    • 阿赖耶识 程序开发者 消费:24.43元 2018-06-16 12:12 12:126楼

      支持下,辛苦了

      fkenuiabcd 消费:55.05元 2021-06-20 12:03
      我用下载这个样不显示的,是不是不能用


      {qb:tag name="pc_show" rows="4" type="store" union='id' class='app\api\index\Keywords@index'}

        <div class="col-sm-3 col-xs-12">
          <a href="{$rs.url}" title="{$rs.title}">
              <i><img class="img-responsive" src="{$rs.picurl}" alt="{$rs.title}" /></i>
                      <div class="biaoti">{$rs.title}</div>
      </a>

              </div>

      {/qb:tag}
    0 赏钱 赏礼回复
    • 纳沃纳 程序开发者 消费:1560.05元 2020-03-17 22:49 22:496楼
      我只想对你说两个字,牛X、牛B、牛金、牛领、牛觔、牛眠、牛侩、牛田、牛犂、牛李、牛酒、牛骥、牛山、牛桃、牛牛、牛头、牛蛙、牛脍、牛角、牛郎、牛屋、牛毛、牛脔、牛棚、牛筋、牛牲、牛皮、牛力、牛录、牛栏、牛肉、牛茎、牛蘈、牛饲、牛乳、牛胶、牛箧、牛人、牛口、牛女、牛市、牛牢、牛客、牛顿、牛子、牛刀、牛券、牛弯、牛气、牛宿、牛心、牛蚁、牛宫、牛革、牛油、牛弩、牛腩、牛蓑、牛竖、牛呞、牛螉、牛耦、牛矢、牛拘、牛蹄、牛童、牛吏、牛奶、牛具、牛鸣、牛溲、牛米、牛酪、牛马、牛虻、牛酥、牛排、牛津、牛首、牛王、牛鞅、牛埭、牛藿、牛黄、牛车、牛性、牛脂、牛表、牛齝、牛扒、牛下、牛唇、牛腹、牛鼎、牛鱼、牛炙、牛痘、牛囤、牛胾、牛闺、牛劲、牛饮、牛旁、牛膝、牛种、牛喘、牛矶、牛斗、牛轭、牛享、牛衣、牛犊、牛疫、牛被、牛粪、牛鞭、牛倌、牛哀、牛兵、牛腰、牛祸、牛骍、牛耳、牛铎、牛湩、牛笛、牛涔、牛耕、牛后、牛蒡、牛行
      银杏114在线 消费:3609.79元 2020-03-18 00:09
    1 赏钱 赏礼回复
    • 万荀网 实战运营者 消费:6824元 2020-03-17 21:48 21:486楼
      我无耻的慢慢学
    0 赏钱 赏礼回复
    • divine007 普通粉丝 消费:5.15元 2020-03-17 15:03 15:036楼
      学习了。谢谢楼主!
    0 赏钱 赏礼回复
    • fkenuiabcd 风格开发者 消费:55.05元 2020-01-15 10:52 10:526楼
      调用相关内容可以过滤当前文章吗?
    0 赏钱 赏礼回复
    • 深圳市 普通粉丝 消费:0元 2020-01-15 09:43 09:436楼

      按你的操作,加上标签打开这样错误的, 是那里不对吗?360截图20200115094246830.jpg

      Suifeng 消费:23.24元 2020-01-15 10:06
      type="cms" 应该是这个没加 你在哪个模块下 就要换为那个模块的目录名
    0 赏钱 赏礼回复
    • 深圳市 普通粉丝 消费:0元 2020-01-15 09:29 09:296楼
      要是有二个模型 ,也可以按 字段关键词调用吗?
    0 赏钱 赏礼回复
    • 为爱而生 普通粉丝 消费:0元 2018-08-10 17:14 17:146楼

    0 赏钱 赏礼回复
    • verycong 风格开发者 消费:118.73元 2018-06-16 11:28 11:286楼

      终于找到办法了。 


      官方出点东西时请像Suifeng这样。能出示例,而不是只出一个函数名称。

    0 赏钱 赏礼回复
    • 石头 风格开发者 消费:21923.34元 2018-06-16 10:37 10:376楼

      学习了,感谢楼主分享

    0 赏钱 赏礼回复
    • Suifeng 程序开发者 消费:23.24元 2018-06-16 10:27 10:276楼

      这个东西写法有很多 fun 插件 钩子 都可以 示例仅仅是为了告诉大家有了api目录

      Suifeng 消费:23.24元 2018-06-16 10:31
      api目录以后可以做的事情很多 弥补了一些程序功能 模块 插件 钩子 fun 不能满足之外的扩展都可以在这里实现了
    0 赏钱 赏礼回复
    • admin 超级管理员 消费:3.03元 2018-06-16 10:31 10:316楼

      辛苦了.非常实用.大家必须要学会动手

    0 赏钱 赏礼回复
    更多回复
    恢复多功能编辑器
  • 3 1
  • 推荐内容
    扫一扫访问手机版
    请选择要切换的马甲:

     
    网页即时交流
    QQ咨询
    咨询热线
    020-28998648