找回密码
 注册加入
搜索
查看: 3294|回复: 1

phpcms v9 增加热门关键字管理

[分享]
发表于 2011-12-13 18:18:00 | 显示全部楼层 |阅读模式

最近在二次开发phpcms v9,根据网站设计图,需要用到热门关键字功能,但通过详细查看 phpcms v9后,并没有发现可以管理热门关键字的相关选项。虽然可以通过pc:get标签查询出搜索次数最多的关键字,但毕竟后台可以管理才是王道。

尤其是网站运营初期,必须定义一些热门的关键字引导用户查阅更多的信息,以提高浏览量。此方法由于是增加文件,并不影响升级,以后程序升级后,此功能还能继续使用。

首先列出使用pc:get标签的方法:

  1. {pc:get sql="select keyword from v9_search_keyword" orderby="searchnums desc" num="5"}

  2. {loop $data $r}

  3. <a href="{APP_PATH}index.php?m=search&c=index&a=init&typeid=1&siteid=1&q={$r[keyword]}">{$r[keyword]}</a>

  4. {/loop}

  5. {/pc}
复制代码

将上面这段代码复制到头部的任意位置,即可显示5个关键词并按搜索次数最多的前5个显示。

下面是后台增加关键词管理的操作方法。我将管理菜单放在扩展的栏目下,其它朋友可以根据知道的需求,增加到各自的栏目下,先上图,有图有真相。

1.关键词管理页面,在扩展栏目下。

1323768950884.jpg

2.增加关键字页面,可以自由增加关键字

1323768950352.jpg

3.关键字编辑页面,可以把热门的关键字增加搜索次数,以引导用户获取更多信息

1323768950963.jpg

请按照以下方法增加:

1.增加语言包:

phpcms/languages/zh-cn/admin.lang.php

找到此文件,在此文件最下面增加以下内容:

/*热门关键词*/

$LANG['search_keyword'] = ‘关键字管理’;

$LANG['search_word_add'] = ‘增加关键字’;

$LANG[]search_word_pinyin'] = ‘拼音’;

$LANG['search_word_nums'] = ‘搜索次数’;

$LANG['search_word_some'] = ‘相关分词’;

$LANG['search_word_confirm_del'] = ‘是否删除该关键词’;

$LANG['search_word_name'] = ‘关键字名称’;

$LANG['search_word_error_input'] = ‘请输入完整的数据’;

2.由于模型类本来已存在,所以不需要再创建模型类,只需要创建控制器:

