
插件
网站备案号没有加a标签链接的解决方案
更新与修复 • 君笑尘 发表了文章 • 2 个评论 • 254 次浏览 • 2021-01-18 15:14

由于工信部要求网站在添加备案号的同时,还必须跳转到工信部网站,最近也一直在复查,相信很多人备案后都收到了邮件通知了。
目前后台只能添加文字,阿里云腾讯云等要求必须有链接跳转到工信部。所以这里分享几个加链接的方法。
方案A:
直接在后台填写备案号的地方,填写A标签,但是这个方法填写后就不能修改了,因为我试过保存后。设置界面会出现一点小BUG,所以我个人是不推荐这样填写。
方案B:
修改footer文件:找到网站的 views/default/global/footer.tpl.htm
在大约第5行的位置,把
<?php echo get_setting('icp_beian'); ?>修改成
网站备案号:<a href="http://beian.miit.gov.cn"><?php echo get_setting('icp_beian'); ?></a>
方案C:安装「模板底部优化」插件
这个插件内置了4种底部美化的样式,并且都已经默认内置了备案号跳转工信部的功能,如果你不想自己修改代码,又想美化一下底部的样式,推荐使用这个插件。
「模板底部优化」插件下载地址:
http://market.wecenter.com/index.php?m=content&c=index&a=show&catid=6&id=67
应用市场上线以及插件安装方式说明
插件 • a595975822 回复了问题 • 10 人关注 • 10 个回复 • 4043 次浏览 • 2020-09-21 09:48
有没有一款网站地图插件?这个比较实用啊
插件 • kuailian 回复了问题 • 3 人关注 • 2 个回复 • 454 次浏览 • 2020-08-10 08:55
B站(bilibili)视频地址转成播放器的插件上线
WeCenter 程序 • 三叔 发表了文章 • 5 个评论 • 863 次浏览 • 2020-05-09 21:28
本来打算收费10元的,后来觉得算了,也没几行代码 就放出来了。
效果如上图,本来这文章里只有一个B站播放地址。我的插件会把地址下面渲染出视频。
但是有锚点的才可以,也就是 代码里地址 必须是 有 a标签包含的才可以。这做法的原因是考虑到有的人不希望所有的地址被解析成视频。
插件地址:
http://market.wecenter.com/index.php?m=content&c=index&a=show&catid=6&id=65
【站点必备插件】限制分类发布权限
插件 • 君笑尘 发表了文章 • 0 个评论 • 549 次浏览 • 2020-05-09 15:19

这个是我觉得每个站点很有必要安装的一个插件,
目前wecenter的分类功能,是文章和问答通用的,相信很多站长在运营过程中,
会有问题、文章分类独立的需求。
也会有分类权限限制的需求。
比如问题使用一些分类,文章使用一些另一些分类。
分类【XX】和【XX】只想给管理员使用,其他的可以给会员用,
庆幸3.5.0版本后的插件系统,让我们可以实现这一功能。
目前是现在在发帖时,分类选择框还是会出现限制的分类,
不过待wecenter升级新版本后,插件会进行新的升级,
届时 就能实现 在发布页 的 分类选择框 也不会出现我们限制不给使用的分类,
真正的实现 :问题分类 、文章分类 “ 独立” 使用的效果。
喜欢的朋友可以先购买一波,提前体验一下!
插件购买地址: http://market.wecenter.com/index.php?m=content&c=index&a=show&catid=6&id=64
Wecenter 3.5.0侧边栏名人名言插件首发
插件 • LongDragon 发表了文章 • 2 个评论 • 656 次浏览 • 2020-04-22 23:11

