【Emlog分享】优化你的第一个插件 - 插件设置
前面我们已经开发并优化了我们的第一个插件 - 一言插件,这是非常简单的插件,现在我们对添加一个插件设置。
新建插件目录/文件夹 hitokoto,在目录 hitokoto 下新建 hitokoto.php 文件,插件文件名需和目录名一致(如果是上一篇分享写过,直接打开hitokoto.php 文件)。
hitokoto.php 内容如下
<?php /* Plugin Name: 一言插件 Version: 3.0 Plugin URL: Description: 这是Dice分享的第一个emlog插件,主要提供一句话服务。 Author: Dice Author URL: https://www.52linglong.com */ !defined('EMLOG_ROOT') && exit('access deined!'); include EMLOG_ROOT . '/content/plugins/hitokoto/hitokoto_config.php'; function hitokoto_menu() { echo '<div class="sidebarsubmenu" id="hitokotoMenu"><a href="./plugin.php?plugin=hitokoto" class="scrollto hot">一言设置</a></div>'; } addAction('adm_sidebar_ext', 'hitokoto_menu'); function hitokoto() { global $hitokotoConfig; if ($hitokotoConfig['onOff'] == "on") { if ($hitokotoConfig['switch'] == "on") { echo "<a href='javascript:;' onclick='getkoto()' title='换一条'><span id='hitokoto'>一言-记录字句,发现共鸣</span></a>"; } else { echo "<span id='hitokoto'>一言-记录字句,发现共鸣</span>"; } } } addAction('hitokoto', 'hitokoto'); function hitokoto_js() { global $hitokotoConfig; ?> <script src='https://cdn.jsdelivr.net/npm/[email protected]/js/browser/bluebird.min.js'></script> <script src='https://cdn.jsdelivr.net/npm/[email protected]/fetch.min.js'></script> <script> <?php // 延时加载 if ($hitokotoConfig['delay'] == "on") { echo "setTimeout('getkoto()', ". $hitokotoConfig['delayTime'] .");"; } else { echo "getkoto();"; } ?> function getkoto() { fetch('https://v1.hitokoto.cn') .then(function (res) { return res.json(); }) .then(function (data) { var hitokoto = document.getElementById('hitokoto'); hitokoto.innerText = data.hitokoto; }) .catch(function (err) { console.error(err); }) } </script> <?php } addAction('index_footer', 'hitokoto_js');
新建文件 hitokoto_setting.php ,设置页文件。
<?php !defined('EMLOG_ROOT') && exit('access deined!'); function plugin_setting_view() { include EMLOG_ROOT . '/content/plugins/hitokoto/hitokoto_config.php'; if (isset($_GET['setting'])) echo '<span class="actived">插件设置完成</span>'; ?> <style type="text/css"> table { border-collapse: collapse; } table, td, th { border: 1px solid black; padding: 10px; } </style> <div class=containertitle><b>一言设置</b></div> <div class=line></div> <div id="hitokoto"> <form action="plugin.php?plugin=hitokoto&action=setting" method="post"> <table> <tr> <td>一言开关</td> <td>开<input type="radio" <?php if ($hitokotoConfig['onOff'] == "on") echo "checked='checked'"; ?> name="onOff" value="on"/> 关<input type="radio" <?php if ($hitokotoConfig['onOff'] == "off") echo "checked='checked'"; ?> name="onOff" value="off"/></td> </tr> <tr> <td>点击切换开关</td> <td>开<input type="radio" <?php if ($hitokotoConfig['switch'] == "on") echo "checked=\"checked\""; ?>name="switch" value="on"/> 关<input type="radio" <?php if ($hitokotoConfig['switch'] == "off") echo "checked=\"checked\""; ?> name="switch" value="off"/></td> </tr> <tr> <td>延迟加载开关</td> <td>开<input type="radio" <?php if ($hitokotoConfig['delay'] == "on") echo "checked=\"checked\""; ?> name="delay" value="on"/> 关<input type="radio" <?php if ($hitokotoConfig['delay'] == "off") echo "checked=\"checked\""; ?> name="delay" value="off"/></td> </tr> <tr> <td>延迟加载时间</td> <td><input type="text" name="delayTime" value="<?php echo $hitokotoConfig['delayTime']; ?>"/></td> </tr> <tr> <td colspan="2"><input type="submit" value="保存设置"/></td> </tr> </table> </form> </div> <?php } function plugin_setting() { $onOff = isset($_POST['onOff']) ? addslashes(trim($_POST['onOff'])) : 'on'; $switch = isset($_POST['switch']) ? addslashes(trim($_POST['switch'])) : 'on'; $delay = isset($_POST['delay']) ? addslashes(trim($_POST['delay'])) : 'on'; $delayTime = isset($_POST['delayTime']) ? abs(intval($_POST['delayTime'])) : '1000'; $data = '<?php $hitokotoConfig = array( "onOff" => "' . $onOff . '", "switch" => "' . $switch . '", "delay" => "' . $delay . '", "delayTime" => "' . $delayTime . '" );'; $file = EMLOG_ROOT . '/content/plugins/hitokoto/hitokoto_config.php'; @ $fileRes = file_put_contents($file, $data) OR emMsg('写入文件失败,如果您使用的是Unix/Linux主机,请修改文件/content/plugins/hitokoto/hitokoto_config.php的权限为777。如果您使用的是Windows主机,请联系管理员,将该文件设为everyone可写'); } ?>
新建文件 hitokoto_config.php ,配置保存文件。
<?php $hitokotoConfig = array( "onOff" => "on", "switch" => "on", "delay" => "on", "delayTime" => "1000" );
挂载点及效果
Dice》原创,转载请保留文章出处。
本文链接:https://blog.52linglong.com/skill/34.html
版权声明:若无特殊注明,本文为《正文到此结束
发表吐槽
你肿么看?
既然没有吐槽,那就赶紧抢沙发吧!