奔跑的回忆 | 个人博客 |IT技术经验分享| irunthink.com - discuz
discuz DIY模块文章、帖子链接不调用伪静态链接，只显示动态链接解决方法 ...
最近在使用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触屏手机版文章链接伪静态调用解决方法
最近在使用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']['portal_article'] == "{id}.html"){//判断是否为设置的伪静态{id}.html，避免手机端首页模块数据调用、栏目页、文章页调用动态链接 return $article['aid'].".html"; } else { return 'portal.php?mod=view&aid='.$article['aid']; } } 红色部分是新增的PHP代码，关键点是：在discz后台->SEO设置->URL伪静态中，已经将门户文章页设置为“{id}.html”，这fetch_article_url函数里判断当$_G['setting']['rewriterule']['portal_article']设置的是{id}.html规则返回的伪静态链接是$article['aid'].".html"。在discuz后台更新缓存、Discuz模块调用缓存后，在discuz手机版的首页、栏目页、文章页查看文章链接已经是伪静态链接了。
discuz门户栏目的伪静态开发，分页也实现伪静态
最近在网上找了一个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['setting']['output']['preg']['search']['index']='/portal\.php\?mod\=list&catid\=([0-9]+)&(amp;)?page\=([0-9]+)/'; $_G['setting']['output']['preg']['replace']['index']="list-$1-$3.html"; 第五步：设置iis或Apache的伪静态规则Discuz系统设置里面有伪静态的规则，自动生成的。全局-》SEO设置-》查看当前的 Rewrite 规则，找到规则就加载到iis或apache上面，这就大公告成了！
这个故障最近经常有人发~大部分都不喜欢搜索~那就请你要解决问题 请回帖 顶上来让更多人看到~打开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 '';
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_common_member_connect 用户QQ互联表 pre_common_member_count 用户数据统计表 pre_common_member_crime 用户惩罚操作表 pre_common_member_field_forum 用户论坛设置表 pre_common_member_field_home 用户家园设置表 pre_common_member_forum_buylog 论坛购买日志 pre_common_member_grouppm 用户群发消息状态表 pre_common_member_log 用户操作日志表 pre_common_member_magic 用户道具配置表 pre_common_member_medal 用户勋章表 pre_common_member_newprompt 用户新提醒表 pre_common_member_profile 用户个人信息表 pre_common_member_profile_setting 用户个人信息设置表 pre_common_member_security 个人信息修改审核 pre_common_member_stat_field 用户状态字段表 pre_common_member_status 用户状态表 pre_common_member_validate 用户认证审核 pre_common_member_verify 用户认证设置 pre_common_member_verify_info 用户认证信息 pre_common_moderate 审核数据表 pre_common_myapp 漫游应用表 pre_common_myapp_count 漫游应用数据统计表 pre_common_myinvite 漫游邀请表 pre_common_mytask 用户任务表 pre_common_nav 导航菜单表 pre_common_onlinetime 在线时间表 pre_common_optimizer 优化表 pre_common_patch 漏洞补丁表 pre_common_plugin 插件表 pre_common_pluginvar 插件参数表 pre_common_process 高速缓存表 pre_common_regip 注册IP表，防重复注册 最多五次 pre_common_relatedlink 相关链接 pre_common_report 举报表 pre_common_searchindex 搜索索引表 pre_common_secquestion 密码问答问题表 pre_common_session 用户登录session表 pre_common_setting 网站设置参数表 pre_common_smiley 表情表 pre_common_sphinxcounter sphinx搜索程序用表 pre_common_stat 统计表 pre_common_statuser 统计用户表 pre_common_style 风格表 pre_common_stylevar 风格参数表 pre_common_syscache 系统参数缓存表 pre_common_tag tag表 pre_common_tagitem tag内容表 pre_common_task 用户任务表 pre_common_taskvar 任务参数表 pre_common_template 模板表 pre_common_template_block 模板模块表 pre_common_template_permission 模板权限表 pre_common_uin_black UIN 黑名单 pre_common_usergroup 用户组表 pre_common_usergroup_field 用户组权限表 pre_common_usergroup_field 用户组权限表 pre_common_visit 访问表 pre_common_word_type 敏感词类型表 pre_connect_disktask 磁盘任务 pre_connect_feedlog Connect feed日志表 pre_connect_memberbindlog Connect 用户绑定/解绑记录表 pre_connect_postfeedlog Connect 回帖帖feed日志 pre_connect_tthreadlog Connect 发帖帖帖feed日志 pre_connect_tlog 微博日志表 pre_forum_access 论坛访问权限单独设置表 pre_forum_activity 论坛活动表 pre_forum_activityapply 论坛活动报名表 pre_forum_announcement 论坛公告表 pre_forum_attachment 1.5 = 论坛附件表, x2 = 附件索引表 pre_forum_attachment_0 附件表(x2),用了分表即表名最后一位数字 = 附件tid的最后一位 pre_forum_attachmentfield 论坛附件扩展表(x2以去除) pre_forum_attachment_exif 论坛附件exif信息表 pre_forum_attachment_unused 未使用的附件表 pre_forum_attachtype 论坛附件类型表 pre_forum_bbcode 论坛UBBCODE表 pre_forum_collection 淘帖专辑表 pre_forum_collectioncomment 淘帖评论表 pre_forum_collectionfollow 淘帖订阅表 pre_forum_collectioninvite 邀请管理淘专辑表 pre_forum_collectionrelated 淘帖主题被收入专辑表 pre_forum_collectionteamworker 淘帖合作编辑表 pre_forum_collectionthread 淘帖包含主题表 pre_forum_creditslog 论坛积分日志表 pre_forum_debate 辩论主题表 pre_forum_debatepost 辩论帖子表 pre_forum_faq 常见问答表 pre_forum_filter_post 过滤回帖表 pre_forum_forum 论坛板块表 pre_forum_forumfield 论坛板块设置表 pre_forum_forumrecommend 版块推荐帖表 pre_forum_forum_threadtable 主帖表 pre_forum_groupcreditslog 群组积分日志 pre_forum_groupfield 群组表 pre_forum_groupinvite 群组邀请表 pre_forum_grouplevel 群组级别表 pre_forum_groupuser 群组用户表 pre_forum_hotreply_member 火热回复用户表 pre_forum_hotreply_number 火热回复数字表 pre_forum_imagetype 图像类型表 pre_forum_medal 勋章表 pre_forum_medallog 勋章发放日志表 pre_forum_memberrecommend 用户推荐表 pre_forum_moderator 版主表 pre_forum_modwork 版主工作表 pre_forum_newthread 论坛新主题表 pre_forum_onlinelist 论坛在线列表 pre_forum_order 论坛订单表 pre_forum_poll 论坛投票帖表 pre_forum_polloption 论坛投票选项表 pre_forum_polloption_image 投票选项图片表 pre_forum_pollvoter 论坛投票用户表 pre_forum_post 论坛帖子表 pre_forum_postcomment 帖子评论表 pre_forum_postlog 回复日志表 pre_forum_postposition 回复楼层表 pre_forum_poststick 回复置顶到主题帖表 pre_forum_post_moderate 论坛回复管理表 pre_forum_post_location 论坛回复地理信息位置表 pre_forum_post_tableid 分表后回复帖的ID pre_forum_postcache 论坛回复缓存表 pre_forum_postcomment 论坛回复点评表 pre_forum_postlog 论坛回复日志表 pre_forum_poststick 论坛回复插入 pre_forum_promotion 网站推广表 pre_forum_ratelog 打分日志表 pre_forum_relatedthread 相关帖子表 pre_forum_rsscache RSS缓存表 pre_forum_sofa 论坛沙发表 pre_forum_spacecache 空间信息缓存表 pre_forum_statlog 论坛统计日志 pre_forum_thread 论坛主题表 pre_forum_threadpreview 主帖预览表 pre_forum_threadprofile 帖子信息表 pre_forum_threadprofile_group 帖子信息组表 pre_forum_threadcalendar 帖子日历表 pre_forum_thread_moderate 主题管理表 pre_forum_threadaddviews 帖子查看数字表 pre_forum_threadclass 帖子分类表 pre_forum_threadclosed 帖子关闭表 pre_forum_threaddisablepos 帖子取消表 pre_forum_threadhot 火热主题表 pre_forum_threadimage 主题图片表 pre_forum_threadlog 主题日志表 pre_forum_threadmod 主题管理记录表 pre_forum_threadtype 主题分类信息表 pre_forum_trade 商品帖数据表 pre_forum_tradecomment 商品帖评论 pre_forum_tradelog 商品帖交易日志 pre_forum_typeoption 类型选项 pre_forum_typeoptionvar 类型选项参数 pre_forum_typevar 类型参数 pre_forum_warning 警告表 pre_home_album 家园相册表 pre_home_album_category 家园相册分类表 pre_home_appcreditlog 家园应用积分日志 pre_home_blacklist 家园黑名单表 pre_home_blog 家园博客表 pre_home_blogfield 家园博客内容表 pre_home_blog_category 家园博客分类表 pre_home_blog_moderate 家园日志管理表 pre_home_class 日志个人分类表 pre_home_click 对日志和图片表态动作 pre_home_clickuser 静态用户表 pre_home_comment 家园评论表 pre_home_comment_moderate 家园评论留言管理表 pre_home_docomment 家园记录回复表 pre_home_doing 家园记录表 pre_home_doing_moderate 家园记录管理表 pre_home_favorite 家园收藏表 pre_home_feed 家园动态表 pre_home_feed_app 漫游APP动态表 pre_home_follow 家园收听表 pre_home_follow_feed 收听FEED表 pre_home_follow_feed_archiver 收听归档表 pre_home_friend 家园好友表 pre_home_friendlog 好友日志表 pre_home_friend_request 好友请求表 pre_home_notification 通知消息 pre_home_pic 家园图片表 pre_home_pic_moderate 家园日志管理表 pre_home_picfield 相册相关信息表 pre_home_poke 打招呼表 pre_home_pokearchive 打招呼归档 pre_home_share 分享表 pre_home_share_moderate 家园分享管理表 pre_home_show 上榜宣言 pre_home_specialuser 明星会员表 pre_home_userapp 漫游APP pre_home_userappfield 漫游APP pre_home_userapp_stat 漫游APP统计 pre_home_viewlog 日志和用户访问记录表 pre_home_visitor 最近访客记录表 pre_home_follow 广播收听表 pre_home_follow_feed 广播表 pre_home_follow_feed_archiver 广播归档表 pre_mobile_setting 手机设置表 pre_portal_article_content 文章内容表 pre_portal_article_count 文章计数表 pre_portal_article_moderate 门户文章管理表