插件原理很简单,调用天行数据的API,随机展示名人名言。
直接在后台填写APIKEY即可。
下载地址:http://market.wecenter.com/index.php?m=content&c=index&a=show&catid=6&id=60
WeCenter3.5.0+插件开发说明文档
WeCenter 程序 • 技术-安辰 发表了文章 • 0 个评论 • 967 次浏览 • 2020-04-20 09:51
插件设计
您在开始插件的设计之前,有必要了解一下我们所推荐的插件设计方式,更好的规范性和兼容性,将使得您设计的插件受到更多使用者的欢迎,对于程序员而言,也有助于形成良好的编码习惯,实现自身能力的提升。如果您有意编写 WeCenter插件,请按照先后顺序仔细阅读本文档。
插件实现流程
开始编写插件,您应当首先对插件实现的流程有一个大致的了解,以下是我们推荐的插件编写流程:
熟练使用 WeCenter系统后,对希望完善或补充的个性化功能进行评估,进而提出插件的功能需求。
对插件做一个概括性的设计,例如:需要使用什么菜单、什么参数,配置哪些选项、数据结构如何设计、前后台实现哪些功能等等。
阅读本文档并在系统设置中实际体验WeCenter插件接口所实现的功用,例如:您的插件应当如何设计才能良好的挂接到WeCente系统中来。插件接口能够实现哪些功能、不能实现哪些功能,插件为此而需要做的优化、改造和取舍。
编写相应程序代码和模板语句,实现所需的功能并进行代码测试、兼容性测试和代码改进。
同时,编写一个适合新手的插件的说明书也是必不可少的,其中包括: 插件适用的WeCenter版本、功能概述、兼容性声明、安装方法、使用方法、卸载方法等等。
将插件提供给他人,或自己使用,根据使用者反馈,对插件进行完善。插件实现流程至此结束。
文件命名规范
WeCenter 按照如下的规范对程序和模板进行命名,请在设计插件时尽量遵循此命名规范:
1.命名规范
插件命名以wc_作为前缀+插件名,如插件test,即wc_test
2.目录新建
目录新建在根目录下plugin文件夹下,如插件名test,目录结构就是/plugins/wc_test/
3.目录结构
目录包含内容必须要有配置文件、核心类,非必要的有模型类、静态资源、第三方类、页面模板等,如test,则完整目录如下
wc_test
|-config.php 配置文件
|-test.php 核心类
|-test_model 模型类
|-view 视图模板目录
|-static 静态资源目录
|-install.sql 安装sql
|-uninstall.sql 卸载sql
|-upgrade.sql 升级sql
4.配置文件
config.php配置文件 返回一个多维数组,包含有:
name: 插件标识
title: 插件标题名称
intro: 插件介绍
author : 插件作者
version: 插件版本
state : 插件状态
config: 也是一个数组,包含所需的配置项,如:
'config'=>[
'ad_plugin_enable' =>
array (
'title' => '广告开启',
'type' => 'radio',
'value' => 'Y',
'options' =>
array (
'Y' => '开启',
'N' => '关闭',
),
'tips' => ’是否开启广告‘
)
],
以上的配置config就是后台插件的配置显示效果,'options' 对应的是配置项的值,'value' 是默认值,'type' 是配置类型,常用的有text,select,radio,checkbox,'title' 是配置名称,tips是配置说明,ad_plugin_enable是开发者自己定义,调用的时候调用此键名即可;
配置调用方式,
get_plugins_config(3.5.0新增方法)
get_hook_config(3.5.0之前方法)
4.核心类
核心类同样继承自AWS_CONTROLLER,包含5个固定方法,即构造方法 install安装,uninstall卸载,enable启用,disable禁用,构造方法获取插件的配置和插件相关信息,安装、卸载、启、禁用四个方法默认是调用系统的方法,也可以自定义,在方法里自行处理相关逻辑。除了这5个方法之外,开发者可以自定义其他的方法进行调用。
注意:若install安装,uninstall卸载,enable启用,disable禁用,未自定义方法,请直接return true;
如:
/**
* 安装前的业务处理,可在此方法实现,默认返回true
* @return bool
*/
public function install()
{
return true;
}
/**
* 卸载前的业务处理,可在此方法实现,默认返回true
* @return bool
*/
public function uninstall()
{
return true;
}
/**
* 插件启用方法
*/
public function enable()
{
return true;
}
/**
* 插件禁用方法
*/
public function disable()
{
return true;
}
5.模型类
模型类的定义名称需后接_model方可,内部的定义与使用与model目录下的模型相同,
另注意一点,此处的模型名不可与model目录下的模型重名,如果重名,会去调用model目录下的模型,从而会导致找不到相关的方法一类的错误。调用方法还是$this->model()进行调用。
6.static、view静态资源、视图目录
Staic目录存放css\js等静态资源
View 视图目可存放后台以及前台的视图模板,后台的要在目录下新建子目录admin,前台的模板直接放在view下即可,在核心类中,通过 PLUTPL::output('ad/banner');渲染页面,其中ad是插件名或者标识,banner是页面名称,PLUTPL::output('ad/admin/edit');后台的只需加上admin即可。
7.安装、卸载、升级
安装、卸载、升级在后台都有相对应的操作,对应相应的sql执行即可。
8.插件调用
正常的调用只需用公共方法hook()方法调用即可,若新建的插件定义了钩子列表可使用run_hook(钩子名称,钩子参数)进行调用钩子,在后台或者其他的页面需要调用插件方法进行页面调用或方法的时候,可以通过get_plugins_url方法获取组装插件链接;代码如下:
/**
* 获取插件地址
* @param string $plugins 插件名称
* @param string $method 插件方法
* @param array $param 插件参数
* @param string $scene auto 自动识别,index前台插件地址,admin,后台插件地址
* @return string
*/
function get_plugins_url($plugins,$method,$param=[],$scene = 'auto')
{
$param_url = array();
$param_url[] = ''.$plugins;
$param_url[] = ''.$method;
foreach ($param as $k=>$v)
{
$param_url[] = $k.'-'.$v;
}
switch ($scene)
{
case 'index':
return get_js_url('/plugins/'.implode('__',$param_url));
break;
case 'admin':
return get_js_url('/admin/plugin/doact/'.implode('__',$param_url));
break;
case 'auto':
if($_GET['app']!='admin')
{
return get_js_url('/plugins/'.implode('__',$param_url));
}else{
return get_js_url('/admin/plugin/doact/'.implode('__',$param_url));
}
break;
}
}
插件概述
使用管理员账号登录WeCenter系统后台,在左侧菜单将可以看到“插件拓展”菜单;
插件管理
点开插件管理后,可以看到所有插件,如插件还未安装会看到如下提示
新建插件
在WeCenter3.5.0版本后,我们在后台提供了快速生成插件目录结构的功能,点击“插件管理”后,可以看到TAB导航中有,设计插件菜单;
钩子说明
钩子名称:在一个插件内,钩子的名称是唯一的,不可重复。名称可以由英文字母、数字和“_”组成,不支持中文,最长255个字符。为了便于理解和记忆钩子的作用, 名称应当尽量简洁清晰,能够表述一定的含义。
注意:钩子名称尽量使用小写字母
钩子介绍:对钩子的详细说明,如功能介绍、调用方法、使用方法等。
是否启用:每个插件允许有多个钩子,您可以自由选择关闭或者开启某个钩子。
钩子的删除
在钩子管理界面,您可以随时删除某一个自定义钩子(系统钩子除外)。 钩子删除以后,您应当及时修正放置钩子的程序文件,清除钩子标记,以免影响您的正常使用。
钩子的编辑
编辑:插件设计阶段,您可能需要随时编辑钩子,每次更改,系统会自动更新缓存文件,您可以立即看到更改的效果。如果是更改钩子名称,那么您可能需要调整钩子放置的程序,修改钩子调用的名称。
钩子的放置与调用
钩子设计完成以后,您需要在相应的程序中安放钩子,不同钩子由于作用的不同,放置的位置也是不同的。 安放钩子,您仅仅需要将钩子的调用代码放入即可。调用代码格式如下:
run_hook(钩子名称,钩子参数)
例如:调用 插件demo 的钩子 testhook,并传参当前页面位置, 我们需要在程序中适当的地方加入下面的代码
run_hook(‘testhook’,[‘page’=>’explore’])
注意:系统内置钩子参数一般都是使用数组的形式进行传参,若系统内置钩子无法满足前台需求,建议使用自定义钩子的方式去实现;
若插件需要给第三方使用,建议使用新建模板添加自定义钩子的方式进行发布;
设计范例
此处我们为您提供一个使用钩子技术的插件范例,完成功能十分简单,旨在使您直观的了解钩子的使用。
进入系统后台的插件管理->钩子管理,添加一个名为demo_hook的插件
再进入系统后台的插件管理,添加一个名称和惟一标识符均为 demo 的插件。
找到“使用钩子”,选择名为 demo_hook 的钩子,然后提交。
同时系统在plugins目录下给我们生成了插件,文件如下:
用编辑器打开plugins/wc_demo/demo.php;我们可以看到系统默认给我们生成的代码如下:
PHP代码:
<?php
/**
* demo插件
*/
class demo extends AWS_CONTROLLER
{
protected $demo_plugin_info;
protected $demo_plugin_config;
/*定义使用的钩子*/
public $hooks = ["demo_hook",];
public function __construct()
{
parent::__construct();
$this->demo_plugin_info = get_hook_info('demo');
$this->demo_plugin_config = get_plugins_config('demo');
}
/**
* 安装前的业务处理,可在此方法实现,默认返回true
* @return bool
*/
public function install()
{
return true;
}
/**
* 卸载前的业务处理,可在此方法实现,默认返回true
* @return bool
*/
public function uninstall()
{
return true;
}
/**
* 插件启用方法
*/
public function enable()
{
return true;
}
/**
* 插件禁用方法
*/
public function disable()
{
return true;
}
/**
* demo_hook钩子方法
* @param $params=[]
*/
public function demo_hook($params=[])
{
echo '这是[demo]插件[demo_hook]钩子的示例!<br>';
}
}
此时我们进入后台插件管理处,可以看到,提示我们有新插件,我们安装demo插件;
此时我们在前端页面explore/index.tpl.htm中放置我们的钩子:
我们放置在页面左侧看下效果:
<?php run_hook('demo_hook');?>
我们打开网站首页,看到如下:
我们看到页面已经输出了,系统默认打印的信息
此时我们只需要完善插件钩子的业务,即demo_hook方法;
WeCenter 插件的钩子技术,为广大的插件开发者提供了一个更加灵活的插件设计机制。当WeCenter升级后,用户只需重新将钩子调用代码安放到程序中原来的位置,就几乎可以继续使用原来已安装的插件,降低了对于程序修改的幅度和插件安装的难度,更加有利于插件程序的规范、管理、维护、相互交流。因此我们强烈建议插件开发者能够深入研究并应用这一机制,创作出越来越多的优秀插件。
使用wecenter,你当前最需要什么功能/插件?
WeCenter 程序 • 紅葉 回复了问题 • 18 人关注 • 14 个回复 • 3657 次浏览 • 2018-12-21 09:43
适用于最新版本(3.1.4)的问题批量导入插件新鲜出炉了!
damai 回复了问题 • 55 人关注 • 16 个回复 • 5257 次浏览 • 2016-02-25 17:21
给前台用户添加修改用户名功能,一个月修改一次
ideager 回复了问题 • 36 人关注 • 9 个回复 • 3565 次浏览 • 2015-11-17 14:53
WeCenter 防灌水触发式封禁插件
湖南人家园 回复了问题 • 61 人关注 • 15 个回复 • 4736 次浏览 • 2015-10-21 14:12
【二次开发教程】三、友情链接开发,后台处理页面,附插件下载。
___在路上____ 回复了问题 • 75 人关注 • 16 个回复 • 9368 次浏览 • 2014-12-07 22:09
通过Excel文件批量导入问题和答案
阿庆说 回复了问题 • 191 人关注 • 60 个回复 • 36898 次浏览 • 2015-11-04 14:30
请问WeCenter3.3.3,有没有好的插件推荐,比如批量内容生产
回复问与答 • a595975822 回复了问题 • 6 人关注 • 4 个回复 • 1084 次浏览 • 2019-10-24 11:26
网站备案号没有加a标签链接的解决方案
更新与修复 • 君笑尘 发表了文章 • 2 个评论 • 254 次浏览 • 2021-01-18 15:14

