罗码网络discuz插件模板教程微信小程序安卓电脑软件htmlphp源码下载

罗码gitluo

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索
开启左侧

[DZ教程] Discuz二次开发必备技术手册(持续更新)

[复制链接]
罗码男神 实名认证 官方 发表于 2020-1-20 01:24:54 来自手机 | 显示全部楼层 |阅读模式
登录
7 ~$ f7 h& m! w# v% @# u<a href="member.php?mod=logging&action=login" title="登录">登录</a>
" M2 c2 d0 s+ |' z" `
/ o$ o3 y2 S% Q$ ]* K7 m% U注册
9 x7 H, e' c+ r6 U7 {7 ?<a href="member.php?mod=register" title="立即注册">立即注册</a>. e1 v8 s! i. u  d" T) s) \
. q7 Q) r# c0 ^$ G. j  X
忘记密码6 K2 A# P4 |, W0 D1 b$ r! M
<a href="javascript:;" title="找回密码">找回密码</a>
  m* b4 H6 g2 y: A+ u
6 S$ p; u# T1 S0 i购买邀请码
2 h1 l9 G! n6 amisc.php?mod=buyinvitecode3 c/ p2 i6 H( M0 G. E0 S) E
% j9 Y) p! `2 m- b, ^; r6 m7 G) I( t# y
JS跳转. ]9 g/ h9 ^' y, s
onclick="window.location.href='home.php?mod=mobile&do=friend';"
$ J0 `7 X! j0 S. A" a+ {% w; p; [8 X/ g$ {% l  ?
JS更换class的名称
2 r" d4 A# w$ {. d- H0 rdocument.getElementById('idname').className='a';4 a1 Y7 I# C. G, Y/ M1 W6 @2 U
document.getElementById('idname').style.display='block';- w- j4 D  V- \0 {/ }9 h
document.getElementById("idname").style.marginTop="30px";2 ~5 l, T/ K9 ~# x- a1 x- R# P- f
- q2 _4 s4 U! f9 T) {6 ~
批量替换超链接:
% A  V  ?+ s6 bhref="[^"]*"# ?" p8 ^; w% N0 A2 i4 Z

/ F+ O; R/ Q  A: v0 t& z: `过滤DZ代码:
* c% n0 X4 n/ K; zpreg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));
5 j  y, k1 B- P- O5 z' r$ w8 n2 r+ z
* m& ?2 u( v& @( `1 \" I, T调用单个数据
- D8 C" C+ w& v3 L6 H, f$a = DB::result(DB::query("SELECT qi FROM ".DB::table('abc')." WHERE id = '1'"));+ W* U. e% g# g6 f' k

. |& A- h7 g, o  z调用统计数据
2 o" O' f% G, g$a = DB::result(DB::query("SELECT count(*) FROM ".DB::table('abc')." WHERE id = '1'"));
( P1 x9 b4 W2 B/ u) b2 m4 n; L! A6 H5 v: [* ^3 t
单数据表调用
# {3 T# r, r4 j$perpage = 20;
* o+ ?9 b+ [! v1 r1 I$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );) q! q' M" L  S) |
$start = ($curpage-1)*$perpage;% S4 `$ e% j$ Z# f( A
$askcount = DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('forum_thread')." WHERE fid = '2' AND authorid > 1"));
1 M" [) N2 `7 F9 |) V- b6 u//$asklist) j/ x1 |, f$ U
$asklist = array();
/ o  ^, S( p& s* n  j3 Wif ($askcount) {
- ?' F* q) }3 Y# F1 d2 B' B, V7 X        $query = DB::query("SELECT * FROM ".DB::table('forum_thread')." WHERE fid = '2' AND displayorder > -1 ORDER BY tid ASC LIMIT $start,$perpage");' X+ a7 g  A& A  P& U
        while ($value = DB::fetch($query)) {
7 v+ `$ p- j# d1 o                $asklist[] = $value;: g" x5 }2 g) {
        }
: K% l4 o- r. O' H}
- Y) D! e( v) d: _$multi = multi($askcount, $perpage, $curpage, "这里填写跳转地址");& y, X9 ?/ c; T- Y8 v( u
7 f4 g; s$ B& x4 B, y& l! `

: |* m0 k2 U7 R
& C. @& g) L- `+ V& {多数据表调用: X0 {6 M8 ]6 @' [/ L6 @# K6 L
$perpage = 40;
/ v+ [- R& {& T0 O, p$curpage = empty ( $_GET['page'] ) ? 1 : intval ( $_GET['page'] );3 V7 S  D/ c3 ~& I/ O" R0 ~) W
$start = ($curpage-1)*$perpage;
7 H! B6 P. W& c+ ^$acount = DB::result(DB::query("SELECT count(*) FROM ".DB::table('forum_forum')." b LEFT JOIN ".DB::table('forum_forumfield')." bf ON bf.fid=b.fid WHERE b.type='sub' AND b.status = 3 AND bf.icon != ''"));
/ d: A, i' X+ P' Z# e, a2 ]//$alist9 |1 _3 r9 J4 |/ f
$alist = array();! {4 {  d5 k: T) v
if ($acount) {/ B/ L$ H8 [" G# G& [' }
        $query = DB::query("SELECT bf.*, b.* FROM ".DB::table('forum_forum')." b LEFT JOIN ".DB::table('forum_forumfield')." bf ON bf.fid=b.fid WHERE b.type='sub' AND b.status = 3 AND bf.icon != '' ORDER BY bf.shoplevel DESC, b.commoncredits DESC, bf.fid DESC LIMIT $start,$perpage");- h$ ?1 B2 c1 g! p3 h  h
        while ($value = DB::fetch($query)) {" s0 U9 F. J7 b/ y# T9 [- w
                $alist[] = $value;
; |, x) v" ?" M8 X        }! C0 k# k0 M9 R3 y
}
6 P$ {$ @8 X  c" `2 T$multi = multi($acount, $perpage, $curpage, "这里填写跳转地址");+ t: w4 i5 T% w: s$ m- U$ }

/ G" U( s; m; p8 Q1 A& ?" z
* Z) ~. A8 O; [+ d2 q' Y9 S
1 u* ]4 K* }6 Z0 f0 K" X" g" @前台数据显示' j& \+ y% d' \2 a. |2 L- [
<!--{loop $alist $key $value}-->
+ ?7 z1 h) o) m) P2 G) ?- c+ i<!--{eval $tupianfm = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_threadimage')." WHERE tid = '$value[tid]'"));}-->" m0 w: _& S* c8 F" d
<img src="$tupianfm"><br>$value[authorid]$ v* w4 F* f3 n, T% ~  e0 q! R
<!--{/loop}-->
) K# n" m% C1 N  C0 ~
! D- g9 z8 h3 o$ l' V# }, y& q, A  G; v; e( {' G& m# ]
取数据表中符合条件的第一条数据7 {/ i* F. |8 c; a
$app=array();, @! g8 \, Z) J4 Q+ A: q+ r% d& D
$app=DB::fetch_first("select * from ".DB::table('abc')." where id='{$id}'");
! c1 \+ q- z- U3 u1 v2 d; ]1 t) L( {$ @" G: H5 Q
! E, s7 j* z  u( W8 B

- v" l. \4 V3 e7 f6 |人性化时间戳
/ e- I! c; k' X5 f, g% Y<!--{echo dgmdate(这里填写时间参数, 'u', '9999', getglobal('setting/dateformat'))}-->
2 ?. x: \* y3 a$ ^3 C0 u<!--{echo date("Y-m/d H:i:s",这里填写时间参数)}-->. \' @3 l- c5 h: R. s3 U

# N' `0 c* m( S" ^( U- T# F
4 E- e" x4 L8 Z* m' H- o3 P3 I截取字符字数
1 u/ V2 ~, z- g5 @, ]$ T<!--{echo cutstr(这里填写参数,40)}-->
8 O& l; y5 Z8 }  W
0 Q3 D; `4 ~+ `% q5 B+ K  d0 s- h
( z. c, o3 c1 d5 A2 A( [过滤DISCUZ代码
! k! a9 `" u, G; Tpreg_replace ("/\[[a-z][^\]]*\]|\[\/[a-z]+\]/i",'',preg_replace("/\[attach\]\d+\[\/attach\]/i",'',$message));" R( p8 y( s3 s

) r# x/ n2 r2 H* a) F% q1 c2 A4 h2 W+ F( m' \( R9 |
写入数据库
! z( V, n- w$ O. cif(submitcheck('tijiao')) {
8 K4 H- k3 F! Y3 ?! ?        $setarr = array(
6 Z8 i( K9 P! P0 t7 Q9 q" ?                'tid' => $_GET['topicid'],) v9 ]; `1 \* ~3 N# A
                'name' => $_POST['name']," m: z8 R. F* E) w' [% T0 y
                'position' => $_GET['position'],0 C; b8 O0 z: m" @( b: k
                'dateline' => $_G['timestamp'],8 `7 ~- F4 }% L
        );/ G& ?+ u- f+ G3 S
        DB::insert('abc', $setarr, 1);
7 s) b& v# ^. v' ~        $query = DB::query("UPDATE ".DB::table('abc')." SET stickreply='1' WHERE tid='$tid'");$ k1 P+ }. M  ]
        $query = DB::query("DELETE FROM ".DB::table('abc')." WHERE pid='$pid'");1 e4 ]- J" a( p( w
        showmessage('成功的提示信息', "跳转地址");( ?. N8 C" @* X5 O1 \9 y4 V. U! ]* w
}0 P  ]9 @4 f) C( @

5 P0 _" `  r1 N, F3 A, ?
% R( l0 M/ [- @7 |( j4 e8 w  r9 c3 T
表单提交:+ [1 T" T, D1 W+ c7 k0 G7 E
<form action="do.php" method="post" autocomplete="off">
& H+ l. H: w8 O) D        <input type="hidden" value="{FORMHASH}" name="formhash" />) m) N$ D' c7 ~, v" S/ p
        最低奖金:<input name="qi" type="text" value="" /> 
  g- y* Y. S) q# s- d) ?# F! s        最高奖金:<input name="end" type="text" value="" />  8 m% |7 K# o) P1 i+ m! A
        <button value="true" name="tijiao" type="submit">提交设置</button>5 L/ |6 b& t( H$ ]
        <input type="hidden" name="tijiao" value="true" />
, t+ c* a% C. y- t5 P! }4 K) K7 B</form>" b3 i$ A4 o" p5 C( J

( j1 e9 @3 j1 u9 m8 U) c- P+ L2 m2 l/ j5 ]. S

9 A6 K8 ?* M5 w: }; w2 F以下两个时间格式是对等关系
  L" J3 I3 w$ L+ r7 t9 ndate("Ymd",time());  20150212" Z0 F7 l  l1 s6 o
FROM_UNIXTIME(dateline, '%Y%m%d')
: z' e8 l( S) P3 A- ?- j' r
8 S' e" F- v% G/ R( ]& ]; k, J3 K前者用于PHP,后者用于数据库调用的字段的格式化
" i, B. Z, a+ P) s1 a- J
5 y) A' j; T" U* K' ^3 A调用图片附件) f* Q& ^0 ^! P  N2 u& v* C* V/ b
<!--{eval $biaoid = substr($value[tid], -1); $cover = DB::result(DB::query("SELECT attachment FROM ".DB::table('forum_attachment_'.$biaoid.'')." WHERE tid = '$value[tid]'"));}-->
$ [2 q. y$ A# A  _8 `
6 w4 J8 w7 x; p7 N
' o" |. x# [0 e+ G9 j9 ^数据库循环嵌套调用
1 O) Q. V) I7 P* b5 V9 v<!--{eval $slides = DB::fetch_all("SELECT * FROM ".DB::table('a')." WHERE `uid`= $_G[uid] ORDER BY `id` DESC");}-->
" I2 W8 Z0 k+ W7 x, t+ k: {' |<!--{loop $slides $slide}-->
- A, k1 v2 M3 r  }. X$ C2 u$slide[name]* `, g' {0 \# T" W( O
<!--{/loop}-->/ w& c8 M0 [, l& x/ [

5 v7 V3 p" h5 S9 d( G3 s: N3 z( ]! m! Q, B! {
ucenter无法登录:
. Q" B3 `' Z" r& |# g打开uc_server/model/admin.php* Z; F4 n  `& \- o
找到第22行的
7 @) S: r7 J0 G( `9 C5 F$this->cookie_status = 0;
; L8 ?0 N3 F; ]: b
* c6 h7 F; ^% _7 C9 E+ a9 }4 ~7 M7 e8 }* ?
改成4 F* w+ w8 p" y6 Q+ c; U
$this->cookie_status = isset($_COOKIE['sid']) ? 1 : 0;9 U+ N3 \0 m9 t5 d# G( T% F- N
2 C8 K: ?. k/ G( P7 f

" I8 J& x( T' v4 e7 y- ]
1 `2 H% _5 j' E8 T$ U8 Z: W无刷新切换li标签并且同时加载框架页面:
4 w( z" I1 s/ l  X<script type="text/javascript">
7 e+ u/ a+ @5 h. fvar jq = jQuery.noConflict();+ O4 a3 _2 z+ {* r6 {& G* _
jq(function(){
  E+ P$ j& L  q# T  Cjq("#changemenu>li").mouseover(function(){ 9 c/ `' A2 }, N# U# E
jq("#changemenu>li").each(function(i){ # O* t! J. X6 D2 h% r$ i
jq(this).removeClass("current"); " t: e. {' T% m/ p/ V
});
5 S9 b$ N2 O8 ?8 o/ j) ^jq(this).addClass("current");
1 [5 h- P  D% x2 |5 jdocument.getElementById("changenr").innerHTML='<iframe src="do.php?id='+jq(this).attr('dataid')+'" height="350" width="1070" frameborder="0" scrolling="no"></iframe>';
9 l/ Q1 {! ?& X/ u0 I; \7 O2 k}).mouseout(function(){
* I8 J8 O& M/ h4 T% H  ejq(this).addClass("current");
$ f. d! r1 w( l8 o/ ?" f});
+ G1 p* k# H6 X9 T. c6 P});/ _8 T. F2 o9 U  Z
</script>( ~+ f  k1 h& n1 k/ c0 W& }0 T
<ul id="changemenu">) f) C# P: Q: |
   <li class="current" dataid="1"></li>
3 ]* V7 w$ L& ?, m7 j7 n' C   <li dataid="2"></li>$ U+ ?! |$ `- i+ `$ Z* f- m7 t' k2 K
</ul>
2 m8 }" h9 S. s. x<div id="changenr"></div>
# s6 k' \6 L% R, Y2 ]: |# M) j
8 y9 i3 {/ U/ H; `1 L& {) k# ~: h' B5 i

, Q! t7 _7 W8 u9 H7 v. r0 [快速发帖
3 L2 b, w3 k5 T; }- w2 i; i<a href="forum.php?mod=misc&action=nav">发布新话题</a>
4 l' v" D: h. G2 ?6 R& s* ^- u3 Z% a0 Z9 W0 ^1 u
7 c' W0 {- I" L! v2 ?8 Y

( y9 K9 @9 ^- y* z8 [4 _DISCUZ JSON数据解析获取; V8 {- Q, u% h$ U$ z/ F# T
$str = 'a:2:{s:8:"sitename";s:8:"源码哥";s:3:"pic";s:12:"ymg6.jpg";}';
! z  L6 u8 j( a( O- i2 E$newstr = str_replace("\","",$str);* C8 h& p& }1 V# `! c
$data = unserialize($newstr);
) d+ O; A# z9 l# Vecho $data[sitename];//输出结果为源码哥
' |: a6 _& D' r: `) I
) d: n' z5 r3 I" F# n
5 [1 N7 R' J' s% E6 v* y
" ]3 n! |7 q9 P* ?: @DISCUZ云平台站点同步提示DNS错误解决方法:打开source\plugin\manyou\Service\Client\Restful.php,找到代码:
' j* O( N  v6 T% c  g% l$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 5);
/ P9 Q  i' W0 v" I- [
! c" D1 |3 R/ L+ H. Q. t
+ P- L# J. N# c6 }8 J9 l修改为:8 Y9 n) ~' s4 \3 r8 o& x
$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 30);: B4 w7 ^4 t' h6 e
( E2 G, J5 Y$ H6 t' \2 d& V* ~

2 V# ~$ l7 K9 o2 q" S" N. \+ e7 u' T& E" P
LI标签列表自适应宽度JS实现代码(去除每行最后一个li标签的右边距):
& Y/ y" q2 j$ W<script type="text/javascript" src="http://www.banban.so/new/bang/uploads/146383669567393.js"></script>  n  ]" u6 o  i6 ^
<style>ul,li{margin:0; padding:0; list-style:none;}.list{width:100%; margin:0 auto;}.list li{width:32%; float:left; margin-right:2%; background:#0092B9; text-align:center; color:#fff; height:300px; line-height:300px; margin-bottom:10px;}</style>
* a1 g% f; c, W) \  T- I<div class="list">
# h0 x: A2 ~  `, |: s' g7 R2 A        <ul>$ T- _0 y0 t8 P
        <li>源码哥</li>% Q0 |& D$ y. k# N3 y3 ]0 b
        <li>源码哥</li>7 P3 m6 Q! F; J+ T
        <li>源码哥</li>
& \( U3 W( n4 _  S! {        <li>源码哥</li>
% t  G( v& }* N; T        <li>源码哥</li>
; j) }+ O' E) N( l9 e0 m        <li>源码哥</li>
8 g/ m# B( b/ ~( \9 Q* @0 K5 z    </ul>
$ {/ y! w4 u+ l1 }; F</div>
( z1 s6 Z  U% ?1 `1 O( `, R<script type="text/javascript">
# g' N/ [. H* f8 C4 j+ a    $('.list li:nth-child(3n)').css('marginRight', '0');
, I; g# `: p* ^. g, q: ?2 f6 L/ N</script>  I& [% D- C/ h8 ^* G  V" O

" n( F. U# F& p' A) G6 J3 \7 v
! n, _3 l/ Y- y% w. g. I3 C
, c3 A$ _, C, X) F常用词汇
% I. D/ W' \  J. T5 ?  W( Y/ Cselect 选择
5 Z' V3 r/ g. Q* [/ ^1 t, Pcount 总数
& w( ?: G1 I7 a* N; Utable 表% @" ^* H2 p. E. u
where 条件
0 l2 n0 k5 V4 o: l0 s. Iresult 结果( M+ Z8 `% V# R' g3 `3 ?
perpage 每页
0 R" G' e9 W% d4 \curpage 当前页" x# X! }1 T( c$ M* P9 W
update 更新1 D& E8 J4 f* x: u( D; }! @
delete 删除
$ l+ X8 s0 |; L( k6 Qinsert 写入
  \0 m6 H5 K- m$ X- ldateline 日期# O2 q2 x% c, U& W
time 时间
4 _5 D5 \! U! ]  recho 输出   <?php   echo '123';   ?>7 z& k, |9 h3 z5 t( c, R7 K% n
multi 分页函数/ Y7 H: n" h9 W. D
if 如果
8 Y" U+ [5 g. p* jelse 否则% G/ A- Q2 j% o+ B5 k0 e7 v
elseif & O0 U) l/ w  o* @5 X3 _  F* `* `
start 起始
5 K/ f( H* @9 [: Elimit 限制  limit 10: K0 b1 p; M6 I! E( a: v7 m
DESC 倒序
$ J, b2 L' L8 O% f) CASC 正序3 y$ z  W) S% `" g. M

* W( h" ~- L9 f
" p. }: j" |, O' D: B* e
; u# a6 s- c# z) X活动帖发布页面核心处理文件:
: o" y( y% ]/ ?( a( }: ~2 Msource\class\extend\extend_thread_activity.php
) b0 P) z5 m: x8 Q% }" u: _  M, M$ A! D4 M! w) _* y6 ]
分类信息解析文件, P' N- `7 P6 m0 z
source\function\function_threadsort.php
( d" o- C7 t5 S  ~( ?& P# d6 aDiscuz模版运行php代码4 F( C- a3 z, r& o
<!--{eval echo'源码哥';}-->8 w! y6 G- ]1 l! B+ S, O

* _% @: {5 l1 U5 Q# B<!--{eval}-->
9 _9 X5 _( n  T- T0 K  necho'源码哥';
; a" s( G6 K7 |1 H. k<!--{/eval}-->1 s2 s0 G4 u2 M( n( L. l! f( g
标签获得焦点后触发js
) o) \7 v- Y  X2 sonfocus="ymgcom()"
, G% L2 V- Q2 F/ P( l' q
& |# g; }. }1 T+ X; D9 ~) |
% f8 h3 L  ]! i$ }标签失去焦点后触发js
* T5 j) x! v. w( J- u' [+ H
. C+ |/ J% s' X( bonblur="ymgcom();"
% @8 D2 Q0 x; z: ]) {
) g! q# w; Q. i+ I, `/ F7 e* j9 @7 I
密码输出1*****6& Y; ~1 u9 n- c3 |; u" e2 e
//原密码为$_GET['password']$ G4 w% g; D) }3 [
$password = preg_replace("/^(.{".round(strlen($_GET['password']) / 4)."})(.+?)(.{".round(strlen($_GET['password']) / 6)."})$/s", "\\1***\\3", $_GET['password']);0 k8 t* k2 Y  ~
echo $password;- P1 V( A1 b+ a7 \6 C" ?& ~
1578843666617.jpeg

想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
yyc男神 发表于 2020-1-21 03:31:41 | 显示全部楼层
看帖回帖是美德!

回复

使用道具 举报

雨后晴天 发表于 2020-1-21 04:32:56 | 显示全部楼层
帮帮顶顶!!

回复

使用道具 举报

MR.Z 发表于 2020-1-21 04:46:00 | 显示全部楼层
路过,支持一下啦

回复

使用道具 举报

66666 发表于 2020-1-21 16:44:35 | 显示全部楼层
这是什么东东啊

回复

使用道具 举报

 shu1332725 发表于 2020-1-21 17:24:28 | 显示全部楼层
路过,支持一下啦

回复

使用道具 举报

foryun 发表于 2020-1-22 03:36:46 | 显示全部楼层
真是 收益 匪浅

回复

使用道具 举报

666男神 发表于 2020-1-24 23:52:00 | 显示全部楼层
相当不错,感谢无私分享精神!

回复

使用道具 举报

全村的希望 发表于 2020-1-26 11:18:50 | 显示全部楼层
前排支持下

回复

使用道具 举报

jjj111 发表于 2020-1-26 12:32:02 | 显示全部楼层
不错 支持下

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录 手机动态码快速登录

本版积分规则

QQ|Archiver|手机版|小黑屋|罗码 ( 粤ICP备17073043号 )https://beian.miit.gov.cn/#/home

GMT+8, 2026-1-8 13:39 , Processed in 0.161812 second(s), 60 queries .

Powered by 罗码网络! X3.4

© 2001-2017

快速回复 返回顶部 返回列表