10

修改Discuz论坛的浏览量为每次增加随机数

文件位置:/source/module/forum/forum_viewthread.php

对函数viewthread_updateviews进行修改,约1025行到1049行。

一般来讲,修改如下代码

意为每次浏览增加2~9之间(含2和9)的随机数更新数据库中的记录。

但是这么修改也不是绝对的可以改变浏览量,还要结合网站管理后台的设置。

如果按上面的修改方法不好使,可以进入后台,按下面方法设置:

后台>>全局>>性能优化>>服务器优化>>是否优化更新主题浏览量

设置为“否” >> 提交

另外,也可以把下面这项设置为“否”,

后台>>全局>>性能优化>>服务器优化>>查看数开启防刷新

 

04

Discuz触摸屏版的注册页面增加其它字段(如手机号、真实姓名等等)

一、后台设置

进入后台>>用户>>用户栏目>>栏目列表(默认的),
找到“注册页显示”这列,向下找到“手机”或其它需要增加到注册页面选项的行,
之后点选对勾。
如果想进行其它编辑,点击项目右侧的“编辑”。

二、模板修改

在模板\template\模板文件名\touch\member\register.htm中
在适合的位置增加如下代码:

三、程序修改

1、打开文件\source\language\lang_blockclass.php
'blockclass_member_field_title' => '用户名', 的下一行增加如下代码
'blockclass_member_field_realname' => '真实姓名',
原因:为了使在页/home.php?mod=spacecp&ac=profile&op=base 的真实姓名项中的placeholder调用
2、打开文件\source\function\function_profile.php
在第189行esle内 增加 placeholder=\"".lang('blockclass', 'blockclass_member_field_'.$fieldid)."\"
修改后为:
$html = "<input type=\"text\" name=\"$fieldid\" id=\"$fieldid\" class=\"px\" value=\"$space[$fieldid]\" placeholder=\"".lang('blockclass', 'blockclass_member_field_'.$fieldid)."\" tabindex=\"1\" />";
原因:为了实现在手机显示表单时可以在框内直接显示标题提示信息
3、打开文件\source\class\class_member.php
大约672行 找到if(defined('IN_MOBILE'))把他连同下面的中括号内容全部注释,注释后如下:

原因:不注释,在手机注册时保存不了新增加的字段值

完成!

原创,转载请注明出处,谢谢!

03

Discuz数据库操作类

DZ数据库类详解

函数 功能
DB::table($tablename) 获取正确带前缀的表名,转换数据库句柄
DB::delete($tablename, 条件,条数限制) 删除表中的数据
DB::insert($tablename, 数据(数组),是否返回插入ID,是否是替换式,是否silent) 插入数据操作
DB::update($tablename, 数据(数组)条件) 更新操作
DB::fetch(查询后的资源) 从结果集中取关联数组,注意如果结果中的两个或以上的列具有相同字段名,最后一列将优先。
DB::fetch_first($sql) 取查询的第一条数据fetch
DB::fetch_all($sql) 查询并fetch
DB::result_first($sql) 查询结果集的第一个字段值
DB::query($sql) 普通查询
DB::num_rows(查询后的资源) 获得记录集总条数
DB::_execute(命令,参数) 执行mysql类的命令
DB::limit(n,n) 返回限制字串
DB::field(字段名, $pid) 返回条件,如果为数组则返回 in 条件
DB::order(别名, 方法) 排序

注意:由于 X1.5 里增加了SQL的安全性检测。因此,如果你的SQL语句里包含以下开头的函数 load_file,hex,substring,if,ord,char。 或者包含以下操作 intooutfile,intodumpfile,unionselect,(select’)都将被拒绝执行。

替换参数 功能
%t 表名,
%s 字串,如果是数组就序列化
%f 按 %F 的样式格式化字串
%d 整数
%i 不做处理
%n 若为空即为0,若为数组,就用’,’ 分割,否则加引号

