php 中 相关文章 的思路,ThinkPHP文章相关阅读功能的实现方法
发布日期:2021-06-24 13:44:03 浏览次数:2 分类:技术文章

本文共 2299 字,大约阅读时间需要 7 分钟。

我们在网上阅读文章时,当阅读完一篇感兴趣的文章时,还不够尽兴,还想阅读一些相关的文章,在文章的末尾往下看,就会发现相关阅读列出和本次阅读的文章相关的篇章,我们点击又可以阅读了,节省了搜索时间。在注重用户体验的设计方面来说,相关阅读功能肯定是少不了的。

实现相关阅读的方法很多,这里是根据相同标签的方法去列出相关的文章,其原理是文章的标签如果相同,那么它们的标签的ID也会相同,因此列出一篇文章的相关文章其实就是列出和其标签相同的文章。

好了,进入正题吧。准备两张关联的表wb_tagged和wb_news,具体数据如下:

01-- ----------------------------

02-- Table structurefor `wb_tagged`

03-- ----------------------------

04DROP TABLE IF EXISTS `wb_tagged`;

05CREATE TABLE `wb_tagged` (

06`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

07`recordId` int(11) unsigned NOT NULL,

08`tagId` int(11) NOT NULL,

09`module` varchar(25) NOT NULL,

10PRIMARY KEY (`id`),

11KEY `module` (`module`)

12) ENGINE=MyISAM  CHARSET=utf8;

13

14-- ----------------------------

15-- Table structurefor `wb_news`

16-- ----------------------------

17DROP TABLE IF EXISTS `wb_news`;

18CREATE TABLE `wb_news` (

19`id` int(8) unsigned NOT NULL AUTO_INCREMENT,

20`title` varchar(80) NOT NULL DEFAULT'',

21`status` tinyint(1) NOT NULL DEFAULT'0',

22PRIMARY KEY (`id`)

23) ENGINE=MyISAM  CHARSET=utf8;

注:wb_news表的ID关联wb_tagged表的recordId

接下来定义上面两张表的视图模型RelaNewsView,代码如下:

01<?php

02class RelaNewsViewModelextends ViewModel {

03

04public $viewFields =array(

05

06'News'=>array('id','title','status'),//根据需求筛选news表的字段

07

08'Tagged'=>array('tagId','recordId','_on'=>'Tagged.recordId=News.id'),

09);

10}

11?>

上面模型代码中,news和tagged的关联点是“_on'=>'Tagged.recordId=News.id'”,这是一个查询条件,在模型定义好后,在后面的查询语句中就不用再重复写这个条件了。

视图模型定义好,下面是相关阅读的查询语句方法,当然你可以使用sql语句来查询,这里我喜欢用ThinkPHP的视图模型来实现。

01/*

02*相关阅读

03*$ModelName:模型名称

04*$rid:文章ID

05*$ViewName 视图模型名称

06*/

07public function relaread($ModelName,$rid,$ViewName) {

08

09$tagId=M('Tagged')->field('tagId')->where(array (

10'module' =>$ModelName,

11'recordId' => trim($rid

12)))->getField('tagId');//获取标签tagId

13

14if ($relalist !== false) {

15

16$map['tagId'] =$tagId;

17$map['status'] = 1;

18$map['id'] =array (//过滤本篇文章在相关文章列表列出

19'neq',

20$rid

21);

22$map['recordId'] =array (

23'neq',

24$rid

25);

26$relalist = D($ViewName)->where($map)->order('id desc')->select();//相关阅读查询语句

27

28return $relalist;//返回相关文章列表

29

30}

31}

32//最后,我们调用使分配到模板read.html

33public function read($ModelName) {

34if (empty ($_GET['id']))$this->error404();

35

36$relalist=$this->relaread('News',$_GET['id'],'RelaNewsView')//在这里调用上面的relaread函数

37

38$this->assign('relalist',$relalist );

39}

转载地址:https://blog.csdn.net/weixin_33239721/article/details/115510274 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:php里面什么是u函数,ThinkPHP函数详解:U方法
下一篇:php 关键词回复 图片,关于微信公众平台用户发送关键词的回复机制

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月20日 15时32分48秒