奔跑的回忆 | 个人博客 |IT技术经验分享| irunthink.com - discuz
type: channel
link: https://www.irunthink.com/tag/discuz/
items: discuz DIY模块文章、帖子链接不调用伪静态链接，只显示动态链接解决方法 ...
items: Discuz x3触屏手机版文章链接伪静态调用解决方法
items: discuz门户栏目的伪静态开发，分页也实现伪静态
items: Discuz! 缺conuintoken字段解决
items: Discuz! 3.2 中各数据库表的作用

discuz DIY模块文章、帖子链接不调用伪静态链接，只显示动态链接解决方法 ...
type: item
date: 2018-10-21T11:01:00+08:00
description: 最近在使用Discuz X3搭建网站，使用Discuz diy调用文章、帖子均不显示伪静态链接，只显示动态链接。其实，在谭兴才博客介绍的一篇名为《discuz x3后台模块管理数据调用文章帖子链接显示动态不是伪静态解决方法》的文章中已经介绍过这种情况。接下来看下discuz diy模块只调用动态链接的原因分析吧！在discuz后台已经启用伪静态后，在前面diy模块中调用门户文章、论坛版块、帖子链接点击打开，伪静态正常显示，但是在门户首页DIY调用的文章、帖子链接显示却是动态链接，点进去后发现链接还是动态的链接，这样的链接是不宜被搜索引擎抓取。解决方法：第一步：前台管理员登录 --> DIY -->编辑(伪静态问题模块) -->模块模板（如下图）第二步：查看模块模板里的代码会发现：< a class="img" href="{url}"{target}> 或者< a style="color:#f00" href="{url}"{target}> 其中的问题之处就是a标签里，紧跟的不是href="{url}",将class="img"或style="color:#f00"移到href="{url}"后即可正常显示伪静态的链接。出现discuz diy模块调用文章、帖子链接是动态链接的原因主要是DIY模板模块时书写不规范造成的，切记discuz diy调用正确的代码是< a href="{url}" 其他代码>

Discuz x3触屏手机版文章链接伪静态调用解决方法
type: item
date: 2018-10-21T10:57:32+08:00
description: 最近在使用Discuz x3搭建网站，在PC版页面调用文章、帖子的时候，已经遇到了类似的问题，在discuz后台设置了伪静态，但是前端页面显示的依然是动态链接。在PC版页面Discuz diy模块只能调用动态链接，不能调用伪静态链接的解决方法请参考文章：《discuz x3后台模块管理数据调用文章帖子链接显示动态不是伪静态解决方法》、《discuz DIY模块文章、帖子链接不调用伪静态链接，只显示动态链接解决方法》。现在使用Discuz X3触屏手机版在首页、栏目页、文章页调用文章链接，还是调用的动态的文章链接。这的解决方法和PC版Discuz diy模块调用动态链接解决方法不一样。首先看下，discuz伪静态设置的规则： 4步discuz伪静态设置在经过1、2、3、4步的discuz文章伪静态设置之后，将“查看当前的 Rewrite 规则”（我使用的是Linux Nginx服务器，所以选择Nginx Web Server伪静态规则。）可以说这里的规则是因为有的人PC版discuz伪静态都还没设置好，就像而Discuz手机版需要自己动手改源码中的函数才能调用文章伪静态链接。接下来就看看Discuz触屏手机版文章伪静态源码修改方法：找到/source/function/function_portal.php文件，使用编辑器打开function_portal.php并搜索fetch_article_url，会在大概53行找到fetch_article_url函数如下：然后整个复制在下方新建一个方法名字改掉//原fetch_article_url函数如下function fetch_article_url($article) { global $_G; if(!empty($_G['setting']['makehtml']['flag']) && $article && $article['htmlmade']) { if(empty($_G['cache']['portalcategory'])) { loadcache('portalcategory'); } $caturl = ''; if(!empty($_G['cache']['portalcategory'][$article['catid']])) { $topid = $_G['cache']['portalcategory'][$article['catid']]['topid']; $caturl = $_G['cache']['portalcategory'][$topid]['domain'] ? $_G['cache']['portalcategory'][$topid]['caturl'] : ''; } return $caturl.$article['htmldir'].$article['htmlname'].'.'.$_G['setting']['makehtml']['extendname']; }else { return 'portal.php?mod=view&aid='.$article['aid']; } } 将上述fetch_article_url函数修改如下：//修改后的fetch_article_url函数如下function fetch_article_url($article) { global $_G; if(!empty($_G['setting']['makehtml']['flag']) && $article && $article['htmlmade']) { if(empty($_G['cache']['portalcategory'])) { loadcache('portalcategory'); } $caturl = ''; if(!empty($_G['cache']['portalcategory'][$article['catid']])) { $topid = $_G['cache']['portalcategory'][$article['catid']]['topid']; $caturl = $_G['cache']['portalcategory'][$topid]['domain'] ? $_G['cache']['portalcategory'][$topid]['caturl'] : ''; } return $caturl.$article['htmldir'].$article['htmlname'].'.'.$_G['setting']['makehtml']['extendname']; } elseif($_G['setting']['rewriterule']['po…

