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

25

解决织梦自定义字段数据类型为“图片”时的地址无法正确调用问题

找到文件/include/extend.func.php,系统预留的自定义函数接口文件,在文件最后加入如下函数,可以直接复制,如果在文件最后有“?>”,那就加在他的内部的最后位置,有人说有,但是我从来没见过。

20

ECSHOP goods表字段分析

goods_id                         产品id
cat_id                              分类id
goods_sn                       产品编码
goods_name                  产品名称
goods_smallname         产品副名称
goods_name_style        产品名称 风格(加粗,颜色等)
click_count                    点击量
brand_id                        品牌id
provider_name              空
goods_number             库存
goods_weight               产品重量
market_price                市场价格
shop_price                   商店价格
promote_price             促销价格
promote_start_date    促销开始日期
promote_end_date     促销结束日期
warn_number             仓库警告最低数量
keywords                    商品关键词
goods_brief                商品简介
goods_desc               商品描述
goods_thumb            商品缩略图 100*100
goods_img                商品大图  230*230
original_img              商品中图(原始)  100*199
is_real                       是否是实物
extension_code        如果不是实物 则是什么品类
is_on_sale                是否上架
is_alone_sale
is_shipping              是否包运费
integral                    积分实际积分/100
add_time                添加实际
sort_order             ec内部为100 还需查
is_delete               是否是删除状态
is_best                  是否是精品
is_new                  是否是最新
is_hot                   是否是最热
is_promote          是否是促销
bonus_type_id          红包类型id
last_update               最后一次更新时间
goods_type               待验证(商品类型) 可为0
seller_note                空值
give_integral              -1
rank_integral            空
suppliers_id             空
is_check                  空
tb_iid                        空
tb_data                    空

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