discuzSEO优化篇

作者: Darren 分类: 收藏 发布时间: 2017-05-09 23:39

不管是做什么样的论坛我们都要完善论坛功能和内容的同时,兼顾论坛的各方面SEO设置,毕竟一般的论坛大部分流量还是来源于搜索引擎的,
所以今天给discuz建站的新手们一点SEO设置方面的指导。
注意:今天说的是论坛SEO的基本设置,对论坛收录、关键词排名是没有直接作用的。SEO基本设置就好比一辆赛车配置,而SEO优化则相当于赛车手的发挥,当然,配置是基本的条件。希望大家能够理解SEO设置的作用。

好了,进入正题,那么我们需要在discuz后台哪些地方进行设置呢?主要有以下几点

1、伪静态设置

2、论坛标题、关键词、描述设置

3、板块、帖子的标题格式

4、关联链接设置(关键词内链)

5、网站地图

接下来一一讲解,

1、对于伪静态需要另外写篇教程,因为不同服务器设置方式不同。2、论坛标、关键词、描述设置

“全局——站点信息”
%title插图%num
注意:站点名称直接写你的网站名,尽量短,不要加关键词,标题关键词不在这里加,如果这里过长会导致全站的帖子标题过长。

详细的标题设置在”全局——SEO设置“,在这里设置首页的标题、关键词与描述,首页的设置至关重要,因为这关乎论坛主关键的排名。
%title插图%num
注意:网站上线前,请考虑好自己的标题、关键词、描述写什么,因为上线后短时间内改动这些对新站影响比较大,搜索引擎会认为这个网站还没有准备好,从而加长考核期。3、板块、帖子的标题格式设置

这里可以直接参考千酷论坛的设置,还是比较合理的
%title插图%num

帖子内容页:
%title插图%num
注意:每个板块要区别开来,最好不要设置统一的;对于分区,标题就用:{fgroup} – {bbname}
对于一个板块标题就用:{forum} – {fup} – {bbname} – {page}
对于门户、家园设置同理4、关联链接

%title插图%num
关联链接的作用:当帖子中出现你所设置的词的时候会自动给这个词添加一个锚文本,链接向你所设置的地址,并且同一个帖子重复出现这个词的话,自动只有第一次词被设置锚文本,
注意:这里建议少设置,因为这样的内链没有什么用户需求,因为用户去点击你这个锚文本的几率不大,5、网站地图

对于网站地图我们没必要手动去生成,我们只需在应用中心找”网站地图插件版“安装即可,会自动实时生成网站地图,有利于搜索引擎蜘蛛的爬取。

到这里,一个论坛的基本SEO设置已经基本完成,但这只是论坛SEO工作中的基础工作,更多的需要我们在论坛内容上下功夫。

第二、修改Discuz帖子/文章被删除后跳转至404页面,并返回404状态

我们知道discuz论坛,当一个帖子,或者文章被删除后,再次打开原本URL地址的话discuz程序会提示你该帖子/文章或者板块不存在。但是,你考虑过这个被删除的页面对于SEO的影响吗?