discuz门户栏目的伪静态开发，分页也实现伪静态
type: item
date: 2018-07-27T12:05:00+08:00
description: 最近在网上找了一个discuz门户栏目的伪静态二次开发的方法，但是栏目分页却没有实现伪静态的效果，经过查阅资料等，终于找到了原因，并添加了两行新的代码实现门户的栏目分页也能伪静态。具体的操作方法如下：基于代码X3，其它版本源码，请自行验证。Discuz后台的伪静态配置不包含门户频道页的伪静态配置。应该是考虑到频道页的URL地址变化太多的原因。下面，我们就来开发源码，加上这个功能。第一步：加上语言包中的记录：根目录下：source\language\lang_admincp.php ，找到setting_seo_rewritestatus_portal_article 这一行，大概在1500行左右，搜索一下吧。在这句下面加上一句：'setting_seo_rewritestatus_portal_list' => '门户频道页',第二步：在后台加上设置项根目录下：source\function\function_admincp.php ，找到rewritedata函数，在if语句的，两个大括号中，加上下面两段程序上面一段加上 if (in_array('portal_list', $_G['setting']['rewritestatus'])) { $data['search']['portal_list'] = "/" . $_G['domain']['pregxprw']['portal'] . "\?mod\=list&(amp;)?catid\=(\d+)(&page\=(\d+))?\"([^\>]*)\>/e"; $data['replace']['portal_list'] = "rewriteoutput('portal_list', 0, '\\1', '\\3', '\\5', '\\6')"; } 下面一段加上 $data['rulesearch']['portal_list'] = 'list-{catid}-{page}.html'; $data['rulereplace']['portal_list'] = 'portal.php?mod=list&catid={catid}&page={page}'; $data['rulevars']['portal_list']['{catid}'] = '([0-9]+)'; $data['rulevars']['portal_list']['{page}'] = '([0-9]+)'; 第三步：兼容栏目页URL地址设置找到文件：根目录source\function\function_portal.php 下的函数getportalcategoryurl重新写成下面的代码：function getportalcategoryurl($catid) {if (empty($catid)) return ''; loadcache('portalcategory'); $portalcategory = getglobal('cache/portalcategory'); if ($portalcategory[$catid]) { $url = str_replace('&', '&', $portalcategory[$catid]['caturl']); $url = str_replace('&', '&', $url); $url = str_replace('http://'.$_SERVER['HTTP_HOST'].'/', '', $url); return $url; } else { return ''; }}第四步：设置前台页面URL地址切换根目录\source\function\function_core.php 这个文件中找到：函数rewriteoutput在一串的if ... else if中加上一段elseif ($type == 'portal_list') { list(,,, $id, $page, $extra) = func_get_args(); $r = array( '{catid}' => $id, '{page}' => $page ? $page : 1, ); } 第五步：设置output_replace函数真假检索分页链接，实现伪静态根目录\source\function\function_core.php 这个文件中找到：函数output_replace，在其代码：$content = preg_replace($_G'setting''preg', $_G['setting']['output']['preg']['replace'], $content);上方加入下面两行代码 $_G['settin…

Discuz! 缺conuintoken字段解决
type: item
date: 2018-07-24T14:18:55+08:00
description: 这个故障最近经常有人发~大部分都不喜欢搜索~那就请你要解决问题 请回帖 顶上来让更多人看到~打开qq互联提示一下错误：Discuz! Database Error(1054) Unknown column 'conuintoken' in 'field list'REPLACE INTO common_connect_guest SET conuintoken='7CF32BFC7A287A52C214CE8D5572B5B2' , conopenid='D97BD4F16541BB824016C0F495F88BA4' , conqqnick='微生活！'PHP DebugNo. File Line Code1 connect.php 40 require_once(%s)2 source/plugin/qqconnect/connect/connect_login.php 353 discuz_table->insert(Array, false, true)3 source/class/discuz/discuz_table.php 81 discuz_database::insert(%s, Array, false, true, false)4 source/class/discuz/discuz_database.php 60 discuz_database::query(%s, %s, %s, true)5 source/class/discuz/discuz_database.php 136 db_driver_mysql->query(%s, %s, true)6 source/class/db/db_driver_mysql.php 153 db_driver_mysql->halt(%s, %d, %s)7 source/class/db/db_driver_mysql.php 224 break()工具/原料Discuz! x3 x3.1 x3.2方法/步骤编辑config/config_global.php搜索：$_config'admincp' = '0';修改为：$_config'admincp' = '1';使用 后台------》站长----》 数据库---------》 升级输入以下句子运行：（其中的 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 '';

Discuz! 3.2 中各数据库表的作用
type: item
date: 2018-04-17T13:58:00+08:00
description: Crossday Discuz! Board（简称 Discuz!）是北京康盛新创科技有限责任公司推出的一套通用的社区论坛软件系统。自 2001 年 6 月面世以来，Discuz! 已拥有 13 年以上的应用历史和 200 多万网站用户案例，是全球成熟度最高、覆盖率最大的论坛软件系统之一。目前最新版本 Discuz! X3.2 正式版于 2014 年 6 月 4 日发布，首次引入应用中心的开发模式。2010 年 8 月 23 日，康盛创想与腾讯达成收购协议，成为腾讯的全资子公司。Crossday Discuz! Board（以下简称 Discuz!，中国国家版权局著作权登记号 2006SR11895）是康盛创想(北京)科技有限公司（英文简称 Comsenz）推出的一套通用的社区论坛软件系统，用户可以在不需要任何编程的基础上，通过简单的设置和安装，在互联网上搭建起具备完善功能、很强负载能力和可高度定制的论坛服务。Discuz! 的基础架构采用世界上最流行的 web 编程组合PHP+MySQL 实现，是一个经过完善设计，适用于各种服务器环境的高效论坛系统解决方案。作为国内最大的社区软件及服务提供商，Comsenz 旗下的 Discuz! 开发组具有丰富的 web 应用程序设计经验，尤其在论坛产品及相关领域，经过长期创新性开发，掌握了一整套从算法，数据结构到产品安全性方面的领先技术。使得 Discuz! 无论在稳定性、负载能力、安全保障等方面都居于国内外同类产品领先地位。pre_common_addon 插件扩展中心服务商表 pre_common_admincp_cmenu 后台管理面板，自定义常用菜单表 pre_common_admincp_group 后台团队职务名称表 pre_common_admincp_member 后台管理员成员表 pre_common_admincp_perm 后台团队职务权限分配表 pre_common_admincp_session 后台管理面板登录session表 pre_common_admingroup 后台管理组权限分配表 pre_common_adminnote 管理团队留言表 pre_common_advertisement 广告位管理表 pre_common_advertisement_custom 广告位自定义名称 pre_common_banned 禁止IP表 pre_common_block DIY 模块管理表 pre_common_block_favorite DIY模块收藏表:门户管理的模块管理里使用 pre_common_block_item DIY模块属性表 pre_common_block_item_data DIY模块数据表 pre_common_block_permission DIY模块权限表 pre_common_block_pic DIY模块图片表 pre_common_block_style DIY模块风格表 pre_common_block_xml 模块XML扩展类数据表 pre_common_cache 公用缓存表 pre_common_card 充值卡表 pre_common_connect_guest QQ互联游客表 pre_common_credit_log 积分记录表 pre_common_credit_log_field 积分记录详细信息 3.0版本增加 pre_common_credit_rule 积分策略表 pre_common_credit_rule_log 积分策略生效记录 pre_common_credit_rule_log_field 积分策略生效记录扩展 pre_common_cron 计划任务表 pre_common_devicetoken 设备数据表 3.0增加 pre_common_district 地区列表 pre_common_diy_data DIY 模板页数据存档表 pre_common_domain 应用域名分配表 pre_common_failedlogin 普通登录失败日志表 pre_common_friendlink 友情链接表 pre_common_grouppm 群发短信列表内容 pre_common_invite 邀请码表 pre_common_magic 道具表 pre_common_magiclog 道具日志表 pre_common_mailcron 邮件计划任务表 pre_common_mailqueue 邮件发送队列表 pre_common_member 用户表，密码是随机生成记录，实际记录在UCenter pre_common_member_action_log 用户表操作日志表 pre_co…