live2d PHP,Plugin.php

/**

* Live2d_看板娘

*

* @package Live2d_看板娘

* @author kumaomao

* @version 1.0.0

* @link

*/

require_once __DIR__.'/Hitokoto.php';

class Live2d_Plugin implements Typecho_Plugin_Interface

{

public static function activate()

{

Typecho_Plugin::factory('Widget_Archive')->footer=array('Live2d_Plugin', 'footer');

Typecho_Plugin::factory('Widget_Archive')->header = array('Live2d_Plugin', 'header');

// TODO: Implement activate() method.

}

public static function config(Typecho_Widget_Helper_Form $form)

{

$themes = self::get_themes();

$live2d_themes = new Typecho_Widget_Helper_Form_Element_Select('live2d_themes',$themes,null,_t('选择默认模型包'));

$form->addInput($live2d_themes);

$live2d_hitokotoAPI = new Typecho_Widget_Helper_Form_Element_Select('live2d_hitokotoAPI',Hitokoto::get_key(),null,_t('选择一言接口'));

$form->addInput($live2d_hitokotoAPI);

//工具栏

$live2d_canTurnToHomePage = new Typecho_Widget_Helper_Form_Element_Checkbox('live2d_canTurnToHomePage',['显示返回首页按钮'],'0',_t('工具栏详细设定'));

$form->addInput($live2d_canTurnToHomePage);

$live2d_canSwitchHitokoto = new Typecho_Widget_Helper_Form_Element_Checkbox('live2d_canSwitchHitokoto',['显示一言切换按钮'],'0');

$form->addInput($live2d_canSwitchHitokoto);

$live2d_canSwitchModel = new Typecho_Widget_Helper_Form_Element_Checkbox('live2d_canSwitchModel',['显示模型切换按钮'],'0');

$form->addInput($live2d_canSwitchModel);

$live2d_canSwitchTextures = new Typecho_Widget_Helper_Form_Element_Checkbox('live2d_canSwitchTextures',['显示材质切换按钮'],'0');

$form->addInput($live2d_canSwitchTextures);

$live2d_canTakeScreenshot = new Typecho_Widget_Helper_Form_Element_Checkbox('live2d_canTakeScreenshot',['显示看板娘截图按钮'],'0');

$form->addInput($live2d_canTakeScreenshot);

$live2d_canTurnToAboutPage = new Typecho_Widget_Helper_Form_Element_Checkbox('live2d_canTurnToAboutPage',['显示关于按钮'],'0');

$form->addInput($live2d_canTurnToAboutPage);

$live2d_canCloseLive2d = new Typecho_Widget_Helper_Form_Element_Checkbox('live2d_canCloseLive2d',['显示关闭按钮'],'0');

$form->addInput($live2d_canCloseLive2d);

//模型切换模式

// 是否开启时间小贴士

$live2d_modelStorage = new Typecho_Widget_Helper_Form_Element_Radio('live2d_modelStorage',

array(

'true' => _t('恢复'),

'false' => _t('不恢复'),

),

'true', _t('模型切换,刷新后是否恢复'));

$form->addInput($live2d_modelStorage);

$live2d_modelRandMode = new Typecho_Widget_Helper_Form_Element_Radio('live2d_modelRandMode',

array(

'rand' => _t('随机'),

'switch' => _t('顺序'),

),

'rand', _t('模型切换模式'));

$form->addInput($live2d_modelRandMode);

$live2d_modelTexturesRandMode = new Typecho_Widget_Helper_Form_Element_Radio('live2d_modelTexturesRandMode',

array(

'rand' => _t('随机'),

'switch' => _t('顺序'),

),

'rand', _t('材质切换模式'));

$form->addInput($live2d_modelTexturesRandMode);

//提示消息选项

$live2d_showHitokoto = new Typecho_Widget_Helper_Form_Element_Checkbox('live2d_showHitokoto',['显示一言'],'0',_t('提示消息选项'));

$form->addInput($live2d_showHitokoto);

$live2d_showF12Status = new Typecho_Widget_Helper_Form_Element_Checkbox('live2d_showF12Status',['显示加载状态'],'0');

$form->addInput($live2d_showF12Status);

$live2d_showF12Message = new Typecho_Widget_Helper_Form_Element_Checkbox('live2d_showF12Message',['显示看板娘消息'],'0');

$form->addInput($live2d_showF12Message);

$live2d_showF12OpenMsg = new Typecho_Widget_Helper_Form_Element_Checkbox('live2d_showF12OpenMsg',['显示控制台打开提示'],'0');

$form->addInput($live2d_showF12OpenMsg);

$live2d_showCopyMessage = new Typecho_Widget_Helper_Form_Element_Checkbox('live2d_showCopyMessage',['显示复制内容提示'],'0');

$form->addInput($live2d_showCopyMessage);

$live2d_showWelcomeMessage = new Typecho_Widget_Helper_Form_Element_Checkbox('live2d_showWelcomeMessage',['显示进入面页欢迎词'],'0');

$form->addInput($live2d_showWelcomeMessage);

//看板娘样式设置

$live2d_waifuSize = new Typecho_Widget_Helper_Form_Element_Text('live2d_waifuSize', NULL, '280x250', _t('自定义看板娘大小'), _t('在这里填入自定义大小,格式如:280x250'));

$form->addInput($live2d_waifuSize);

$live2d_waifuTipsSize = new Typecho_Widget_Helper_Form_Element_Text('live2d_waifuTipsSize', NULL, '250x70', _t('自定义提示框大小'), _t('在这里填入自定义大小,格式如:250x70'));

$form->addInput($live2d_waifuTipsSize);

$live2d_waifuFontSize = new Typecho_Widget_Helper_Form_Element_Text('live2d_waifuFontSize', NULL, '12px', _t('提示框字体大小'), _t('在这里填入提示框字体大小,格式如:12px'));

$form->addInput($live2d_waifuFontSize);

$live2d_waifuToolFont = new Typecho_Widget_Helper_Form_Element_Text('live2d_waifuToolFont', NULL, '14px', _t('工具栏字体大小'), _t('在这里填入工具栏字体大小,格式如:14px'));

$form->addInput($live2d_waifuToolFont);

$live2d_waifuToolLine = new Typecho_Widget_Helper_Form_Element_Text('live2d_waifuToolLine', NULL, '20px', _t('工具栏行高'), _t('在这里填入工具栏行高,格式如:20px'));

$form->addInput($live2d_waifuToolLine);

$live2d_waifuToolTop = new Typecho_Widget_Helper_Form_Element_Text('live2d_waifuToolTop', NULL, '0px', _t('工具栏顶部边距'), _t('在这里填入工具栏顶部边距,格式如:0px'));

$form->addInput($live2d_waifuToolTop);

$live2d_waifuMinWidth = new Typecho_Widget_Helper_Form_Element_Text('live2d_waifuMinWidth', NULL, '768px', _t('面页小于指定宽度隐藏看板娘'), _t('面页小于 指定宽度 隐藏看板娘,例如 :disable(禁用), 768px'));

$form->addInput($live2d_waifuMinWidth);

$live2d_waifuEdgeSide = new Typecho_Widget_Helper_Form_Element_Text('live2d_waifuEdgeSide', NULL, 'right:0', _t('看板娘贴边方向'), _t('看板娘贴边方向,例如 :left:0(靠左 0px), right:30(靠右 30px)'));

$form->addInput($live2d_waifuEdgeSide);

$live2d_waifuDraggable = new Typecho_Widget_Helper_Form_Element_Radio('live2d_waifuDraggable',

array(

'disable' => _t('禁用'),

'axis-x' => _t('水平'),

'unlimited' => _t('自由'),

),

'disable', _t('拖拽样式'));

$form->addInput($live2d_waifuDraggable);

$live2d_waifuDraggableRevert = new Typecho_Widget_Helper_Form_Element_Radio('live2d_waifuDraggableRevert',

array(

'true' => _t('还原'),

'false' => _t('不还原'),

),

'false', _t('松开鼠标还原拖拽位置'));

$form->addInput($live2d_waifuDraggableRevert);

//self::get_config();

}

public static function deactivate()

{

// TODO: Implement deactivate() method.

}

public static function personalConfig(Typecho_Widget_Helper_Form $form)

{

// TODO: Implement personalConfig() method.

}

//向文件写入看板娘组件

public static function footer(){

$ppd = Helper::options()->pluginUrl;

$div = <<

eof;

echo $div;

echo "

echo "

echo "\")";

echo " \n";

echo " \n";

echo " \n";

//看板娘配置

self::live2d_setting($ppd);

}

//加入css

public static function header(){

$ppd = Helper::options()->pluginUrl;

echo "";

echo "";

self::get_themes();

}

//配置修改

private static function live2d_setting($path){

$themes_index = Typecho_Widget::widget('Widget_Options')->Plugin('Live2d')->live2d_themes;

$themes_list = self::get_themes();

$themes_path = $path.'/Live2d/themes/';

$json = json_encode($themes_list);

$live2d_themes= urldecode($json);

$live2d_config = self::get_config();

$script = <<

live2d_settings['modelAPI'] = '{$themes_path}';

localStorage.live2d_themes = {$live2d_themes};

{$live2d_config}

localStorage.live2d_model_id = {$themes_index};

initModel("{$path}/Live2d/assets/waifu-tips.json")

eof;

echo "";

}

//遍历插件下模型文件

private static function get_themes(){

$ppd = Helper::options()->pluginDir('Live2d');

$path = $ppd.'/Live2d/themes';

//插件目录下的live2d素材包

$list = scandir($path);

//去除头部文件夹

unset($list[0]);

unset($list[1]);

//重建数组索引

sort($list);

return $list;

}

//获取用户设置

private static function get_config(){

$config = Typecho_Widget::widget('Widget_Options')->Plugin('Live2d');

//用户设置选项

$config_option_arr = ['hitokotoAPI','canTurnToHomePage','canSwitchHitokoto','canSwitchModel','canSwitchTextures','canTakeScreenshot','canTurnToAboutPage','canCloseLive2d','modelStorage','modelRandMode','modelTexturesRandMode','showHitokoto','showF12Status','showF12Message','showF12OpenMsg','showCopyMessage','showWelcomeMessage','waifuSize','waifuTipsSize','waifuFontSize','waifuToolFont','waifuToolLine','waifuToolTop','waifuMinWidth','waifuEdgeSide','waifuDraggable','waifuDraggableRevert'];

//获取设置选项

$web_config = '';

foreach($config_option_arr as $key=>$val){

$option = 'live2d_'.$val;

$live2d_option = $config->$option;

if(is_array($live2d_option) || $live2d_option===0 || $live2d_option == 'true'){

$live2d_option = 1;

}

if(is_null($live2d_option) || $live2d_option =='false'){

$live2d_option = 0;

}

if(is_numeric($live2d_option)){

$web_config .='live2d_settings[\''.$val.'\'] = '.$live2d_option.';';

}else{

$web_config .='live2d_settings[\''.$val.'\'] = \''.$live2d_option.'\';';

}

}

//生成页面配置

$http = self::is_https()?'https://':'http://';

$web_config .='live2d_settings[\'aboutPageUrl\'] = \''.$http.$_SERVER['HTTP_HOST'].'\'';

return $web_config;

}

private static function is_https()

{

if (!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') {

return true;

} elseif (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {

return true;

} elseif (!empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) !== 'off') {

return true;

}

return false;

}

}

