A-A+

PHPCMS首页调用TAG关键字列表

2015年12月24日 phpcms 暂无评论 阅读 230 次

PHPCMS关键词TAG和网站的关键词是一样的,PHPCMS将这些词包含到了 v9_keyword 表里面,如果为了实现某现功能需要将这些TAG关键词列表出来应该怎么做呢,这样的功能PHPCMS也没有整合PC的标签,只能通过 GET 语句直接调用 SQL 了,看下面的语句代码:

{pc:get sql="SELECT keyword FROM `v9_keyword` WHERE length(`keyword`) > 2 ORDER BY `videonum` DESC" num="100"}
{loop $data $r}
<a href="{APP_PATH}tag/{$r[keyword]}/">{$r[keyword]}</a>
{/loop}
{/pc}

上面的代码将其所有的 TAG 关键词进行了调用,其中 WHERE 后的条件自己可以自定。GET 标签也可以自己添加 PAGE 分页。

PHPCMS首页列表页调用TAG关键字标签

调出所有的关键词 TAG 还是比较简单的,每篇文章页都有对应的 TAG 标签,上面也提到了,所有的 TAG 关键词都保存在 v9_keyword 表中,并且全都存在于 keywords 这个字段中,当我们有多个关键词的时候,需要用逗号或者是空间隔开,如果我们想要调用这个关键字的链接该怎么办呢。

解决的方法,用PHP的explode函数将关键字分开,然后再进行链接。代码如下:

{php foreach (explode(" ",$v[keywords]) as $r){echo '<a href="http://www.xiariboke.com/tag/'.$r.'/">'.$r.'</a> ';}}

这里的链接是经过伪静态的,自己可以看一下自己网站 tag 的链接是怎样的,具体可以打开文章页面点击底部的 tag 链接就知道了,把上面的链接换成自己的就行了,思路就是这样。另外上面的代码是以空格来隔开的,而不是逗号,如果是逗号的话,把空间换成逗号即可。

{php foreach (explode(" ",$v[keywords]) as $r){echo '<a href="http://www.sjyhome.com/tag/

ps:2

注 意:explode(',',$r[keywords]);是将文章关键词通过英文逗号分离,也就是说每一篇文章都要以逗号间隔关键字,否则调用出来会是 全部作为一个关键字。如果是空格间隔关键字,将explode(',',$r[keywords]);改成explode(' ',$r[keywords]);

{pc:content action="lists" catid="$catid" num="10" order="id DESC" page="$page"}

{loop $data $r}

{php $keywords = explode(' ',$r[keywords]);}

<b>标签:</b>

{loop $keywords $keyword}

<a style="color:#3300FF; border:1px solid #3300FF; padding:2px;" href="{APP_PATH}index.php?m=content&c=tag&catid={$catid}&tag={urlencode($keyword)}" class="blue"> {$keyword}</a>

上面是跳转到标签总的页面

下面是直接跳转到相关内容的列表

<a style="color:#3300FF; border:1px solid #3300FF; padding:2px;" href="{APP_PATH}index.php?m=content&a=lists&catid={$catid}&tag={urlencode($keyword)}" class="blue"> {$keyword}</a>

{/loop}

{/loop}

{/pc}

ps:3

phpcms v9实现自动调用热门搜索关键词

原文地址:http://bbs.phpcms.cn/forum.php?mod=viewthread&tid=731404

首先找到 /phpcms/model/keyword_model.class.php 。
看一下keyword_model.class.php的内容
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('model', '', 0);
class keyword_model extends model {
public $table_name = '';
public function __construct() {
$this->db_config = pc_base::load_config('database');
$this->db_setting = 'default';
$this->table_name = 'keyword';
parent::__construct();
}
}
从代码可以看出关键词表名叫 keyword 可是我们查看数据库里没有这样的表名。
那就参照相关搜索数据表 tb_search_keyword(我安装的时候用的是tb做表前缀)
新建一个热门搜索关键词数据表 keyword

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `tb_keyword`
-- ----------------------------
DROP TABLE IF EXISTS `tb_keyword`;
CREATE TABLE `tb_keyword` (
`keyword` char(20) NOT NULL,
`typeid` tinyint(4) NOT NULL default '0',
`searchnums` int(10) unsigned NOT NULL default '0',
PRIMARY KEY  (`keyword`),
UNIQUE KEY `keyword` (`keyword`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;

这样数据表就建好了,接下来就是添加和调用数据了。
打开文件 /phpcms/models/search/index.php
找到

//如果开启相关搜索功能
if($setting['relationenble']) {
在它上面加入以下代码

//加入搜索关键词记录 imbin 2011/9/13
if(!empty($result)){
$this->keyword_log_db = pc_base::load_model('keyword_model');
$res = $this->keyword_log_db->get_one(array('keyword'=>$q,'typeid'=>$typeid));
if($res) {
//关键词搜索数+1
$this->keyword_log_db->update(array('searchnums'=>'+=1'), array('keyword'=>$q));
} else {
$this->keyword_log_db->insert(array('keyword'=>$q,'typeid'=>$typeid, 'searchnums'=>1));
}
}

这样就实现了搜索关键词的添加
再来看看模板调用的实现,我用的是 get 标签。
首先看搜索结果页:/phpcms/templates/default/search/list.html
{pc:get sql="SELECT keyword,typeid FROM tb_keyword WHERE typeid=$typeid AND searchnums > 5 ORDER BY rand()" num="5" return="keywords"}
{loop $keywords $k=>$v}<a href="/index.php?typeid={$v['typeid']}&m=search&c=index&a=init&q={$v['keyword']}">{$v['keyword']}</a>{/loop}
{/pc}
这里的排序我用了随机,因为我不想每次都出现一样的。
附上按搜索次数排序的Sql语句:SELECT keyword,typeid FROM tb_keyword WHERE typeid=$typeid ORDER BY searchnums DESC
如果是首页里面调用,去掉$typeid。BTW:如果要在不是搜索结果的页面都要去掉$typeid
{pc:get sql="SELECT keyword,typeid FROM tb_keyword ORDER BY searchnums DESC" num="8"  return="keywords"}
{loop $keywords $k=>$v}<a href="/index.php?typeid={$v['typeid']}&m=search&c=index&a=init&q={$v['keyword']}">{$v['keyword']}</a>{/loop}
{/pc}就这样实现了!

 

标签:

给我留言

Copyright © web前端技术开发个人博客 保留所有权利  京ICP备14060653号 Theme  Ality

用户登录