请教多个不同的插件在同一个插入点做处理的冲突问题

Bug,需求以及想法
回复
arest
帖子: 68
注册时间: 2014年 2月 13日 09:48
来自: 江苏
联系:

请教多个不同的插件在同一个插入点做处理的冲突问题

帖子 arest »

看代码里是遍历所有插件,然后逐一调用插件进行处理,
这样的话如果两个插件在同一个地方做不同的处理,最后返回的结果就会以最后执行的那个插件为准。

请问这个地方有什么标准的处理方法吗?

比如我安装了两个插件,由不同的人开发
一个对文章内容进行装饰,然后输出装饰后的内容,
一个对文章权限进行控制,对无权限用户隐藏内容。

假如都在content那儿处理,(实际上装饰处理可以用contentEx,这儿只是举个例子)

这样的话如果装饰的插件在权限控制插件后面安装,那么即使用户权限控制没有通过,还是会输出装饰后的内容。

请问对于这种情况有标准的处理方法吗?
头像
abelyao
帖子: 43
注册时间: 2014年 2月 15日 18:31

Re: 请教多个不同的插件在同一个插入点做处理的冲突问题

帖子 abelyao »

刚刚做一个插件的时候,就遇到了两个插件挂载同一个 API 的问题。结果是:
执行最后激活的那个插件。

Ps. 我不确定是按顺序执行,还是只执行了最后激活的那个插件。 ;)
arest
帖子: 68
注册时间: 2014年 2月 13日 09:48
来自: 江苏
联系:

Re: 请教多个不同的插件在同一个插入点做处理的冲突问题

帖子 arest »

我们公司github基本上不去。。不给力的一腿,我已经悲剧的转到osc的git了~~
头像
ClayMore
帖子: 2481
注册时间: 2007年 11月 29日 02:55
来自: Sleeping Forest
联系:

Re: 请教多个不同的插件在同一个插入点做处理的冲突问题

帖子 ClayMore »

fix #152
增加了插件优先级定义的支持,多个插件之间可以自行约定执行顺序,范例

代码: 全选

Typecho_Plugin::factory('admin/menu.php')->navBar_1000 = array('HelloWorld_Plugin', 'render');


这个插件的执行优先级就是1000,默认的执行顺序是10,越大的数字越靠后执行
arest
帖子: 68
注册时间: 2014年 2月 13日 09:48
来自: 江苏
联系:

Re: 请教多个不同的插件在同一个插入点做处理的冲突问题

帖子 arest »

ClayMore 写了:fix #152
增加了插件优先级定义的支持,多个插件之间可以自行约定执行顺序,范例

代码: 全选

Typecho_Plugin::factory('admin/menu.php')->navBar_1000 = array('HelloWorld_Plugin', 'render');


这个插件的执行优先级就是1000,默认的执行顺序是10,越大的数字越靠后执行

晕。。这样指定的,没提供一个接口啊。。
不过不同人开发的插件怎么协调啊。。
多谢了
头像
ShingChi
帖子: 910
注册时间: 2010年 6月 16日 10:11

Re: 请教多个不同的插件在同一个插入点做处理的冲突问题

帖子 ShingChi »

我也觉得这有点问题呀,插件是不同开发者开发的,不能保证定义的数字不出现冲突,建议再优化优化。
头像
abelyao
帖子: 43
注册时间: 2014年 2月 15日 18:31

Re: 请教多个不同的插件在同一个插入点做处理的冲突问题

帖子 abelyao »

ShingChi 写了:我也觉得这有点问题呀,插件是不同开发者开发的,不能保证定义的数字不出现冲突,建议再优化优化。

这就跟 CSS 中的 z-index 一个道理,不同人写的样式,为了最顶级,99,999,9999,99999,现在没写个 999999 都不敢拿出来了 :|
arest
帖子: 68
注册时间: 2014年 2月 13日 09:48
来自: 江苏
联系:

Re: 请教多个不同的插件在同一个插入点做处理的冲突问题

帖子 arest »

abelyao 写了:
ShingChi 写了:我也觉得这有点问题呀,插件是不同开发者开发的,不能保证定义的数字不出现冲突,建议再优化优化。

这就跟 CSS 中的 z-index 一个道理,不同人写的样式,为了最顶级,99,999,9999,99999,现在没写个 999999 都不敢拿出来了 :|

看来大家要早做准备了。。。
回复