由于工信部要求网站在添加备案号的同时,还必须跳转到工信部网站,最近也一直在复查,相信很多人备案后都收到了邮件通知了。
目前后台只能添加文字,阿里云腾讯云等要求必须有链接跳转到工信部。所以这里分享几个加链接的方法。
方案A:
直接在后台填写备案号的地方,填写A标签,但是这个方法填写后就不能修改了,因为我试过保存后。设置界面会出现一点小BUG,所以我个人是不推荐这样填写。
方案B:
修改footer文件:找到网站的 views/default/global/footer.tpl.htm
在大约第5行的位置,把
<?php echo get_setting('icp_beian'); ?>修改成
网站备案号:<a href="http://beian.miit.gov.cn"><?php echo get_setting('icp_beian'); ?></a>
方案C:安装「模板底部优化」插件
这个插件内置了4种底部美化的样式,并且都已经默认内置了备案号跳转工信部的功能,如果你不想自己修改代码,又想美化一下底部的样式,推荐使用这个插件。
「模板底部优化」插件下载地址:
http://market.wecenter.com/index.php?m=content&c=index&a=show&catid=6&id=67
B站(bilibili)视频地址转成播放器的插件上线
WeCenter 程序 • 三叔 发表了文章 • 5 个评论 • 863 次浏览 • 2020-05-09 21:28
本来打算收费10元的,后来觉得算了,也没几行代码 就放出来了。
效果如上图,本来这文章里只有一个B站播放地址。我的插件会把地址下面渲染出视频。
但是有锚点的才可以,也就是 代码里地址 必须是 有 a标签包含的才可以。这做法的原因是考虑到有的人不希望所有的地址被解析成视频。
插件地址:
http://market.wecenter.com/index.php?m=content&c=index&a=show&catid=6&id=65
【站点必备插件】限制分类发布权限
插件 • 君笑尘 发表了文章 • 0 个评论 • 549 次浏览 • 2020-05-09 15:19