一键复制

编辑

Web IDE

原始数据

按行查看

历史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
live2d-widget是一个可以在网页中添加可爱的看板娘的网页插件。live2d-widget特性在网页中添加Live2D看板娘。兼容PJAX,支持无刷新加载。 警告:本项目使用了大量 ES6 语法,不支持 IE 11 等老旧浏览器。你也可以在允许的范围内进行二次开发,这里有一些示例 demo.html ,展现基础效果 login.html ,仿NPM的登陆界面live2d-widget安装使用网页看板娘简短安装 只需要把下面3行代码放到页面中,即可实现网页看板娘效果。(格式自己进行添加下即可) script src="https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js" link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/font-awesome/css/font-awesome.min.css" script src="https://cdn.jsdelivr.net/gh/stevenjoezhang/live2d-widget/autoload.js" live2d-widget详细安装说明: 依赖Dependencies 本插件需要Font Awesome(v4 或 v5)图标支持,请确保相关样式表已在页面中加载。以Font Awesome v4 为例,请在 中加入: link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/font-awesome/css/font-awesome.min.css" 否则图标将无法正常显示。(如果网页中已经加载了任何版本的Font Awesome,就不要重复加载了)使用Usage 将这一行代码加入或,即可展现出效果: script src="https://cdn.jsdelivr.net/gh/stevenjoezhang/live2d-widget@latest/autoload.js" 如果网站启用了PJAX,由于看板娘不必每页刷新,因此要注意将相关脚本放到PJAX刷新区域之外。 换句话说,如果你是小白,或者只需要最基础的功能,就只用把这一行代码,连同前面加载Font Awesome的一行代码,一起放到html的中即可。 对于用各种模版引擎(例如 Nunjucks,Jinja 或者 PHP)生成的页面,也要自行修改,方法类似,只是可能略为麻烦。以Hexo为例,需要在主题相关的ejs或njk模版中正确配置路径,才可以加载。 但是!我们强烈推荐自己进行配置,否则很多功能是不完整的,并且可能产生问题! 如果你有兴趣自己折腾的话,请看下面的详细说明。Using CDN 要自定义有关内容,可以把这个仓库Fork一份,然后进行修改。这时,使用方法对应地变为 script src="https://cdn.jsdelivr.net/gh/username/live2d-widget@latest/autoload.js" 将此处的username 替换为你的 GitHub 用户名。为了使 CDN 的内容正常刷新,需要创建新的git tag 并推送至GitHub仓库中,否则此处的 @latest 仍然指向更新前的文件。此外CDN本身存在缓存,因此改动可能需要一定的时间生效。Self-host 你也可以直接把这些文件放到服务器上,而不是通过CDN加载。 如果你能够通过ssh访问你的主机,请把整个仓库克隆到服务器上。执行: cd /path/to/your/webroot # Clone this repository git clone https://github.com/stevenjoezhang/live2d-widget.git 如果你的主机无法用ssh连接(例如一般的虚拟主机),请选择 Download ZIP,然后通过ftp等方式上传到主机上,再解压到网站的目录下。 如果你是通过 Hexo 等工具部署的静态博客,请在博客源文件(即 source)目录下,执行前述的 git clone 命令。重新部署博客时,相关文件就会自动上传到对应的路径下。为了避免这些文件被 Hexo 插件错误地修改,可能需要设置 skip_render。 这样,整个项目就可以通过你的服务器 IP 或者域名从公网访问了。不妨试试能否正常地通过浏览器打开autoload.js 和 live2d.min.js 等文件,并确认这些文件的内容是完整和正确的。 一切正常的话,接下来修改一些配置就行了。(需要通过服务器上的文本编辑器修改;你也可以先在本地完成这一步骤,再上传到服务器上

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值