杰克工作室 发表于 2023-3-25 22:16

discuz x3插件开发傻瓜图文教程,用demo说话---经典

<p>此demo功能是在模板footer部位插入一段javascript代码,这段代码可以是alert提示,也可以是加载广告等等。</p>

<h3>第一步:</h3>

<p>在config\config_global.php 文件里设置$_config[&#39;plugindeveloper&#39;] = 1 如果没这个变量自己加一行。顾名思义,开启插件开发模式,开启后后台会多出现些菜单。</p>

<h3>第二步</h3>

<p>打开DZ后台-&gt;应用-&gt;设计新插件,并填入下图信息<br />
<img alt="" src="data/attachment/forum/202303/25/31b362225214ec84d6f99651069166b6.png" /></p>

<p>点提交后就跳转到了此插件的设置页面</p>

<p><img alt="" src="data/attachment/forum/202303/25/3038e084edf5407bf280c6f8772d1708.png" /></p>

<p>后台页面先另关,后面还要用到。</p>

<h3>第三步</h3>

<p>到source/plugin/下创建demo目录,在demo目录里创建demo.class.php文件,内容如下</p>

<pre>
&lt;?php
if(!defined(&#39;IN_DISCUZ&#39;)) {
        exit(&#39;Access Denied&#39;);
}

class plugin_demo {
        function __construct(){
        }

        function global_footer(){
                return &#39;&lt;script&gt;alert(&quot;插件我来了&quot;)&lt;/script&gt;&#39;;
        }
}
?&gt;</pre>
第四步

<p>打开DZ后台-&gt;应用-&gt;插件,选择&ldquo;设计&rdquo;我们刚才创建的demo</p>

<p><img alt="" src="data/attachment/forum/202303/25/54e1a6cd8da3bacc842c9649f7b481b1.png" /></p>

<p>在设计页面里点&ldquo;模块&rdquo;,添加一行如下图所示</p>

<p><img alt="" src="data/attachment/forum/202303/25/e9b9159932c7f7c421c6e5ac73403ca6.png" /></p>

<p>添加完后点&ldquo;提交&rdquo;</p>

<p>&nbsp;</p>

<h3>第五步</h3>

<p>打开DZ后台-&gt;应用-&gt;插件,&ldquo;启用&rdquo;我们的插件</p>

<p><img alt="" src="data/attachment/forum/202303/25/43025952d6798e5e3afe8e8bbb4b1202.png" /></p>

<p>启用后到前台去打开个页面看看,是不是执行了js脚本了</p>

<p><img alt="" src="data/attachment/forum/202303/25/46511e3d175682a2bb000144f0b35895.png" /></p>

<p>如果不灵,在界面-&gt;风格管理-&gt;更新css缓存后再试下看</p>

<p>&nbsp;</p>

<p>=========================以下为进阶功能===========================</p>

<h2><strong>功能1</strong>:让插件有安装和反安装能力</h2>

<p>在插件目录下添加install.php和uninstall.php</p>

<ol start="1">
        <li>&lt;?php</li>
        <li>if(!defined(&#39;IN_DISCUZ&#39;))&nbsp;{</li>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;exit(&#39;Access&nbsp;Denied&#39;);</li>
        <li>}</li>
        <li>&nbsp;</li>
        <li>&nbsp;</li>
        <li>//各种安装操作</li>
        <li>$sql&nbsp;=&nbsp;&quot;show&nbsp;tables&quot;;</li>
        <li>runquery($sql);</li>
        <li>//或</li>
        <li>DB::query($sql);</li>
        <li>&nbsp;</li>
        <li>$finish&nbsp;=&nbsp;TRUE;&nbsp;&nbsp;</li>
        <li>&nbsp;</li>
        <li>?&gt;</li>
</ol>
&nbsp;

<ol start="1">
        <li>&lt;?php</li>
        <li>if(!defined(&#39;IN_DISCUZ&#39;))&nbsp;{</li>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;exit(&#39;Access&nbsp;Denied&#39;);</li>
        <li>}</li>
        <li>&nbsp;</li>
        <li>//各种反安装操作,恢复安装时的修改</li>
        <li>$sql&nbsp;=&nbsp;&quot;show&nbsp;tables&quot;;</li>
        <li>runquery($sql);</li>
        <li>//或</li>
        <li>DB::query($sql);</li>
        <li>&nbsp;</li>
        <li>&nbsp;</li>
        <li>$finish&nbsp;=&nbsp;TRUE;</li>
        <li>&nbsp;</li>
        <li>?&gt;</li>
</ol>
&nbsp;

<p>&nbsp;</p>

<p>然后到设计页面导出一份xml插件配置文件</p>

<p><img alt="" src="data/attachment/forum/202303/25/d4897897b517cfb52bcefb96f894746f.png" /></p>

<p>将导出的xml文件放到插件目录下</p>

<p><img alt="" src="data/attachment/forum/202303/25/a7c12c371b85192f7e1ad97feee37c8a.png" /></p>

<p>现在到后台就可以发现安装/卸载功能可以用了</p>

<p>&nbsp;</p>

<h2>功能2:想在打开所有页面时都自动运行一段PHP代码 和 在特定的脚本里嵌入钩子</h2>

<ol start="1">
        <li>&lt;?php</li>
        <li>&nbsp;</li>
        <li>if(!defined(&#39;IN_DISCUZ&#39;))&nbsp;{</li>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;exit(&#39;Access&nbsp;Denied&#39;);</li>
        <li>}</li>
        <li>&nbsp;</li>
        <li>&nbsp;</li>
        <li>class&nbsp;plugin_demo&nbsp;{</li>
        <li>&nbsp;</li>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;__construct(){&nbsp; &nbsp; &nbsp;</li>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;}</li>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;//全局钩子</li>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;common(){</li>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;$_G;</li>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($_G[&#39;uid&#39;]){</li>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//经验值加1点</li>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;}</li>
        <li>&nbsp;</li>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;global_footer(){</li>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&#39;&lt;script&gt;alert(&quot;插件我来了&quot;)&lt;/script&gt;&#39;;</li>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;}</li>
        <li>&nbsp;</li>
        <li>}</li>
        <li>&nbsp;</li>
        <li>/**</li>
        <li>&nbsp;*&nbsp;只有运行member.php下注册页面时才运行的钩子register_top</li>
        <li>&nbsp;*/</li>
        <li>class&nbsp;plugin_demo_member&nbsp;extends&nbsp;plugin_demo{</li>
        <li>&nbsp;</li>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;register_top(){</li>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;header(&#39;location:http://zc.qq.com/chs/index.html&#39;);&nbsp;//引导用户去注册QQ号</li>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;</li>
        <li>&nbsp;&nbsp;&nbsp;&nbsp;}</li>
        <li>}</li>
</ol>
<br />
源文地址:https://blog.csdn.net/oyzl68/article/details/11094843
页: [1]
查看完整版本: discuz x3插件开发傻瓜图文教程,用demo说话---经典