在phpcms\modules\admin\下,新建文件名为:search_keyword.php,路径:phpcms\modules\admin\search_keyword.php

  1. <?php
  2. defined(‘IN_PHPCMS’) or exit(‘No permission resources.’);
  3. pc_base::load_app_class(‘admin’,'admin’,0);
  4. class search_keyword extends admin {
  5. function __construct() {
  6. $this->db = pc_base::load_model(‘search_keyword_model’);
  7. parent::__construct();
  8. }

  9. function init () {
  10. $page = $_GET['page'] ? intval($_GET['page']) : ’1′;
  11. //根据搜索数量由大到小排序
  12. $infos = $this->db->listinfo(”,’searchnums DESC’,$page ,’20′);
  13. $pages = $this->db->pages;
  14. $big_menu = array(‘javascript:window.top.art.dialog({id:\’add\’,iframe:\’?m=admin&c=search_keyword&a=add\’, title:\”.L(‘search_word_add’).’\', width:\’450\’, height:\’150\’}, function(){var d = window.top.art.dialog({id:\’add\’}).data.iframe;var form = d.document.getElementById(\’dosubmit\’);form.click();return false;}, function(){window.top.art.dialog({id:\’add\’}).close()});void(0);’, L(‘search_word_add’));
  15. include $this->admin_tpl(‘search_keyword_list’);
  16. }

  17. /**
  18. * 关键词添加
  19. */
  20. function add() {
  21. if(isset($_POST['dosubmit'])){
  22. if(empty($_POST['info']['keyword']) || empty($_POST['info']['pinyin']) || empty($_POST['info']['searchnums'])){
  23. echo L(‘search_word_error_input’);
  24. return false;
  25. }
  26. $this->db->insert($_POST['info']);
  27. showmessage(L(‘operation_success’),’?m=admin&c=search_keyword&a=add’,”, ‘add’);
  28. }else{
  29. $show_validator = $show_scroll = $show_header = true;
  30. include $this->admin_tpl(‘search_keyword_add’);
  31. }
  32. }

  33. /**
  34. * 关键词修改
  35. */
  36. function edit() {
  37. if(isset($_POST['dosubmit'])){
  38. $keywordid = intval($_GET['keywordid']);
  39. if(empty($_POST['info']['keyword']) || empty($_POST['info']['pinyin']) || empty($_POST['info']['searchnums'])){
  40. echo L(‘search_word_error_input’);
  41. return false;
  42. }
  43. $this->db->update($_POST['info'],array(‘keywordid’=>$keywordid));
  44. showmessage(L(‘operation_success’),’?m=admin&c=search_keyword&a=edit’,”, ‘edit’);
  45. }else{
  46. $show_validator = $show_scroll = $show_header = true;
  47. $info = $this->db->get_one(array(‘keywordid’=>$_GET['keywordid']));
  48. if(!$info) showmessage(L(‘specified_word_not_exist’));
  49. extract($info);
  50. include $this->admin_tpl(‘search_keyword_edit’);
  51. }
  52. }
  53. /**
  54. * 关键词删除
  55. */
  56. function delete() {
  57. if(is_array($_POST['keywordid'])){
  58. foreach($_POST['keywordid'] as $keywordid_arr) {
  59. $this->db->delete(array(‘keywordid’=>$keywordid_arr));
  60. }
  61. showmessage(L(‘operation_success’),’?m=admin&c=search_keyword’);
  62. } else {
  63. $keywordid = intval($_GET['keywordid']);
  64. if($keywordid < 1) return false;
  65. $result = $this->db->delete(array(‘keywordid’=>$keywordid));
  66. if($result){
  67. showmessage(L(‘operation_success’),’?m=admin&c=search_keyword’);
  68. }else {
  69. showmessage(L(“operation_failure”),’?m=admin&c=search_keyword’);
  70. }
  71. }
  72. }
  73. }
  74. ?>
复制代码

3.在模板里,增加三个模板页面,分别是:

phpcms\modules\admin\templates/search_keyword_add.tpl.php (增加关键词页面)

phpcms\modules\admin\templates/search_keyword_edit.tpl.php (编辑关键词页面)

phpcms\modules\admin\templates/search_keyword_list.tpl.php (编辑关键词列表)

(1)。 search_keyword_add.tpl.php

  1. <?php
  2. defined(‘IN_ADMIN’) or exit(‘No permission resources.’);
  3. include $this->admin_tpl(‘header’);
  4. ?>
  5. <script type=”text/javascript”>
  6. <!–
  7. $(function(){
  8. $.formValidator.initConfig({formid:”myform”,autotip:true,onerror:function(msg,obj){window.top.art.dialog({content:msg,lock:true,width:’200′,height:’50′}, function(){this.close();$(obj).focus();})}});
  9. })
  10. //–>
  11. </script>
  12. <div>
  13. <table width=”100%” cellpadding=”2″ cellspacing=”1″>
  14. <form action=”?m=admin&c=search_keyword&a=add” method=”post” name=”myform” id=”myform”>
  15. <tr>
  16. <th width=”25%”><?php echo L(‘search_word_name’);?> :</th>
  17. <td><input type=”text” name=”info[keyword]” id=”word” size=”20″></td>
  18. </tr>
  19. <tr>
  20. <th><?php echo L(‘search_word_pinyin’);?> :</th>
  21. <td><input type=”text” name=”info[pinyin]” value=”"  id=”pinyin”></td>
  22. </tr>
  23. <tr>
  24. <th><?php echo L(‘search_word_nums’);?> :</th>
  25. <td><input type=”text” name=”info[searchnums]” value=”"  id=”searchnums”></td>
  26. </tr>
  27. <tr>
  28. <th><?php echo L(‘search_word_some’);?> :</th>
  29. <td><input type=”text” name=”info[data]” value=”"  id=”data”></td>
  30. </tr>
  31. <input type=”submit” name=”dosubmit” id=”dosubmit” value=” <?php echo L(‘submit’)?> “>
  32. </form>
  33. </table>
  34. </div>
  35. </body>
  36. </html>
复制代码


 楼主| 发表于 2011-12-13 18:19:14 | 显示全部楼层
(2)。关键词列表
  1. <?php
  2. defined(‘IN_ADMIN’) or exit(‘No permission resources.’);
  3. $show_dialog = 1;
  4. include $this->admin_tpl(‘header’,'admin’);
  5. ?>
  6. <div>
  7. <form name=”myform” id=”myform” action=”?m=admin&c=search_keyword&a=delete” method=”post” onsubmit=”checkuid();return false;”>
  8. <div>
  9. <table width=”100%” cellspacing=”0″>
  10. <thead>
  11. <tr>
  12. <th width=”35″ align=”center”><input type=”checkbox” value=”" id=”check_box” onclick=”selectall(‘keywordid[]‘);”></th>
  13. <th width=”30%”><?php echo L(‘keyword_name’)?></th>
  14. <th ><?php echo L(‘search_word_pinyin’)?></th>
  15. <th ><?php echo L(‘search_word_nums’)?></th>
  16. <th ><?php echo L(‘search_word_some’)?></th>
  17. <th width=”120″><?php echo L(‘operations_manage’)?></th>
  18. </tr>
  19. </thead>
  20. <tbody>
  21. <?php
  22. if(is_array($infos)){
  23. foreach($infos as $info){
  24. ?>
  25. <tr>
  26. <td align=”center”>
  27. <input type=”checkbox” name=”keywordid[]” value=”<?php echo $info['keywordid']?>”>
  28. </td>
  29. <td width=”30%” align=”left”><span ><?php echo $info['keyword']?></span> </td>
  30. <td align=”center”><?php echo $info['pinyin']?></td>
  31. <td align=”center”><?php echo $info['searchnums']?></td>
  32. <td align=”center”><?php echo $info['data']?></td>
  33. <td align=”center”><a href=”javascript:edit(<?php echo $info['keywordid']?>, ‘<?php echo new_addslashes($info['keyword'])?>’)”><?php echo L(‘edit’)?></a> | <a href=”javascript:confirmurl(‘?m=admin&c=search_keyword&a=delete&keywordid=<?php echo $info['keywordid']?>’, ‘<?php echo L(‘search_word_confirm_del’)?>’)”><?php echo L(‘delete’)?></a> </td>
  34. </tr>
  35. <?php
  36. }
  37. }
  38. ?></tbody>
  39. </table>
  40. <div>
  41. <a href=”#” onClick=”javascript:$(‘input[type=checkbox]‘).attr(‘checked’, true)”><?php echo L(‘selected_all’)?></a>/<a href=”#” onClick=”javascript:$(‘input[type=checkbox]‘).attr(‘checked’, false)”><?php echo L(‘cancel’)?></a>
  42. <input type=”submit” name=”submit” value=”<?php echo L(‘remove_all_selected’)?>”  onClick=”return confirm(‘<?php echo L(‘badword_confom_del’)?>’)” />
  43. </div>
  44. <div id=”pages”><?php echo $pages?></div>
  45. </div>
  46. </form>
  47. </div>
  48. </body>
  49. </html>
  50. <script type=”text/javascript”>
  51. function edit(id, name) {
  52. window.top.art.dialog({id:’edit’}).close();
  53. window.top.art.dialog({title:’<?php echo L(‘edit’)?> ‘+name+’ ‘,id:’edit’,iframe:’?m=admin&c=search_keyword&a=edit&keywordid=’+id,width:’450′,height:’150′}, function(){var d = window.top.art.dialog({id:’edit’}).data.iframe;var form = d.document.getElementById(‘dosubmit’);form.click();return false;}, function(){window.top.art.dialog({id:’edit’}).close()});
  54. }

  55. function checkuid() {
  56. var ids=”;
  57. $(“input[name='keywordid[]‘]:checked”).each(function(i, n){
  58. ids += $(n).val() + ‘,’;
  59. });
  60. if(ids==”) {
  61. window.top.art.dialog({content:’<?php echo L(‘badword_pleasechose’)?>’,lock:true,width:’200′,height:’50′,time:1.5},function(){});
  62. return false;
  63. } else {
  64. myform.submit();
  65. }
  66. }
  67. </script>
复制代码
(3)。 编辑关键词
  1. <?php
  2. defined(‘IN_ADMIN’) or exit(‘No permission resources.’);
  3. include $this->admin_tpl(‘header’);
  4. ?>
  5. <script type=”text/javascript”>
  6. $(function(){
  7. $.formValidator.initConfig({formid:”myform”,autotip:true,onerror:function(msg,obj){window.top.art.dialog({content:msg,lock:true,width:’200′,height:’50′}, function(){this.close();$(obj).focus();})}});

  8. })
  9. </script>

  10. <div>
  11. <table cellpadding=”2″ cellspacing=”1″ width=”100%”>
  12. <form action=”?m=admin&c=search_keyword&a=edit&keywordid=<?php echo $keywordid?>” method=”post” name=”myform” id=”myform”>
  13. <tr>
  14. <th width=”25%”><?php echo L(‘search_word_name’);?> :</th>
  15. <td><input type=”text” name=”info[keyword]“  size=”20″ value=”<?php echo $keyword?>”></td>
  16. </tr>
  17. <tr>
  18. <th><?php echo L(‘search_word_pinyin’);?> :</th>
  19. <td><input type=”text” name=”info[pinyin]” value=”<?php echo $pinyin?>” ></td>
  20. </tr>
  21. <tr>
  22. <th><?php echo L(‘search_word_nums’);?> :</th>
  23. <td><input type=”text” name=”info[searchnums]” value=”<?php echo $searchnums?>” ></td>
  24. </tr>
  25. <tr>
  26. <th><?php echo L(‘search_word_some’);?> :</th>
  27. <td><input type=”text” name=”info[data]” value=”<?php echo $data?>”></td>
  28. </tr>

  29. <input type=”submit” name=”dosubmit” id=”dosubmit” value=” <?php echo L(‘submit’)?> “>
  30. </form>
  31. </table>
  32. </div>
  33. </body>
  34. </html>
复制代码

4.增加导航菜单:

请使用phpmyadmin或其它mysql数据库管理软件执行下面此语句。

1.为关键词表增加一个可自动增加的id,keywordid

alter table v9_search_keyword add keywordid int(16) unsigned NOT NULL auto_increment PRIMARY KEY ;

2.以下是插入菜单链接:

  1. INSERT INTO v9_menu VALUES (null, ‘search_keyword’, ’977′, ‘admin’, ‘search_keyword’, ‘init’, ”, ’13′, ’1′);
  2. INSERT INTO v9_menu VALUES (null, ‘add_search_keyword’, ’1571′, ‘admin’, ‘search_keyword’, ‘add’, ”, ’0′, ’0′);
  3. INSERT INTO v9_menu VALUES (null, ‘edit_search_keyword’, ’1571′, ‘admin’, ‘search_keyword’, ‘edit’, ”, ’0′, ’0′);
  4. INSERT INTO v9_menu VALUES (null, ‘del_search_keyword’, ’1571′, ‘admin’, ‘search_keyword’, ‘del’, ”, ’0′, ’0′);
复制代码

通过以上步骤,即可完成后台管理热门管理词。


                               
登录/注册后可看大图

但现在还有一个问题没有解决,相关分词正常来说是通过程序生成的,因为不是程序生成的话,在搜索页面相关搜索并不会出现数据,我的想法是把输入框禁用,然后旁边增加一个获取相关分词的按钮,点击按钮,通过程序生成,并把生成的值赋给相关分词的输入框,但由于时间关系,并没有做这一步处理,有兴趣的朋友可以进行增加。这个功能一定要做的,但不知道有没有时间把文章补完,我尽量把此功能完成后,再把方法告诉大家。以下是我所增加的文件,提供大家进行下载,有不明白的地方,可以留言进行交流。

以下压缩包以下4个文件:

phpcms/modules/admin/search_keyword.php

phpcms\modules\admin\templates/search_keyword_add.tpl.php

phpcms\modules\admin\templates/search_keyword_edit.tpl.php

phpcms\modules\admin\templates/search_keyword_list.tpl.php

您可以任意转载本文,但转载时请以超链接形式标明文章原始出处和作者信息及版权声明

作者:赵烟哥,原文链接:http://www.o135.com/?p=437 [复制本文链接发送给您的好友]


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册加入

本版积分规则

Archiver|手机版|小黑屋|Discuz!扩展中心 - 杭州富迪文化艺术策划有限公司 版权所有 ( 浙ICP备14042422号-1 )|网站地图QQ机器人

GMT+8, 2025-5-4 21:41 , Processed in 0.522577 second(s), 12 queries , Gzip On, Redis On.

Powered by Discuz! X5.0

© 2001-2025 Discuz! Team.|IP地址位置数据由 纯真CZ88 提供支持

快速回复 返回顶部 返回列表