这个是我觉得每个站点很有必要安装的一个插件,
目前wecenter的分类功能,是文章和问答通用的,相信很多站长在运营过程中,
会有问题、文章分类独立的需求。
也会有分类权限限制的需求。
比如问题使用一些分类,文章使用一些另一些分类。
分类【XX】和【XX】只想给管理员使用,其他的可以给会员用,
庆幸3.5.0版本后的插件系统,让我们可以实现这一功能。
目前是现在在发帖时,分类选择框还是会出现限制的分类,
不过待wecenter升级新版本后,插件会进行新的升级,
届时 就能实现 在发布页 的 分类选择框 也不会出现我们限制不给使用的分类,
真正的实现 :问题分类 、文章分类 “ 独立” 使用的效果。
喜欢的朋友可以先购买一波,提前体验一下!
插件购买地址: http://market.wecenter.com/index.php?m=content&c=index&a=show&catid=6&id=64
Wecenter 3.5.0侧边栏名人名言插件首发
插件 • LongDragon 发表了文章 • 2 个评论 • 656 次浏览 • 2020-04-22 23:11

插件原理很简单,调用天行数据的API,随机展示名人名言。
直接在后台填写APIKEY即可。
下载地址:http://market.wecenter.com/index.php?m=content&c=index&a=show&catid=6&id=60
WeCenter3.5.0+插件开发说明文档
WeCenter 程序 • 技术-安辰 发表了文章 • 0 个评论 • 967 次浏览 • 2020-04-20 09:51
插件设计
您在开始插件的设计之前,有必要了解一下我们所推荐的插件设计方式,更好的规范性和兼容性,将使得您设计的插件受到更多使用者的欢迎,对于程序员而言,也有助于形成良好的编码习惯,实现自身能力的提升。如果您有意编写 WeCenter插件,请按照先后顺序仔细阅读本文档。
插件实现流程
开始编写插件,您应当首先对插件实现的流程有一个大致的了解,以下是我们推荐的插件编写流程:
熟练使用 WeCenter系统后,对希望完善或补充的个性化功能进行评估,进而提出插件的功能需求。
对插件做一个概括性的设计,例如:需要使用什么菜单、什么参数,配置哪些选项、数据结构如何设计、前后台实现哪些功能等等。
阅读本文档并在系统设置中实际体验WeCenter插件接口所实现的功用,例如:您的插件应当如何设计才能良好的挂接到WeCente系统中来。插件接口能够实现哪些功能、不能实现哪些功能,插件为此而需要做的优化、改造和取舍。
编写相应程序代码和模板语句,实现所需的功能并进行代码测试、兼容性测试和代码改进。
同时,编写一个适合新手的插件的说明书也是必不可少的,其中包括: 插件适用的WeCenter版本、功能概述、兼容性声明、安装方法、使用方法、卸载方法等等。
将插件提供给他人,或自己使用,根据使用者反馈,对插件进行完善。插件实现流程至此结束。
文件命名规范
WeCenter 按照如下的规范对程序和模板进行命名,请在设计插件时尽量遵循此命名规范:
1.命名规范
插件命名以wc_作为前缀+插件名,如插件test,即wc_test
2.目录新建
目录新建在根目录下plugin文件夹下,如插件名test,目录结构就是/plugins/wc_test/
3.目录结构
目录包含内容必须要有配置文件、核心类,非必要的有模型类、静态资源、第三方类、页面模板等,如test,则完整目录如下
wc_test
|-config.php 配置文件
|-test.php 核心类
|-test_model 模型类
|-view 视图模板目录
|-static 静态资源目录
|-install.sql 安装sql
|-uninstall.sql 卸载sql
|-upgrade.sql 升级sql
4.配置文件
config.php配置文件 返回一个多维数组,包含有:
name: 插件标识
title: 插件标题名称
intro: 插件介绍
author : 插件作者
version: 插件版本
state : 插件状态
config: 也是一个数组,包含所需的配置项,如:
'config'=>[
'ad_plugin_enable' =>
array (
'title' => '广告开启',
'type' => 'radio',
'value' => 'Y',
'options' =>
array (
'Y' => '开启',
'N' => '关闭',
),
'tips' => ’是否开启广告‘
)
],
以上的配置config就是后台插件的配置显示效果,'options' 对应的是配置项的值,'value' 是默认值,'type' 是配置类型,常用的有text,select,radio,checkbox,'title' 是配置名称,tips是配置说明,ad_plugin_enable是开发者自己定义,调用的时候调用此键名即可;
配置调用方式,
get_plugins_config(3.5.0新增方法)
get_hook_config(3.5.0之前方法)
4.核心类
核心类同样继承自AWS_CONTROLLER,包含5个固定方法,即构造方法 install安装,uninstall卸载,enable启用,disable禁用,构造方法获取插件的配置和插件相关信息,安装、卸载、启、禁用四个方法默认是调用系统的方法,也可以自定义,在方法里自行处理相关逻辑。除了这5个方法之外,开发者可以自定义其他的方法进行调用。
注意:若install安装,uninstall卸载,enable启用,disable禁用,未自定义方法,请直接return true;
如:
/**
* 安装前的业务处理,可在此方法实现,默认返回true
* @return bool
*/
public function install()
{
return true;
}
/**
* 卸载前的业务处理,可在此方法实现,默认返回true
* @return bool
*/
public function uninstall()
{
return true;
}
/**
* 插件启用方法
*/
public function enable()
{
return true;
}
/**
* 插件禁用方法
*/
public function disable()
{
return true;
}
5.模型类
模型类的定义名称需后接_model方可,内部的定义与使用与model目录下的模型相同,
另注意一点,此处的模型名不可与model目录下的模型重名,如果重名,会去调用model目录下的模型,从而会导致找不到相关的方法一类的错误。调用方法还是$this->model()进行调用。
6.static、view静态资源、视图目录
Staic目录存放css\js等静态资源
View 视图目可存放后台以及前台的视图模板,后台的要在目录下新建子目录admin,前台的模板直接放在view下即可,在核心类中,通过 PLUTPL::output('ad/banner');渲染页面,其中ad是插件名或者标识,banner是页面名称,PLUTPL::output('ad/admin/edit');后台的只需加上admin即可。
7.安装、卸载、升级
安装、卸载、升级在后台都有相对应的操作,对应相应的sql执行即可。
8.插件调用
正常的调用只需用公共方法hook()方法调用即可,若新建的插件定义了钩子列表可使用run_hook(钩子名称,钩子参数)进行调用钩子,在后台或者其他的页面需要调用插件方法进行页面调用或方法的时候,可以通过get_plugins_url方法获取组装插件链接;代码如下:
/**
* 获取插件地址
* @param string $plugins 插件名称
* @param string $method 插件方法
* @param array $param 插件参数
* @param string $scene auto 自动识别,index前台插件地址,admin,后台插件地址
* @return string
*/
function get_plugins_url($plugins,$method,$param=[],$scene = 'auto')
{
$param_url = array();
$param_url[] = ''.$plugins;
$param_url[] = ''.$method;
foreach ($param as $k=>$v)
{
$param_url[] = $k.'-'.$v;
}
switch ($scene)
{
case 'index':
return get_js_url('/plugins/'.implode('__',$param_url));
break;
case 'admin':
return get_js_url('/admin/plugin/doact/'.implode('__',$param_url));
break;
case 'auto':
if($_GET['app']!='admin')
{
return get_js_url('/plugins/'.implode('__',$param_url));
}else{
return get_js_url('/admin/plugin/doact/'.implode('__',$param_url));
}
break;
}
}
插件概述
使用管理员账号登录WeCenter系统后台,在左侧菜单将可以看到“插件拓展”菜单;
插件管理
点开插件管理后,可以看到所有插件,如插件还未安装会看到如下提示
新建插件
在WeCenter3.5.0版本后,我们在后台提供了快速生成插件目录结构的功能,点击“插件管理”后,可以看到TAB导航中有,设计插件菜单;
钩子说明
钩子名称:在一个插件内,钩子的名称是唯一的,不可重复。名称可以由英文字母、数字和“_”组成,不支持中文,最长255个字符。为了便于理解和记忆钩子的作用, 名称应当尽量简洁清晰,能够表述一定的含义。
注意:钩子名称尽量使用小写字母
钩子介绍:对钩子的详细说明,如功能介绍、调用方法、使用方法等。
是否启用:每个插件允许有多个钩子,您可以自由选择关闭或者开启某个钩子。
钩子的删除
在钩子管理界面,您可以随时删除某一个自定义钩子(系统钩子除外)。 钩子删除以后,您应当及时修正放置钩子的程序文件,清除钩子标记,以免影响您的正常使用。
钩子的编辑
编辑:插件设计阶段,您可能需要随时编辑钩子,每次更改,系统会自动更新缓存文件,您可以立即看到更改的效果。如果是更改钩子名称,那么您可能需要调整钩子放置的程序,修改钩子调用的名称。
钩子的放置与调用
钩子设计完成以后,您需要在相应的程序中安放钩子,不同钩子由于作用的不同,放置的位置也是不同的。 安放钩子,您仅仅需要将钩子的调用代码放入即可。调用代码格式如下:
run_hook(钩子名称,钩子参数)
例如:调用 插件demo 的钩子 testhook,并传参当前页面位置, 我们需要在程序中适当的地方加入下面的代码
run_hook(‘testhook’,[‘page’=>’explore’])
注意:系统内置钩子参数一般都是使用数组的形式进行传参,若系统内置钩子无法满足前台需求,建议使用自定义钩子的方式去实现;
若插件需要给第三方使用,建议使用新建模板添加自定义钩子的方式进行发布;
设计范例
此处我们为您提供一个使用钩子技术的插件范例,完成功能十分简单,旨在使您直观的了解钩子的使用。
进入系统后台的插件管理->钩子管理,添加一个名为demo_hook的插件
再进入系统后台的插件管理,添加一个名称和惟一标识符均为 demo 的插件。
找到“使用钩子”,选择名为 demo_hook 的钩子,然后提交。
同时系统在plugins目录下给我们生成了插件,文件如下:
用编辑器打开plugins/wc_demo/demo.php;我们可以看到系统默认给我们生成的代码如下:
PHP代码:
<?php
/**
* demo插件
*/
class demo extends AWS_CONTROLLER
{
protected $demo_plugin_info;
protected $demo_plugin_config;
/*定义使用的钩子*/
public $hooks = ["demo_hook",];
public function __construct()
{
parent::__construct();
$this->demo_plugin_info = get_hook_info('demo');
$this->demo_plugin_config = get_plugins_config('demo');
}
/**
* 安装前的业务处理,可在此方法实现,默认返回true
* @return bool
*/
public function install()
{
return true;
}
/**
* 卸载前的业务处理,可在此方法实现,默认返回true
* @return bool
*/
public function uninstall()
{
return true;
}
/**
* 插件启用方法
*/
public function enable()
{
return true;
}
/**
* 插件禁用方法
*/
public function disable()
{
return true;
}
/**
* demo_hook钩子方法
* @param $params=[]
*/
public function demo_hook($params=[])
{
echo '这是[demo]插件[demo_hook]钩子的示例!<br>';
}
}
此时我们进入后台插件管理处,可以看到,提示我们有新插件,我们安装demo插件;
此时我们在前端页面explore/index.tpl.htm中放置我们的钩子:
我们放置在页面左侧看下效果:
<?php run_hook('demo_hook');?>
我们打开网站首页,看到如下:
我们看到页面已经输出了,系统默认打印的信息
此时我们只需要完善插件钩子的业务,即demo_hook方法;
WeCenter 插件的钩子技术,为广大的插件开发者提供了一个更加灵活的插件设计机制。当WeCenter升级后,用户只需重新将钩子调用代码安放到程序中原来的位置,就几乎可以继续使用原来已安装的插件,降低了对于程序修改的幅度和插件安装的难度,更加有利于插件程序的规范、管理、维护、相互交流。因此我们强烈建议插件开发者能够深入研究并应用这一机制,创作出越来越多的优秀插件。
基于官方编辑器插件修改的支持水印的插件
插件 • 三叔 发表了文章 • 1 个评论 • 865 次浏览 • 2019-12-08 12:10
只支持ueditor水印。
水印图片放在:网站目录/plugins/wc_editor/static/ueditor/ 目录下。
取名为 watermark.png 不要乱改名字,否则需要改代码。
效果如:
真实文中效果如:http://sanshu.cn/a/13.html
下载插件如:
插件放在 网站目录/plugins/下面
Wecenter插件系统开发规范
插件 • fanta 发表了文章 • 0 个评论 • 1508 次浏览 • 2019-06-14 13:31