C对象,可以有效的利用缓存,并且数据获得都统一在 class/table 目录下,好处是所有的查询都集中和复用。方便维护和升级。默认的T方法有以下默认的获得数据方式。每个数据表还需要看具体的表数据定义函数。#开头的,是插件表定义,会去插件目录下的table目录下找,所以插件开发也可以用这种方法。

函数 功能
C::t($tablename’)->count() 获取表所有行数
C::t($tablename’)->update(键值,$data) 更新键值数据
C::t($tablename’)->delete(键值) 删除键值数据
C::t($tablename’)->truncate() 清空表
C::t($tablename’)->insert($data, $return_insert_id,$replace) 插入数据
C::t($tablename’)->fetch_all($ids) fetch 数据,可以是单一键值或者多个键值数组
C::t($tablename’)->fetch_all_field() fetch所有的字段名表
C::t($tablename’)->range($start, $limit, $sort) fetch值域范围
C::t($tablename’)->optimize() 优化表

DB::query

修改数据库方法实例:
此查询的结果是把tid为10000的主题的浏览数增加1
DB::query("update ".DB::table('forum_thread')." set views=views+1 where tid = 10000");

此查询的结果是删除tid为10000的主题
DB::query("delete from ".DB::table('forum_thread')." where tid = 10000");

此查询的结果是在标签主表里面增加一个标签“标签名称”
DB::query("insert into ".DB::table('common_tag')." (tagname,status) values ('标签名称','0')");

DB::query与DB::fetch配合

DB::query 执行SQL查询,包括两种,一种是执行update,delete这些修改数据库的操作,还有一种与DB::fetch配合做一个循环查询
DB::fetch 与DB::query和while配合使用,形成一个循环

Continue reading

30

Discuz触摸屏版 贴子列表页修改方法(调用帖子内容及附件、点赞、分享、收藏)

DZ触摸屏版 贴子列表页修改方法
模板文件位置/template/default/touch/forum/forumdisplay.htm
如果使用得不是默认模板,位置为/template/自定义模板名文件夹名/touch/forum/forumdisplay.htm

修改参看DZ数据表字典
discuz列表页调用帖子内容(正文)
实际使用下面实例时,去掉代码中双正斜杠“//”的注释内容。

DZ触摸屏版贴子列表页调用一张附件图片

如果有则调用,如果没有则不调用

DZ触摸屏版贴子列表页调用所有(多张)附件图片

解释如下:
表pre_forum_thread中字段attachment,附件类型,0无附件 1普通附件 2有图片附件
{if $thread['attachment'] == 2} //如果此贴字段attachment等于2时
$table等于forum_attachment_2
查询数据表pre_forum_attachment_2得到$thread['aid']的新值(调用单张图片的实例中使用的)
查询数据表pre_forum_attachment_2得到数组$thread['attachmentimg']
循环输出数据$thread['attachmentimg']的键和值($keyimg和$valimg,都为数组)
数据表pre_forum_attachment_2中字段attachment即为图片附件路径
所以图片附件路径为$valimg['attachment']
注:DB::fetch_all很好的东东

DZ触摸屏版贴子列表页调用点击收藏

DZ触摸屏版贴子列表页调用点赞(顶、支持)

开启DZ顶踩功能的方法:网站后台>>全局>>站点功能>>主题评价>>启用议题评价是(是)

DZ触摸屏版贴子列表页点击分享、调用分享数

前提条件:开启QQ互联功能插件
此没有完全测试,但我感觉这个分享还是直接使用其它分享插件,如百度分享等