以千酷论坛的一个被删的板块(http://www.qiankoo.com/forum-48-1.html)为例:

%title插图%num

通过站长工具查询这个页面的http返回状态码:

%title插图%num

不知道大家发现没有,虽然这个板块被删除了,但是对于搜索引擎返回的状态码竟然还是200!也就是搜索引擎会把这个页面当作正常页面一样索引,但是这个页面却是没有内容的,这种类似现象应该叫做软404,也就是看似是一个404样式,却完全没有产生404的效果,起码没有返回状态码404。

其实这是discuz程序seo方面的一个盲区,我们需要做的是,将一个已经被删除的帖子或者文章给予搜索引擎返回码404,然后制作一个404页面,这样才是一个对于搜索引擎友好的设计。

解决方法
找到文件:source\module\forum\forum_viewthread.php
(如果是文章的话则是:source\module\portal\portal_view.php,以此类推)中的:

showmessage(‘thread_nonexistence’);

替换为:

header(‘HTTP/1.1 404 Not Found’);header(‘status: 404 Not Found’);include(“404/index.html”);exit();

其中“404/index.html”为自己设置的404页面的路径。
最终优化效果:

一个已被删除的文章页面优化前:

%title插图%num

优化后(www.qiankoo.com/article-15-1.html,已自动跳转至404页面):

%title插图%num

第三、“插件不存在或已关闭”如何设置返回404状态?

之前给大家分享了修改Discuz帖子/文章被删除后跳转至404页面,并返回404状态,让大家知道了如何设置帖子或者文章被删除了后返回404状态,从而对404更有利。(修改404的重要性就不再赘述了,懂的自然懂。)

那么如果插件被删了,出现“插件不存在或已关闭”

%title插图%num

那么如何使这样一个页面也返回404代码呢?

在解决这样一个问题之前我也百度了一下,这个问题关注的人并不多,有人有这样的疑问,但是没有解决,所以没有从度娘那里找到答案。在苦苦折腾一番之后终于找到了代码在哪里修改,特此给大家分享一下。

解决步骤

1、打开网站根目录,找到“plugin.php”文件,最好使用专业点的软件打开,比如editplus、dreamweaver等。

2、找到第37行代码,具体位置:
if(empty($identifier) || !preg_match(“/^[a-z0-9_\-]+$/i”, $module) || !in_array($identifier, $_G[‘setting’][‘plugins’][‘available’])) {        showmessage(‘plugin_nonexistence’);

将其中的

showmessage(‘plugin_nonexistence’);

替换成:

header(‘HTTP/1.1 404 Not Found’);header(‘status: 404 Not Found’);include(“404/index.html”);exit();

因为“showmessage(‘plugin_nonexistence’);”这一段在文件里出现比较多,37行的替换掉对于seo效果是最好的,其他的可以不用管,

其中“404/index.html”为自己设置的404页面的路径。

效果演示:修改之前:

%title插图%num

修改之后:

%title插图%num

第四、discuz 帖子中复制链接设置为静态地址

%title插图%num
用过discuz帖子中“复制链接”功能的都知道点击复制链接后得到的链接是这样形式:hdtune硬盘检测详解教程http://www.qiankoo.com/forum.php?mod=viewthread&tid=818&fromuid=1(出处: 千酷论坛)

为什么链接是这样的动态地址,而不是伪静态的地址呢?我们很容易发现url地址中有“fromuid=1”通俗的理解为“来自uid1”。
到这里我们应该能够理解,这其实discuz“访问推广”的功能,别人通过这个链接访问了这个帖子,那么uid为1的这个用户就会得到一定的积分。
既然我们知道了原理,那么你应该能够知道思路,那么就是关闭“访问推广”功能,我们通过后台会发现推广访问功能是关不了的,那么我们可以另辟蹊径,那就是把访问推广获得的积分设置为“0”,这样,这个访问推广功能就会变得无意义,系统会自动把“复制链接“变为伪静态地址。
OK,我们已经知道了所有来龙去脉,那么就开始把。

步骤:

进入后台,依次找到:全局——积分设置——积分策略,将”访问推广“一行全部设置为”0“,保存即可,接下来找一篇帖子试试吧。%title插图%num

第五、discuz x3.2标签伪静态教程(基于[1314]标签伪静态 3.0.2版)

插件介绍:
Discuz!X增加了标签功能,但是官方始终没提供标签的伪静态功能,所有标签页面都是动态的,这不利于百度收录,于是本插件诞生了,开启插件后所有标签相关的页面会自动伪静态,无需修改任何模板文件,兼容所有模板。

有利提高网站的收录、增加网站的权重、提升网站的搜索流量。此插件给你网站带来高效的收录和流量。网站天天快照,新帖快速收录,网站帖子快照更新,网站搜索功能,网站SEO优化。提高收录,搜索引擎的权重和快照更新,搜索流量提升。关键是新老网站,网站必须每日有新内容,更新内容,方才有效果。[如果你网站全部是采集,而什么都没有改动,这样本来就对网站不利。再好的插件也没有用。不管什么插件都不是万能的啊。什么百度谷歌收录神器,蜘蛛爬行,网站地图等等SEO插件都是没有用的。网站还是要靠自己优化的。原创内容、好的内容。搜索引擎不收录、流量不高才怪]

使用帮助:

开启插件后把插件后台提供的伪静态规则按说明添加到你论坛的伪静态文件里

标签页演示:
标签首页:tag.html
标签默认内容页:tag-274.html
标签相关帖子页:tag-thread-274-1.html
标签相关日志页:tag-blog-274-1.html

特别提示:演示地址请以本介绍给出的URl为准,演示可查看草根吧网站。
(一)、伪静态规则添加

WIN的添加(httpd.ini)伪静态规则:

RewriteRule ^(.*)/tag-(.+)\.html*$ $1/misc.php\?mod=tag&id=$2
RewriteRule ^(.*)/tag\.html*$ $1/misc.php\?mod=tag

linux系统(.htaccess或httpd.conf)伪静态规则:

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^tag-(.+)\.html$ misc.php?mod=tag&id=$1
RewriteCond %{QUERY_STRING} ^(.*)
RewriteRule ^tag\.html$ misc.php?mod=tag

确保最后一行伪静态规则为:

RewriteRule ^([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ plugin.php?id=$1:$2&%1

(二)、修改帖子内标签链接(修改原程序文件建议备份,养成好习惯)

X3.2  是 template/default(模板目录)/forum/viewthread_node_body.htm下载到本地打开

查找:

<a title="$var[1]" href="misc.php?mod=tag&id=$var[0]" target="_blank">$var[1]</a>

替换为:

<a title="$var[1]" href="tag-$var[0].html" target="_blank">$var[1]</a>

(三)、修改标签页(tag.htm)标签链接


文件在template/default/tag/tag.htm
查找:

<a href="misc.php?mod=tag&id=$tag[tagid]" title="$tag[tagname]" target="_blank" class="xi2">$tag[tagname]</a>

替换为:

<a href="tag-$tag[tagid].html" title="$tag[tagname]" target="_blank" class="xi2">$tag[tagname]</a>

(四)、修改标签列表页导航链接tagitem.htm

文件在template/default/tag/tagitem.htm (共2处!)

查找1:

<a href="misc.php?mod=tag">{lang tag}</a>

替换为:

<a href="tag.html">{lang tag}</a>

查找2:

<a href="misc.php?mod=tag&id=$id">$tagname</a>

替换为:

<a href="tag-$id.html">$tagname</a>

(五)、最后修改robort.txt让蜘蛛爬行标签页.

删除或注释掉根目录下misc.php的这段代码

$discuz->reject_robot();

robots.txt文件删除以下两条禁止蜘蛛抓取的规则:

Disallow: /misc.php
Disallow: /*?mod=misc*

第六、下载相关插件

1、sitemap网站地图插件
2、百度主动推送
3、蜘蛛记录4、nofollow
5、百度sitemap(结合sitemap数据提交与百度的站内搜索。)
6、有机会的同学,最好用一下百度加速云

第七、修改水印

如果设置 GIF 类型的文件作为水印,水印图片为 static/image/common/watermark.gif,如果设置 PNG 类型的文件作为水印,水印图片为 static/image/common/watermark.png,您可替换水印文件以实现不同的水印效果。如果设置文本类型的水印并且使用 GD 图片处理库,那么还需要 FreeType 库支持才能使用。将修改好的水印图片替换就可以了。然后开启插件。

第八、修改为百度站内搜索

参考地址:http://addon.discuz.com/?@addon_baidu_search.plugin.64073

或者下载插件:百度sitemap

第九、discuz x3.2 前后台所有版权修改教程

template/default/common 修改通用的头部 Powered by Discuz!
header_common.htm
source/admincp 修改管理后台底部和左下角底部 Powered by Discuz
admincp_login.php
admincp_main.php
source/archiver/common 修改存档页面顶部和底部的版权
footer.php
header.php
source/language  修改管理后台登陆页面的关于程序介绍的内容
lang_admincp_login.php
static/image/admincp  后台登陆页左侧logo图片
login_title.gif
static/image/common  修改搜索页面左上角logo图片和水印图片
logo_sc_s.png
watermark.png
static/image/mobile/images 手机版面的版权
logo.png
static/image/mobile 手机版面的版权
logo.gif
uc_server/images 默认头像地址,根据需要修改
noavatar_big.gif
noavatar_middle.gif
noavatar_small.gif

至此,所有版权文件的位置均已经罗列出来了,对于懂点代码的站长而言,修改肯定得心应手了,菜鸟级别的如果有什么不懂的就请留言吧。记住文件的修改技巧就是,用dreamweaver打开后,用“查找和替换项”搜索 Powered ,然后修改相关内容。

第十、给discuz所有图片添加ALT与title属性

1、首先找到:/template/default/forum/discuzcode.htm文件,default代表你网站的模版

2、全文搜索:

<img{if $attach['price'] && $_G['forum_attachmentdown']

就会看到一段访问文章图片的代码,这里是没有alt属性的!
找到%title插图%num两处)

inpost="1"{if $_GET['from'] != 'preview'}
后面添加:
alt="$attach[imgalt]" title="$attach[imgalt]"

然后就可以看测试效果了。

第十一、修改后台路径地址:

1、第一步:根目录中,admin.php可以自定义名字或者目录名+自定义名字比如:abc.php 或者 mulu/abc.php
2、第二步:进入 template/default/forum/下找到viewthread_node.htmCTRL+H批量替换 admin.php?为 abc.php? 或者 替换为 mulu/abc.php?
3、第三步:进入 data/template/下找到 8_diy_forum_viewthread.tpl.php CTRL+H批量替换 admin.php?为 abc.php? 或者 替换为 mulu/abc.php?
4、第四步:进入 api/addons/ 下找到channel.htmCTRL+H批量替换 admin.php?为 abc.php? 或者 替换为 mulu/abc.php?
注意:1、Ctrl+H替换时,一定替换admin.php?而不是admin.php 2、修改时候请用专业软件修改。

第十二、Discuz! X3.1 “导读”页面优化(伪静态/title/作者nofollow/rss订阅)

增加伪静态规则,以Nginx为例:

  1. rewrite ^([^\.]*)/latest-([a-z]+)-([0-9]+)\.html$ $1/forum.php?mod=guide&view=$2&page=$3 last;

复制代码

注意:必须放在

  1. rewrite ^([^\.]*)/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ $1/plugin.php?id=$2:$3 last;

复制代码

windows:

  1. RewriteRule ^(.*)/(fid|tid)-([0-9]+)\.html(\?(.*))*$ $1/index\.php\?action=$2&value=$3&$5
  2. RewriteRule ^(.*/)*class-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php\?mod=forumdisplay&fid=$2&filter=typeid&typeid=$3&page=$4
  3. RewriteRule ^(.*/)*latest-(\w+)-([0-9]+)\.html$ $1/forum.php\?mod=guide&view=$2&page=$3

复制代码

之前任一行,否则无法生效。修改后需要重载Nginx。
2、让“导读”页面上的 最新XX 、抢沙发 等(除“我的帖子”)标签的链接伪静态化。打开 forum/guide 模板文件,将

  1. <ul id=”thread_types” class=”ttp bm cl”>

复制代码

后面的5个li行替换为:

  1. <li $currentview[‘hot’]><a href=”latest-hot-1.html”>{lang guide_hot}</a></li>
  2. <li $currentview[‘digest’]><a href=”latest-digest-1.html”>{lang guide_digest}</a></li>
  3. <li $currentview[‘new’]><a href=”latest-new-1.html”>{lang guide_new}</a></li>
  4. <li $currentview[‘newthread’]><a href=”latest-newthread-1.html”>{lang guide_newthread}</a></li>
  5. <li $currentview[‘sofa’]><a href=”latest-sofa-1.html”>{lang guide_sofa}</a></li>

复制代码

  1. {lang title}

复制代码

替换为:

  1. <div class=”tf” style=”padding-left:5px;”>主题列表</div>

复制代码

3、将底部翻页按钮前的“导读首页”改为“最新热门”,并将其链接伪静态化。打开 forum/guide 模板文件,将

  1. <span class=”pgb y”><a href=”forum.php?mod=guide”>{lang guide_index}</a></span>

复制代码

修改为:

  1. <span class=”pgb y”><a href=”latest-hot-1.html”>最新热门</a></span>

复制代码

4、将面包屑导航条中的“导读”改为站名,并使后面的链接伪静态化。打开 forum/guide 模板文件,将

  1. <a href=”./” class=”nvhm” title=”{lang homepage}”>$_G[setting][bbname]</a><!–{if helper_access::check_module(‘guide’)}–><em>»</em><a href=”forum.php?mod=guide&view=index”>{lang guide}</a><!–{/if}–>

复制代码

修改为

  1. <a href=”./” class=”nvhm” title=”{lang homepage}”></a><em>»</em><a href=”./”>$_G[setting][bbname]</a>

复制代码

打开 source/module/forum/forum_guide 文件,将

  1. <a href=”forum.php?mod=guide&view=’.$view.'”>

复制代码

替换为

  1. <a href=”latest-‘.$view.’-1.html”>

复制代码

5、删除title中的“导读-”。打开 source/module/forum/forum_guide 文件,将

  1. $navtitle = $lang[‘guide’].’-‘.$lang[‘guide_’.$view];

复制代码

替换为

  1. $navtitle = $lang[‘guide_’.$view].$title_page;

复制代码

并在前面增加一行

  1. if($_GET[‘page’] > 1) { $title_page = ‘(第’.$_GET[‘page’].’页)’; }

复制代码

6、让“导读”页面上的翻页按钮静态化。打开 source/module/forum/forum_guide 文件,将

  1. $theurl = ‘forum.php?mod=guide&view=’.$view;

复制代码

剪切到其后

  1. if($view == ‘my’)

复制代码

里面的第一行,然后在

  1. $data[$view] = get_guide_list($view, $start, $perpage);

复制代码

前增加一行

  1. $theurl = ‘latest-‘.$view;

复制代码

(此项操作的目的是使“我的帖子”页面的翻页功能不受影响)。接着将

  1. $multipage = multi

复制代码

修改为:(将翻页按钮由标准改为自定义)。

  1. $multipage = multi_guide

复制代码

打开 source/function/function_core 文件,在这段代码前面定义(定义multi_guide):

  1. function simplepage($num, $perpage, $curpage, $mpurl)

复制代码

定义:

  1. function multi_guide($num, $perpage, $curpage, $mpurl, $maxpages = 0, $page = 10, $autogoto = FALSE, $simple = FALSE, $jsfunc = FALSE) {
  2. return $num > $perpage ? helper_page_guide::multi($num, $perpage, $curpage, $mpurl, $maxpages, $page, $autogoto, $simple, $jsfunc) : ”;
  3. }

复制代码

进入 source/class/helper/ 目录,将 helper_page.php 复制一份命名为 helper_page_guide.php 。并依次修改 helper_page_guide.php 文件中的以下部分:

  1. helper_page

复制代码

修改为:(共两处,其中文件头注释中的那处无关紧要);

  1. helper_page_guide

复制代码

  1. $pagevar = ‘page=’;

复制代码

改为:

  1. $pagevar = ‘-‘;

复制代码

  1. $jsurl = $mpurl.(strpos($mpurl, ‘{page}’) !== false ? ‘\’.replace(\'{page}\’, this.value == 1 ? \’\’ : this.value)’: $pagevar.’\’+this.value;’).’; doane(event);’;

复制代码

修改为:(此项操作使手动输入页码翻页时链接静态化)

  1. $jsurl = substr($mpurl, 0, -1).(strpos($mpurl, ‘{page}’) !== false ? ‘\’.replace(\'{page}\’, this.value == 1 ? \’\’ : this.value)’: $pagevar.’\’+this.value’).’+\’.html\’; doane(event);’;

复制代码

将         (翻页页码链接静态化)

  1. return $mpurl.$separator.$pagevar.$page;

复制代码

修改为

  1. return substr($mpurl, 0, -1).$separator.$pagevar.$page.’.html’;

复制代码

7、首页“最新回复”链接静态化。打开 forum/discuz 模板,将 forum.php?mod=guide&view=new 替换为 latest-new-1.html8、将“我的帖子”标签链接加上nofollow,并且在未登录状态下不出现下拉菜单。
打开 forum/guide 模板文件,将

  1. <a id=”filter_special” href=”forum.php?mod=guide&view=my” onmouseover=”showMenu(this.id)”>

复制代码

修改为

  1. {if $_G[‘uid’]}<a id=”filter_special” href=”forum.php?mod=guide&view=my” onmouseover=”showMenu(this.id)”>{else}<a href=”forum.php?mod=guide&view=my” rel=”nofollow”>{/if}

复制代码

  1. <!–{if !IS_ROBOT}–>

复制代码

修改为:

  1. <!–{if $_G[‘uid’]}–>

复制代码

9、整理“导读”页面“rss订阅”的代码。打开 source/module/forum/forum_guide 文件.

  1. ”    <link>{$_G[siteurl]}forum.php?mod=guide&view=$view</link>\n”

复制代码

修改为

  1. ”    <link>{$_G[siteurl]}latest-$view-1.html</link>\n”.

复制代码

  1. Discuz! Board by Comsenz Inc.

复制代码

修改为:

  1. {$_G[setting][bbname]}

复制代码

  1. $filename = $_G[‘siteurl’].$_G[‘setting’][‘attachurl’].’forum/’.$attachfile;

复制代码

替换为

  1. $filename = $_G[‘setting’][‘attachurl’].’forum/’.$attachfile;

复制代码

10、去掉最后回复时间及其作者的链接,给主帖作者链接加上nofollow。打开 forum/guide_list_row 模板

  1. <td class=”num”><a href=”forum.php?mod=viewthread&tid=$thread[tid]&extra=$extra” class=”xi2″>$thread[replies]</a><em><!–{if $thread[‘isgroup’] != 1}–>$thread[views]<!–{else}–>{$groupnames[$thread[tid]][views]}<!–{/if}–></em></td> 后面的 <td class=”by”>

复制代码

后面的替换为:

  1. <td class=”by”>
  2. <cite><!–{if $thread[‘lastposter’]}–>$thread[lastposter]<!–{else}–>$_G[setting][anonymoustext]<!–{/if}–></cite>
  3. <em>$thread[lastpost]</em>
  4. </td>

复制代码

  1. <a href=”home.php?mod=space&uid=$thread[authorid]” c=”1″>

复制代码

修改为

  1. <a href=”home.php?mod=space&uid=$thread[authorid]” rel=”nofollow” target=”_blank” c=”1″> 。

复制代码

11、删除标题前面图标的链接。打开 forum/guide_list_row 模板,删除

  1. <a href=”forum.php?mod=viewthread&tid=$thread[icontid]&{if $_GET[‘archiveid’]}

复制代码

起至

  1. {lang target_blank}” target=”_blank”> 的整段代码,同时将随后最近一个 <!–{/if}–> 后面的 </a> 删除。

复制代码

12、删除回复数的链接。同样是 forum/guide_list_row 模板,将

  1. <a href=”forum.php?mod=viewthread&tid=$thread[tid]&extra=$extra” class=”xi2″>$thread[replies]</a>

复制代码

替换为

  1. $thread[replies]

复制代码

OK,完工

第十三、Discuz防止直接恶意访问admin.php

功能说明:admin.php是discuz默认的后台地址,正常情况下可以直接访问,为了防止某些恶意访问的情况,可以修改以下内容进行安全性能提升。

      适用版本:Discuz!x1-x3.2

      具体实施方案:

      admin.php中找到:

      $discuz->init();

      换行后,添加如下代码,就可以了

      if(!$_G[‘uid’] || !getstatus($_G[‘member’][‘allowadmincp’], 1)) {

      header(‘Location: /’);

      }

      如果用户非管理员全部返回网站根目录。

第十四、美化导读中的最新发表的导航横条

在forum.php?mod=guide&view=newthread地址的导读中,对于最新发表等会有一个横条的导航。去掉方法如下:

打开template\default\forum\guide.htm模板文件,找到17-35行的代码进行删除,更新缓存后这个横条就被去除了

 <div>


                                <div>


                                        <!--{if $view != 'index' && $view != 'my'}-->


                                        <span>


                                                <a href="forum.php?mod=guide&view=$view&rss=1" target="_blank" title="RSS">{lang rss_subscribe_this}</a>


                                        </span>


                                        <!--{/if}-->


                                        <h1>


                                                $lang['guide_'.$view]


                                        </h1>


                                </div>


                                <!--{if $view != 'my'}-->


                                <div>


                                        <div>


                                                <div>$lang['guide_'.$view.'_description']</div>


                                        </div>


                                </div>


                                <!--{/if}-->


                        </div>

第十五、UCenter登录没反映与登录不进去

打开uc_server/model目录里的admin.php

找到:

$this->cookie_status = 0;

替换为:

$this->cookie_status = isset($_COOKIE['sid']) ? 1 : 0;

第十六、去掉discuz贴内“分享到”“分享、收藏、评分、支持、反对、评分”等按钮

1、去除:“分享到:QQ空间、腾讯微薄、腾讯朋友”
文件目录为(文本编辑器打开):template/default/forum/viewthread_node.htm(举例为默认模版)
搜索到:(删除即可)

<!--{if !empty($_G['setting']['pluginhooks']['viewthread_share_method'])}-->
<div class="tshare cl">
<strong>{lang viewthread_share_to}:</strong>
<!--{hook/viewthread_share_method}-->
</div>
<!--{/if}-->

2、去除:“分享、收藏、支持、反对、评分”
文件目录为(文本编辑器打开):template/default/forum/viewthread_node.htm(举例为默认模版)
搜索到:(删除即可)

<!--{if $_G['setting']['homestatus']}-->
<a href="home.php?mod=spacecp&ac=share&type=thread&id=$_G[tid]" id="k_share" onclick="showWindow(this.id, this.href, 'get', 0);" onmouseover="this.title = $('sharenumber').innerHTML + ' {lang activity_member_unit}{lang thread_share}'"><i><img src="{IMGDIR}/oshr.png" alt="{lang thread_share}" />{lang thread_share}<span id="sharenumber">{$_G['forum_thread']['sharetimes']}</span></i></a>
<!--{/if}-->
<a href="home.php?mod=spacecp&ac=favorite&type=thread&id=$_G[tid]" id="k_favorite" onclick="showWindow(this.id, this.href, 'get', 0);" onmouseover="this.title = $('favoritenumber').innerHTML + ' {lang activity_member_unit}{lang thread_favorite}'"><i><img src="{IMGDIR}/fav.gif" alt="{lang thread_favorite}" />{lang thread_favorite}<span id="favoritenumber">{$_G['forum_thread']['favtimes']}</span></i></a>
<!--{if ($_G['group']['allowrecommend'] || !$_G['uid']) && $_G['setting']['recommendthread']['status']}-->
<a id="recommend_add" href="forum.php?mod=misc&action=recommend&do=add&tid=$_G[tid]" {if $_G['uid']}onclick="ajaxmenu(this, 3000, 1, 0, '43', 'recommendupdate({$_G['group']['allowrecommend']})');return false;"{else} onclick="showWindow('login', this.href)"{/if} onmouseover="this.title = $('recommendv_add').innerHTML + ' {lang activity_member_unit}$_G[setting][recommendthread][addtext]'"><i><img src="{IMGDIR}/rec_add.gif" alt="$_G['setting']['recommendthread'][addtext]" />$_G['setting']['recommendthread'][addtext]<span id="recommendv_add">$_G[forum_thread][recommend_add]</span></i></a>
<a id="recommend_subtract" href="forum.php?mod=misc&action=recommend&do=subtract&tid=$_G[tid]" {if $_G['uid']}onclick="ajaxmenu(this, 3000, 1, 0, '43', 'recommendupdate(-{$_G['group']['allowrecommend']})');return false;"{else} onclick="showWindow('login', this.href)"{/if} onmouseover="this.title = $('recommendv_subtract').innerHTML + ' {lang activity_member_unit}$_G[setting][recommendthread][subtracttext]'"><i><img src="{IMGDIR}/rec_subtract.gif" alt="$_G['setting']['recommendthread'][subtracttext]" />$_G['setting']['recommendthread'][subtracttext]<span id="recommendv_subtract">$_G[forum_thread][recommend_sub]</span></i></a>
<!--{/if}-->
<!--{if $_G['group']['raterange'] && $post['authorid']}-->
<a href="javascript:;" id="ak_rate" onclick="showWindow('rate', 'forum.php?mod=misc&action=rate&tid=$_G[tid]&pid=$post[pid]', 'get', -1);return false;" title="{echo count($postlist[$post[pid]][totalrate]);} {lang people_score}"><i><img src="{IMGDIR}/agree.gif" alt="{lang rate}" />{lang rate}</i></a>
<!--{/if}-->

 第十七、去掉页1论坛版权链接,防水墙链接,归档,搜索页面版权链接

每次去爱战网查询自己论坛的友情链接时,看到那句“首页无本站链接”心里就觉得别扭,特别是discuz论坛,一下子居然有3个这种单向链接,真是忍无可忍啊!可又不知到怎么删掉那些链接,十分的苦恼,不过这个问题总算被垃圾站解决了,下面就看看教程吧!

首先:去掉底部防水墙链接的方法→

FTP登陆网址根目录,查找source\plugin\security里面security.class.php文件,使用Dreamwever打开security.class.php搜索以下代码(大概在代码91行,不同的DZ版本不同):

function global_footerlink() {
        return ' <a href="http://discuz.qq.com/service/security" target="_blank" title="'.lang('plugin/security', 'title').'"><img src="static/image/common/security.png"></a>';
}

如果想直接去掉链接则替换为以下代码:

function global_footerlink() {
        return ' <img src="static/image/common/security.png"></a>';
}

 

(实际上是删除这段代码即可<a href=”http://discuz.qq.com/service/security” target=”_blank” title=”‘.lang(‘plugin/security’, ‘title’).’”>):

当然也可保留链接而加上nofollow标签:

function global_footerlink() {
return ' <a title="'.lang('plugin/security', 'title').'" href="http://discuz.qq.com/service/security"rel="nofollow" target="_blank"><img src="static/image/common/security.png" alt="" /></a>';
}

第二:去掉底部版权Powered by Discuz! X2.5、© 2009-2012 Comsenz Inc.处链接→
打开根目录下template\default\common 找到footer.htm文件,用deamweaver打开,点击编辑,再点击查找和替换powerd by Discuz! 知道相应的位置修改底部版权的相应内容,找到以下代码:

<p>Powered by <strong><a href="http://www.discuz.net" target="_blank">Discuz!</a></strong> <em>$_G['setting']['version']</em><!--{if !empty($_G['setting']['boardlicensed'])}--> <a href="http://license.comsenz.com/?pid=1&host=$_SERVER[HTTP_HOST]" target="_blank">Licensed</a><!--{/if}--></p>
                        <p class="xs0">© 2001-2012 <a href="http://www.comsenz.com" target="_blank">Comsenz Inc.</a></p>

并删除代码中的:
(1)<a href=”http://www.discuz.net” target=”_blank”>
(2)<a href=”http://license.comsenz.com/?pid=1&host=$_SERVER[HTTP_HOST]” target=”_blank”>
(3)<a href=”http://www.comsenz.com” target=”_blank”>
这三段代码就可去掉底部链接!

第三:去掉Archiver页面的版权链接→
查找以下代码:

Powered by <strong><a target="_blank" href="http://www.discuz.net">Discuz! <?php echo $_G['setting']['version']; ?> Archiver</a></strong>   © 2001-2012 <a target="_blank" href="http://www.comsenz.com">Comsenz Inc.

 

删除\source\archiver\common\footer.php文件中超链接代码<a target=”_blank” href=”http://www.discuz.net”>即可:

第四:删除搜索页面的版权链接→

在根目录template/default/search/footer.htm找到以下代码:

<em>Powered by <strong><a href="http://www.discuz.net" target="_blank">Discuz!</a></strong> <em>$_G['setting']['version']</em><!--{if !empty($_G['setting']['boardlicensed'])}--> <a href="http://license.comsenz.com/?pid=1&host=$_SERVER[HTTP_HOST]" target="_blank">Licensed</a><!--{/if}--></em>  
        <em>© 2001-2012 <a href="http://www.comsenz.com" target="_blank">Comsenz Inc.</a>

 

删除超链接代码即可……

当然如果不想删除以上的这些DZ论坛超链接,也可保留链接而加上nofollow标签,方法同文章中加粗红字标注的方法一致!

第十八、如何实现discuz!门户文章的标签功能

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

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

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

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

(1)source/admincp/admincp_article.php

第51行:

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

复制代码

(2)source/function/function_portalcp.php

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

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

复制代码

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

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

  1. 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 选出来修改:

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

复制代码

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

第一步、修改文章添加Tag模版:/template/default/portal/portalcp_article.htm
找到内容代码:

  1. <div class=”bm bml”>
  2.          <div class=”bm_h cl”>
  3.                 <h2>{lang article_description}</h2>
  4.          </div>
  5.          <div class=”bm_c”><textarea id=”summary” name=”summary” cols=”80″ class=”pt” maxlength=”120″ style=”width: 98.7%; height: 51px;”>$article[summary]</textarea>
  6.          </div>
  7. </div>

复制代码

在此代码下面添加

  1. <div class=”bm bml”>
  2.         <div class=”bm_h cl”>
  3.              <h2>Tag 标签</h2>
  4.         </div>
  5.         <div class=”bm_c”><input type=”text” id=”tags” name=”tags”  class=”px” maxlength=”120″ size=”80″ value=”$article[tags]” ></div>
  6.          <div class=”bm_h cl”>多个Tag 用空格隔开,例如:宿迁波仔博客 南京服务器 宿迁博客,尾部不需任何符号</div>
  7. </div>

复制代码

第二步、添加pre_portal_article_title表字段
字段名:tags ,类型varchar(255), 默认为空。
在后台的站长->数据库->升级 下面的Discuz! 数据库升级,文本框,复制下面SQL:

  1. alter table pre_portal_article_title add tags varchar(255)

复制代码

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

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

  1. $_POST[‘pagetitle’] = censor($_POST[‘pagetitle’]);

复制代码

在此代码下面添加

  1. $_POST[‘tags’] = censor(trim($_POST[‘tags’]));

复制代码

继续查找代码

  1. $setarr = array(
  2.                  ‘title’ => $_POST[‘title’],
  3.                  ‘shorttitle’ => $_G[shorttitle’],
  4.                  ‘author’ => $_G[author’],
  5.                  ‘from’ => $_G[from’],
  6.                  ‘fromurl’ => $_G[fromurl’],
  7.                  ‘dateline’ => intval($_G[dateline’]),
  8.                  ‘url’ => $_G[‘gp_url’],
  9.                  ‘allowcomment’ => !empty($_POST[‘forbidcomment’]) ? ‘0’ : ‘1’,
  10.                  ‘summary’ => addslashes($summary),
  11.                  ‘catid’ => intval($_POST[‘catid’]),
  12.                  ‘tag’ => article_make_tag($_POST[‘tag’]),
  13.                  ‘status’ => $article_status,
  14.                  ‘highlight’ => $style,
  15.                  ‘showinnernav’ => empty($_POST[‘showinnernav’]) ? ‘0’ : ‘1’,
  16. );

复制代码

修改为

  1. $setarr = array(
  2.                  ‘title’ => $_POST[‘title’],
  3.                  ‘shorttitle’ => $_G[‘gp_shorttitle’],
  4.                  ‘author’ => $_G[‘gp_author’],
  5.                  ‘from’ => $_G[‘gp_from’],
  6.                  ‘fromurl’ => $_G[‘gp_fromurl’],
  7.                  ‘dateline’ => intval($_G[‘gp_dateline’]),
  8.                  ‘url’ => $_G[‘gp_url’],
  9.                  ‘allowcomment’ => !empty($_POST[‘forbidcomment’]) ? ‘0’ : ‘1’,
  10.                  ‘summary’ => addslashes($summary),
  11.                  ‘catid’ => intval($_POST[‘catid’]),
  12.                  ‘tag’ => article_make_tag($_POST[‘tag’]),
  13.                  ‘status’ => $article_status,
  14.                  ‘highlight’ => $style,
  15.                  ‘showinnernav’ => empty($_POST[‘showinnernav’]) ? ‘0’ : ‘1’,

复制代码

  1. ‘tags’ => $_POST[‘tags’],

复制代码

(简单的就是在最后一行前加一句以上代码 )
第四步、修改文章显示函数/source/module/portal/portal_view.php
找到代码

  1. include_once template(“diy:portal/view:{$catid}”, NULL, NULL, NULL, $cat[‘articleprimaltplname’]);

复制代码

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

  1. $tags=explode(” “,$article[“tags”]);foreach($tags as $val) {
  2.                 $htmltags .= “<a href=\”/search.php?mod=portal&srchtxt=”.$val.”&searchsubmit=yes\” target=\”_blank\”>”.$val.”</a>  “;
  3. }

复制代码

第五步、修改文章显示模版/template/default/portal/view.htm
可以自己选择要放的位置,例如放到内容下面:查找

  1. $content[content]

复制代码

 

然后在下面加入代码

  1. <div>
  2.     <b>Tab标签:</b> $htmltags
  3. </div>

复制代码

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

地址:http://wangboxyk.cn/post/discuz-portal-tag.html

第十九、QQ登陆时显示 (1054) Unknown column ‘conuintoken’ in ‘field list’

问题分析

“conuintoken” in “field list”,我们查mysql主知道是说这个列不存在了,解决办法只需要增加列即可。

解决办法

1、修改config/config_global.php文件查找下面代码把0改为1,开启后台直接运行SQL

  $_config[‘admincp’][‘runquery’] = ‘0’;

  2、在后台后台——站长——数据库——升级,粘贴以下代码提交:

  alter table  pre_common_member_connect add   conuintoken  char(32) not null;
alter table  pre_common_connect_guest add   conuintoken  char(32) not null;

或直接在用phpmyadmin进行数据库升级操作

打开你的phpmyadmin,选择论坛的数据库, 点击 sql功能 ,

输入以下句子运行:(其中的 pre_ 为你论坛数据库的表前缀,如果不是默认的,请注意修改)

ALTER TABLE  `pre_common_member_connect` ADD COLUMN conuintoken char(32) NOT NULL DEFAULT ”;
ALTER TABLE  `pre_common_connect_guest` ADD COLUMN conuintoken char(32) NOT NULL DEFAULT ”;

都可以解决你的问题了,到这里 Unknown column “conuintoken” in “field list”就解决了哦。