1.命名规范
插件命名以wc_作为前缀+插件名,如插件test,即wc_test
2.目录新建
目录新建在根目录下plugin文件夹下,如插件名test,目录结构就是/plugins/wc_test/
3.目录结构
目录包含内容必须要有配置文件、核心类,非必要的有模型类、静态资源、第三方类、页面模板等,如test,则玩着目录如下
wc_test
|-config.php 配置文件
|-test.php 核心类
|-test_model 模型类
|-view 视图模板目录
|-static 静态资源目录
|-install.sql 安装sql
|-uninstall.sql 卸载sql
|-upgrade.sql 升级sql
4.配置文件
Config.php配置文件 返回一个多维数组,包含有:
name: 插件标识
title: 插件标题名称
intro: 插件介绍
author : 插件作者
version: 插件版本
state : 插件状态
config: 也是一个数组,包含所需的配置项,如:
'config'=>[
'ad_plugin_enable' =>
array (
'title' => '广告开启',
'type' => 'radio',
'value' => 'Y',
'options' =>
array (
'Y' => '开启',
'N' => '关闭',
),
)
],
以上的配置config就是后台广告插件的配置显示效果,
'options' 对应的是配置项的值,
'value' 是默认值,
'type' 是配置类型,
'title' 是配置名称
常用的有text,select,radio,CheckBox
ad_plugin_enable是开发者自己定义,调用的时候调用此键名即可
5.核心类
核心类同样继承自AWS_CONTROLLER,包含5个固定方法,即构造方法 install安装,uninstall卸载,enable启用,disable禁用,构造方法获取插件的配置和插件相关信息,安装、卸载、启用、禁用四个方法默认是调用系统的方法,也可以自定义,在方法里自行处理相关逻辑。
除了这5个方法之外,开发者可以自定义其他的方法进行调用。
6.模型类
模型类的定义名称需后接_model方可,如test_model,内部的定义与使用与model目录下的模型相同,
另注意一点,此处的模型名不可与model目录下的模型重名,如果重名,会去调用model目录下的模型,从而会导致找不到相关的方法一类的错误。
调用方法还是$this->model()进行调用。
6.static、view静态资源、视图目录
Staic目录存放css\js等静态资源
View 视图目可存放后台以及前台的视图模板
后台视图的要在目录下新建子目录admin,前台的模板直接放在view下即可,在核心类中,通过 PLUTPL::output('ad/banner');渲染页面,其中ad是插件名或者标识,banner是页面名称
后台的只需加上admin即可,如PLUTPL::output('ad/admin/edit');。
7.安装、卸载、升级
安装、卸载、升级在后台都有相对应的操作,对应相应的sql执行即可。
8.插件调用
正常的调用只需用公共方法hook()方法调用即可,在后台或者其他的页面需要调用插件方法进行页面调用或方法的时候,可以通过doact方法,前台explore/doact 后台admin/plugin/doact ,如
添加广告按钮需要调用插件添加广告的方法,此处是超链接,可以通过admin/plugin/doact/?p=ad&a=edit进行传参调用,其中p和a是必传的,p是插件名,a是方法名。
在文章底部增加第三方社交分享功能
建站运营 • 三叔 发表了文章 • 5 个评论 • 1434 次浏览 • 2019-05-29 12:25
第一步:
在 /views/default/global/下创建文件 socialshare.tpl.htm
写入代码:
<div class="social-share" data-mobile-sites="weibo,qq,qzone,tencent,wechat"></div>
<link href="//cdnjs.cloudflare.com/ajax/libs/social-share.js/1.0.16/css/share.min.css" rel="stylesheet">
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/social-share.js/1.0.16/js/jquery.share.min.js"></script>
第二步:
/views/模板/article/index.tpl.htm 你要放社交按钮的地方增加代码:
<?php TPL::output('global/socialshare.tpl.htm'); ?>
收功!
效果如:
参考网页:
http://www.bejson.com/a/12.html
建议官方做问卷调查的插件
建议 • logclub 发表了文章 • 3 个评论 • 1081 次浏览 • 2018-07-02 14:11
...
在知识库中嵌入问卷调查的插件,
一是能通过积分之类的鼓励大家参与,
二是能通过调查问卷来增加行业数据的收集
不晓得官方会不会关注这块
关于wecenter编辑器直接粘贴图片
WeCenter 程序 • Core 发表了文章 • 0 个评论 • 1924 次浏览 • 2018-03-24 09:52