Mr丶冷文

文章 分类 评论
125 10 8004

站点介绍

冷文学习者(KEVINLU98.COM),记录一个北漂小码农的日常业余生活
友链申请地址(直接评论即可): 传送门

Freewind主题自定义右侧工具栏插件

MR丶冷文 2021-11-24 1572 5条评论 我的作品 freewind

首页 / 正文
Freewind主题v1.5版本已发布,下载请移步Freewind 1.5,同时还有主题伴生插件Freewind Markdown,下载请移步 Freewind Markdown,有问题请在留言板,交换友链请直接在友链留言,我创建了一个主题交流群,有兴趣可以加下: 点此加入
报毒我说明一下,是因为我把主题的版权信息做了加密,其中用了eval,杀毒软件认为eval函数是一个危险的操作,这点介意的话请勿下载,我也没有强迫任何人去下载,也没有向大家收取一分钱的主题费用,所以也犯不着因为这些事情来喷我,喜欢就用,不喜欢就不用,就这么简单

发布于2022-10-28

说明

我自已提供了几个右侧工具栏插件供大家使用,当然有很多朋友想自定义自已的右侧工具栏,这里就介绍一下如何自定义右侧工具栏插件

右侧式具栏挂载点

在里还是使用typecho的挂载点方式进行挂载,所以我们的插件可以像typecho插件那样去安装

<?php Typecho_Plugin::factory('freewind')->rightToolBar($this); ?>

插件开发

创建一个文件夹名为插件名称,如创建一个名为FreewindMusic的文件夹

在文件夹下创建一个php文件,名为Plugin.php,然后在该文件中定义类名称为插件名称_Plugin并实现Typecho_Plugin_Interface接口

在方法说明中找到自己需要的方法并实现

方法说明

activate

激活插件方法,如果激活失败,直接抛出异常

public static function activate()

一般来说内容如下

// 插件具体实现的内容(必须)
Typecho_Plugin::factory('freewind')->rightToolBar = array('FreewindMusic_Plugin', 'render');
//如果插件需要css,则加上这行
Typecho_Plugin::factory('freewind')->css = array('FreewindMusic_Plugin', 'css');
//如果插件需要js,则加上这行
Typecho_Plugin::factory('freewind')->js = array('FreewindMusic_Plugin', 'js');

config

获取插件配置面板

public static function config(Typecho_Widget_Helper_Form $form)

就是在点插件设置时的那个表单,后面可以通过如下代码获取设置的属性值

Typecho_Widget::widget('Widget_Options')->plugin('插件名')->属性名 

我们可以通过表单助手的方式创建配置表单

/**
 *表单助手构造方法
 */
public function __construct($name = NULL, array $options = NULL, $value = NULL, $label = NULL, $description = NULL)

常用表单助手有:

类名描述
Typecho_Widget_Helper_Form_Element_Password密码输入表单项帮手类
Typecho_Widget_Helper_Form_Element_Select下拉选择框帮手类
Typecho_Widget_Helper_Form_Element_Textarea多行文字域帮手类
Typecho_Widget_Helper_Form_Element_Text文字输入表单项帮手类
Typecho_Widget_Helper_Form_Element_Radio单选框帮手类
Typecho_Widget_Helper_Form_Element_Checkbox多选框帮手类
Typecho_Widget_Helper_Form_Element_Hidden隐藏域帮手类

表单助手类参数说明:

  • $name:配置项命名
  • $options:选项,在为Radio、Select、Checkbox时生效
  • $value:默认值
  • $label:表单的 label 标题
  • $description: 描述

我们就可以用如下代码创建表单

$name = new Typecho_Widget_Helper_Form_Element_Text('属性名', NULL, '默认值', _t('属性说明'), _t('属性描述'));
$form->addInput($name);

例如音乐插件中需要如下信息:

  • 歌曲名称
  • 音频文件地址
  • 歌手
  • 歌手图片
  • LRC歌词

我们就可以定义表单如下

$name = new Typecho_Widget_Helper_Form_Element_Text('name', NULL, '', _t('歌曲名称'));
$form->addInput($name);
$music = new Typecho_Widget_Helper_Form_Element_Text('music', NULL, '', _t('音频文件地址'));
$form->addInput($music);
$songer = new Typecho_Widget_Helper_Form_Element_Text('songer', NULL, '', _t('歌手'));
$form->addInput($songer);
$avatar = new Typecho_Widget_Helper_Form_Element_Text('avatar', NULL, '', _t('歌手图片'));
$form->addInput($avatar);
$word = new Typecho_Widget_Helper_Form_Element_Textarea('word', NULL, '', _t('LRC歌词'), "一定要用有效歌词,不然播放器识别不了会报错");
$form->addInput($word);

