【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"/>&nbsp;&nbsp;&nbsp;关<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"/>&nbsp;&nbsp;&nbsp;关<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"/>&nbsp;&nbsp;&nbsp;关<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"
);



挂载点及效果

gzd (1).pngSnipaste_2019-11-29_11-43-22 (1).png



版权声明:若无特殊注明,本文为《Dice》原创,转载请保留文章出处。
本文链接:https://blog.52linglong.com/skill/34.html
正文到此结束

热门推荐

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

嘻嘻 大笑 可怜 吃惊 害羞 调皮 鄙视 示爱 大哭 开心 偷笑 嘘 奸笑 委屈 抱抱 愤怒 思考 日了狗 胜利 不高兴 阴险 乖 酷 滑稽

评论信息框
可使用QQ号实时获取昵称+头像

私密评论

吃奶的力气提交吐槽中...


既然没有吐槽,那就赶紧抢沙发吧!