原创文章,转载请注明出处(http://mrdede.com/?p=662),谢谢!

29

discuz模板中调用数据库的某个字段的方法

discuz模板中调用数据库的某个字段的方法

<!--{eval $slides = DB::fetch_all("    //执行SQL语句
SELECT *                                         //读取全部字段
FROM pre_common_block_item  //数据表 可以自定义 这个是DIY帖子内容表
WHERE bid=15                            //查询条件 BID 是DIY的模块id
ORDER BY displayorder ASC,id DESC //排序条件
LIMIT 0, 10                                      //获取前10条信息
");}-->
< !–{loop $slides $slide}–>    //循环 $slides 数组 使用  $slide[字段名]  获取内容
<a href="$slide[url]" target="_black"><img src="data/attachment/$slide[thumbpath]" width="300" height="450" alt="$slide[title]"/></a>
< !–{/loop}–>

29

Discuz! X3 数据字典 DZ数据表结构

pre_common_admincp_cmenu 后台菜单收藏表

字段名 数据类型 默认值 允许非空 自动递增 备注
id smallint(6) unsigned NO
title varchar(255) NO 菜单名称
url varchar(255) NO 菜单地址
sort tinyint(1) 0 NO 菜单类型,备用
displayorder tinyint(3) NO 显示顺序
clicks smallint(6) unsigned 1 NO 点击数,备用
uid mediumint(8) unsigned NO 添加用户
dateline int(10) unsigned NO 添加时间

pre_common_admincp_group 后台管理组

字段名 数据类型 默认值 允许非空 自动递增 备注
cpgroupid smallint(6) unsigned NO 后台组id
cpgroupname varchar(255) NO 后台组名称

pre_common_admincp_member 后台管理成员

字段名 数据类型 默认值 允许非空 自动递增 备注
uid int(10) unsigned NO 成员uid
cpgroupid int(10) unsigned NO 成员组id
customperm text NO 自定义管理权限

Continue reading

25

discuz列表页调用帖子内容及附件方法

功能:获取主题内容和图片附件

找到文件\source\module\forum\forum_forumdisplay.php

搜索(大约812行)$threadids[$threadindex] = $thread['tid'];

在此代码后增加如下代码:

修改后截图如下:

discuz列表页调用帖子内容及附件方法

调用方法:调用帖子文字内容

调用方法:调用附件图片

说明:

参看\source\function\function_post.php中的getattach_row函数(在文件的第61行)

首页要确定$thread['attachment'] == 2和数组$thread['attachments']['used']为真,才可以运行以下代码。

循环搜索数组$thread['attachments']['used']

在循环内数组$valimg[]可以调用表pre_forum_attachment_2中的键值(参看:Discuz! X3 数据字典 DZ数据表结构

DZ触摸屏版帖子列表页其它修改方法能看http://mrdede.com/?p=662

15

Discuz嵌入点列表(插件钩子)

Discuz模板文件中的插件钩子(插件嵌入点):

Discuz插件钩子代码例子:

Discuz插件钩子的作用在于能让插件在指定的一些位置输出有关代码!在DZ7.x-DX1.5中插件钩子并不显得很重要,但是随着插件应用的不断普及,插件创作者的不断加入,插件钩子在模板中的地位尤其显得格外重要,如果缺少了程序必须的插件钩子,可能会造成自带系统插件功能受到影响!所以我们在制作模板的时候一定要参考默认模板中的插件钩子位置进行合理的安排!除非你觉得某个插件钩子在自己的模板中并不需要,否则请保留插件钩子代码!

Discuz插件嵌入点列表

一、全局(common/)

extcredits.htm
string spacecp_credit_extra
faq.htm
string faq_extra
footer.htm
string global_footer
string global_footerlink
header.htm
string global_cpnav_top (X2.5)
string global_cpnav_extra1
string global_cpnav_extra2
string global_usernav_extra1
string global_usernav_extra2
string global_usernav_extra3
string global_usernav_extra4 (X2.5)
string global_nav_extra (X2.5)
string global_header
userabout.htm
array global_userabout_top
string userapp_menu_top
string userapp_menu_middle
array global_userabout_bottom

二、论坛(forum/)

collection_all.htm (X2.5)
string collection_index_top
string collection_index_bottom
collection_comment.htm (X2.5)
string collection_nav_extra
collection_index.htm (X2.5)
string collection_index_top
string collection_index_bottom
collection_mycollection.htm (X2.5)
string collection_index_top
string collection_index_bottom
collection_nav.htm (X2.5)
string collection_nav_extra
collection_view.htm (X2.5)
string collection_viewoptions
string collection_view_top
string collection_threadlistbottom
string collection_relatedop
string collection_view_bottom
string collection_side_bottom
discuz.htm
string index_status_extra
string index_nav_extra (X2.5)
string index_top
string index_catlist_top (X2.5)
array index_favforum_extra (X2.5)
array index_catlist (X2.5)
array index_forum_extra (X2.5)
array index_forum_extra (X2.5)
string index_middle
string index_bottom
string index_side_top
string index_side_bottom
discuzcode.htm
array viewthread_attach_extra (X2.5)
editor_menu_forum.htm
string post_image_btn_extra
string post_image_tab_extra
string post_attach_btn_extra
string post_attach_tab_extra
forumdisplay.htm
string forumdisplay_leftside_top
string forumdisplay_leftside_bottom
string forumdisplay_forumaction
string forumdisplay_modlink
string forumdisplay_top
string forumdisplay_middle
string forumdisplay_postbutton_top
string forumdisplay_threadtype_inner (X2.5)
string forumdisplay_filter_extra (X2.5)
string forumdisplay_threadtype_extra (X2.5)
string forumdisplay_bottom
string forumdisplay_side_top
string forumdisplay_side_bottom
forumdisplay_fastpost.htm
string forumdisplay_fastpost_content
string forumdisplay_fastpost_func_extra
string forumdisplay_fastpost_ctrl_extra
string global_login_text
string forumdisplay_fastpost_btn_extra
string forumdisplay_fastpost_sync_method
forumdisplay_list.htm
string forumdisplay_filter_extra
array forumdisplay_thread
array forumdisplay_thread_subject (X2.5)
array forumdisplay_author
array forumdisplay_thread (X2.5)
array forumdisplay_author (X2.5)
string forumdisplay_threadlist_bottom (X2.5)
string forumdisplay_postbutton_bottom
forumdisplay_sort.htm (X2.5)
string forumdisplay_postbutton_bottom
forumdisplay_subforum.htm (X2.5)
array forumdisplay_subforum_extra
array forumdisplay_subforum_extra
guide.htm
string guide_nav_extra
string guide_top
string guide_bottom
guide_list_row.htm (X2.5)
array forumdisplay_thread
index_navbar.htm
string index_navbar
post.htm
string post_top
string post_middle
string post_btn_extra
string post_sync_method
string post_bottom
post_activity.htm
string post_activity_extra
post_debate.htm
string post_debate_extra
post_editor_body.htm
string post_editorctrl_right
string post_editorctrl_left
string post_editorctrl_top
string post_editorctrl_bottom
post_editor_option.htm
string post_side_top
string post_side_bottom
post_infloat.htm
string post_infloat_top
string post_infloat_middle
string post_infloat_btn_extra
post_poll.htm
string post_poll_extra
post_reward.htm
string post_reward_extra
post_trade.htm
string post_trade_extra
topicadmin_modlayer.htm
string forumdisplay_modlayer
string modcp_modlayer
trade_info.htm
string viewthread_tradeinfo_extra
viewthread.htm
string viewthread_top
string viewthread_postbutton_top
string viewthread_modoption
string viewthread_beginline (X2.5)
string viewthread_title_extra
string viewthread_title_row
string viewthread_middle
string viewthread_bottom
viewthread_activity.htm
string viewthread_activity_extra1
string viewthread_activity_extra2
viewthread_fastpost.htm
string viewthread_fastpost_side
string viewthread_fastpost_content
string viewthread_fastpost_func_extra
string viewthread_fastpost_ctrl_extra
string global_login_text
string viewthread_fastpost_btn_extra (X2.5)
viewthread_from_node.htm
array viewthread_postheader
array viewthread_postheader
array viewthread_postheader
array viewthread_endline
viewthread_node.htm
array viewthread_profileside
array viewthread_imicons
array viewthread_magic_user
array viewthread_avatar
array viewthread_sidetop
array viewthread_sidebottom
array viewthread_postheader
string viewthread_modaction (X2.5)
string viewthread_share_method
string viewthread_useraction
array viewthread_postsightmlafter (X2.5)
array viewthread_postfooter
array viewthread_postaction (X2.5)
string viewthread_magic_thread
array viewthread_magic_post
array viewthread_endline
viewthread_node_body.htm
array viewthread_posttop
string global_login_text
array viewthread_postbottom
viewthread_poll.htm
string viewthread_poll_top
string viewthread_poll_bottom
viewthread_portal.htm
string viewthread_useraction_prefix
string viewthread_useraction
string viewthread_side_bottom
viewthread_trade.htm
array viewthread_trade_extra

Continue reading

14

解决无法使用电脑访问调试discuz手机版或触屏版问题

一、discuz电脑无法访问标准手机版的方法:

现在需要修改2个文件,即可用电脑浏览discuz的手机版本:

1、文件./source/function/function_core.php

查找 :function checkmobile() {

在他的下一行增加如下代码:
return true; //此为加上的内容

2、文件./source/class/discuz/discuz_application.php

查找dheader("Location:misc.php?mod=mobile");

替换成//dheader("Location:misc.php?mod=mobile");

也就是注释掉。

现在文件改好了,默认是进入标准版的手机页面,想要可以进入触屏版页面,再继续往下看:

二、解决电脑无法访问discuz手机触屏版的方法:

文件static/js/mobile/common.js

找到如下代码(其实就是此文件的第1和第2行):

var supporttouch = "ontouchend" in document;
!supporttouch && (window.location.href = 'forum.php?mobile=1');

也就是文件开头的那两行代码,罪魁祸首就是这个ontouchend,这个是只有手机才会有的事件,pc浏览器怎么也是不存在的,因此就永久跳到了标准版去了。

去掉这两行代码(最好是注释掉,不要删除),这样就可以使用电脑访问discuz手机触屏版了!

注:清除网站缓存、浏览器缓存、手机缓存等等各种缓存,哈哈。

其它:

1.标准手机版链接形式:http://dedecms.mrdede.com/forum.php?mobile=1
2.触屏版链接形式:http://dedecms.mrdede.com/forum.php?mobile=2

10

出了点小错,由于站点ID/通信KEY等关键信息丢失导致Discuz!云平台服务出现异常

症状:

在使用Discuz3.2搭建论坛时,所有安装正确的完成后,在应用的插件中开启QQ互联后,出现了假开启现象。之后到 工具>>云平台诊断工具 中,查看到没有显示ID和KEY。

在百度上搜索了好一会,看到了各种解决办法,主要分为两种方法:1.在应用中关闭QQ互联,云平台诊断工具中删除ID和KEY并改为未注册,后重新开启QQ互联;2,使用SQL操作数据库。由于本人对数据库的SQL语句不是很了解,所以没有使用那种方法,开始研究第一种方法,可是在关闭QQ互联时,又出问题了,具体的提示内容忘记了,反正意思就是出错。

结果又搜索了好一会,无解。最后,通过我的另一种思路,修改成功。

修改思路:

现在是在后台无法关闭QQ互联,那么我可以通过直接进入数据库,修改对应数据表中记录的插件开关(1或0)。

修改方法:

进入本站对应的数据库,找到数据表pre_common_plugin(“pre_”这是默认的表前缀),点击“浏览”此表,进入后找到name字段值为“QQ互联”的内容,这时看他的available字段值,应该是“1”,点击“编辑”,把available的字段值修改为0,点击“保存”或“执行”。

回到论坛后台,应用>>插件,这时,看QQ互联就是未开启状态,点击开启,同意协议……之后按提示操作;

再到“云平台诊断工具”看一下,这时ID和KEY就出现了,应该是已经正常了。

注:此博客中多为我亲身经历的程序问题,所以修改方法也都是自己在实际中运用过的。如有疑问可联系本人(织梦先生),互相交流学习。