render

插件具体实现的内容(必须)

public static function render()

如果你想让你的插件在右侧栏点标图标出现,再次点击时隐藏,可以用如下模板

<div id="你的组件id" class="right-tool-item" style="width: 插件宽度(必须);">
    <a class="right-btn" data-target="你的组件id" href="javascript:void(0)">
        <!-- 在里是插件的图标 -->
    </a>
    <div class="right-title">标题</div>
    <div class="right-content" style="border-radius: 0 0 10px 10px">
        <!-- 在里写你插件的外观样式 -->
    </div>
</div>

比如音乐插件中的内容

<div id="right-music" class="right-tool-item" style="width: 300px;">
    <a class="right-btn" data-target="right-music" href="javascript:void(0)">
        <!--音符图标,这个图标太小时,适当调整下字体大小-->
        <i style="font-size: 20px" class="iconfont icon-yinlegedanyinfu"></i></a>
    <div class="right-title">MUSIC</div>
    <div class="right-content" style="border-radius: 0 0 10px 10px">
        <!-- 用如下代码调用aplayer -->
        <div id="music-player" class="aplayer">
        <pre class="aplayer-lrc-content">
            <!-- 取出我们自己设置的歌词 -->
            <?php echo Typecho_Widget::widget('Widget_Options')->plugin('FreewindMusic')->word ?>
        </pre>
        </div>
    </div>
</div>

css

如果插件需要css,则加上这行

 public static function css()

比如音乐插件中我们需要引入aplayer的css样式,所以可以在该方法中写入如下代码

echo '<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kevinlu98/freecdn@1.14/plugin/aplayer/APlayer.min.css">';

js

如果插件需要js,则加上这行

public static function js()

比如音乐插件中我们需要引入aplayer的js脚本,同时还需要自已写脚本创建APlayer播放器对象并完成播放器对象的初始化,我们可以使用如下偌

<?php
echo '<script src="https://cdn.jsdelivr.net/gh/kevinlu98/freecdn@1.14/plugin/aplayer/APlayer.min.js"></script>';
?>
<script>
  var ap3 = new APlayer({
    element: document.getElementById('music-player'),
    narrow: false,
    autoplay: false,
    showlrc: true,
    music: {
      title: '<?php echo Typecho_Widget::widget('Widget_Options')->plugin('FreewindMusic')->name ?>',
      author: '<?php echo Typecho_Widget::widget('Widget_Options')->plugin('FreewindMusic')->songer ?>',
      url: '<?php echo Typecho_Widget::widget('Widget_Options')->plugin('FreewindMusic')->music ?>',
      pic: '<?php echo Typecho_Widget::widget('Widget_Options')->plugin('FreewindMusic')->avatar ?>'
    }
  });
  ap3.init();
</script>

结束

这样,我们的freewind右侧栏自定义插件就开发完成啦

评论(5)

  1. . 游客 2022-03-13 11:30 回复

    感谢大佬

  2. 哈哈哈 游客 2022-01-10 20:45 回复

    大佬,右侧工具栏可以添加类似 handsome 主题的博客信息吗

    1. MR丶冷文 管理员 2022-01-10 23:41 回复

      @哈哈哈

      这里可以自已搜下typecho获取相关信息的代码或者直接做成插件就行了,但需要自己添加

  3. zizdog 游客 2021-12-01 17:02 回复

    蛮精致的哦,似曾相识的感觉。

  4. 555 游客 2021-11-27 16:57 回复

热门文章

最新评论

  • 12

    谢谢

  • 12

    谢谢

  • 感谢分享

  • 一树

    用户一下谢谢

  • haha

    用一下

日历

2024年04月

 123456
78910111213
14151617181920
21222324252627
282930    

文章目录

站点公告
Freewind主题v1.5版本已发布,下载请移步Freewind 1.5,同时还有主题伴生插件Freewind Markdown,下载请移步 Freewind Markdown,有问题请在留言板,交换友链请直接在友链留言,我创建了一个主题交流群,有兴趣可以加下: 点此加入
报毒我说明一下,是因为我把主题的版权信息做了加密,其中用了eval,杀毒软件认为eval函数是一个危险的操作,这点介意的话请勿下载,我也没有强迫任何人去下载,也没有向大家收取一分钱的主题费用,所以也犯不着因为这些事情来喷我,喜欢就用,不喜欢就不用,就这么简单
点击小铃铛关闭