discuz门户添加模板如何实现discuz!门户文章的标签功能-宿迁波仔博客

编辑:文学社区发表日期:浏览:0

discuz门户添加模板

昨天在建设那个IT产品网站的时候遇到了一个问题:那就是建立一个经销商栏目。而在这个经销商栏目中需要添加大量的商家信息,如商家所在地区,商家名称,商家主营产品,商家联系方式等,这时候问题来了,这么多的商家信息访客该如何快速的筛选呢?

由于discuz门户文章没有标签功能,虽然自带了一个聚合标签,但是标签数量只有8个,明显是不够用啊。但是又非常想要实现这个功能。于是,我在网上查找了下,看到了大量的discuz用户都被这个问题困扰着,而解决的方法却少之又少。大概看了下,一共就2种方法,分享给大家:

第一种是修改聚合标签的数量

聚合标签所在的文件里的个数限制是写死的,就是8,所以自定义增多几乎是不可能的,除非核心程序改变。

要改的几个核心文件有:

(1)source/admincp/admincp_article.php

第51行:



showformheader(‘article&operation=tag’);showtableheader(‘article_tag_setting’);for($i=1; $i<=8; $i++) {修改8=>12

(2)source/function/function_portalcp.php

第567行开始,依次找到8的地方:



function article_tagnames() {}里的 for($i=1; $i<=8; $i++) function article_parse_tags($tag) {}里的 for($i=1; $i<=8; $i++) function article_make_tag($tags){}里的 for($i=1; $i<=8; $i++)

分别修改8为你想要的个数,比如我的就是12。以上的行数是相对您没有改过源代码的情况,如果改过,就按文件名搜索好了。

(3)改变数据库字段长度



ALTER TABLE `pre_portal_article_title` CHANGE `tag` `tag` smallint( 12 ) UNSIGNED NOT NULL DEFAULT ’0′

默认的tinyint的unsign型最大是255,而255只能支持8个标签。

所以这里改成smallint,最大支持32位,如果还不够就继续增大int型即可。



改到这里,基本就可以啦。

后台,门户,文章管理,聚合标签,上数据!

前台,发文,看聚合标签,有值。

或者手工在数据库那修改数据也行,数据存储在 pre_common_setting 表中的 skey 字段值为 “article_tags”的记录,然后修改 svalue 即可。可以用以下sql语句把 svalue 选出来修改:



SELECT * FROM `pre_common_setting` WHERE skey = ’article_tags’

第二种方法是添加一个tag模版

第一步、修改文章添加Tag模版:/template/default/portal/portalcp_article.htm

找到内容代码:

{lang article_description}



在此代码下面添加

Tag 标签

多个Tag 用空格隔开,例如:宿迁波仔博客 南京服务器 宿迁博客,尾部不需任何符号


第二步、添加pre_portal_article_title表字段

字段名:tags ,类型varchar(255), 默认为空。

在后台的站长->数据库->升级 下面的Discuz! 数据库升级,文本框,复制下面SQL:

alter table pre_portal_article_title add tags varchar(255)

注意:1、操作前备份数据库,2、不论表前缀是不是默认的,都可以直接用此代码(我的表前缀不是默认的已经成功),如果没有升级成功,那就请用pre_portal_article_title。



第三步、修改文章添加,修改,处理,函数/source/include/portalcp/portalcp_article.php

查找代码

$_POST['pagetitle'] = censor($_POST['pagetitle']);

在此代码下面添加

$_POST['tags'] = censor(trim($_POST['tags']));

继续查找代码

$setarr = array( 'title' => $_POST['title'], 'shorttitle' => $_G[shorttitle'], 'author' => $_G[author'], 'from' => $_G[from'], 'fromurl' => $_G[fromurl'], 'dateline' => intval($_G[dateline']), 'url' => $_G['gp_url'], 'allowcomment' => !empty($_POST['forbidcomment']) ? '0' : '1', 'summary' => addslashes($summary), 'catid' => intval($_POST['catid']), 'tag' => article_make_tag($_POST['tag']), 'status' => $article_status, 'highlight' => $style, 'showinnernav' => empty($_POST['showinnernav']) ? '0' : '1', );

修改为

$setarr = array( 'title' => $_POST['title'], 'shorttitle' => $_G['gp_shorttitle'], 'author' => $_G['gp_author'], 'from' => $_G['gp_from'], 'fromurl' => $_G['gp_fromurl'], 'dateline' => intval($_G['gp_dateline']), 'url' => $_G['gp_url'], 'allowcomment' => !empty($_POST['forbidcomment']) ? '0' : '1', 'summary' => addslashes($summary), 'catid' => intval($_POST['catid']), 'tag' => article_make_tag($_POST['tag']), 'status' => $article_status, 'highlight' => $style, 'showinnernav' => empty($_POST['showinnernav']) ? '0' : '1',

'tags' => $_POST['tags'],

(简单的就是在最后一行前加一句以上代码 )

第四步、修改文章显示函数/source/module/portal/portal_view.php

找到代码

include_once template("diy:portal/view:{$catid}", NULL, NULL, NULL, $cat['articleprimaltplname']);

在此代码上面一行插入代码

$tags=explode(" ",$article["tags"]);foreach($tags as $val) { $htmltags .= "".$val." "; }

第五步、修改文章显示模版/template/default/portal/view.htm

可以自己选择要放的位置,例如放到内容下面:查找

$content[content]

然后在下面加入代码

Tab标签: $htmltags


第六步、进入后台->工具->更新缓存。只选择清理数据就可以了。
上一篇:
下一篇:

关于推荐评选2018年度国家奖学金、省政府奖学金的通知(申请奖学金的理由)

节能降耗标语口号大全(节能标语)

节能标语(精选80条)(节能标语)

关于人生价值观的名言(人生的价值观)

什么是人生价值观(人生的价值观)