• 欢迎 游客 您的光临,下载之前请先阅读 积分规则 。任何技术问题请在论坛提问,本站定制插件、模板主题。售前、售后问题请联系QQ:5916171
    本站自由发布资源可赚取积分及人民币(可提现)(保证资源真实可用,如被举报封号处理。谨慎分布)。
  • 即日起发表主题、回帖、发布&更新资源、创建&回复私信、发布&回复个人动态均需要验证手机号码,其它不受影响。如不便可进群提问。点击链接加入群聊【XenForo讨论社区】:群号1:143277648

技巧教程 创建一个AddOn

  • 主题发起人 主题发起人 Juna.
  • 开始时间 开始时间
UID
912
注册
2020/07/06
消息
23
黄金
1,411G
  • #1
翻译官方论坛Lawrence的教程


第 1部分


本教程将引导您逐步完成创建工并了XenForo附加组件的过程。
创建的加载项将允许管理员阻止编辑帖子数量少于指定数量且属于特定组的成员的签名。
为此,我们需要设置一个监听器,一个管理员选项页面,并创建PHP文件。
我决定在本演教程中不使用屏幕截图,因为我想给人一种您已经知道XenForo的模型视图控制器(MVC)概念并且即将编写附加组件的感觉。将详细解释每个步骤。
工作加载项将在本教程结束时提供,供编码人员参考或许可成员使用。
如果计划逐步生成加载项,则需要启用调试模式。建议您先备份配置文件.php文件,然后再对其进行编辑。要启用调试模式:
打开您的网站安装库 在我提供的文件夹目录上找到此文件library -> config.php
在底部添加如下代码

此时,您可能还需要添加

之后您就可以保存文件了

创建附加组件
登录到您的AdminCP,并找到:Development->Create Add-on
此加载项的以下字段需要填写以下信息:

Add-on ID: 限制
Title: 限制新成员的签名
Version String: 1.0
Version ID: 1

版本ID在内部用于跟踪修订。为每个修订增加此数字。
此加载项不需要的其余字段。

单击“保存加载项”按钮完成保存
由于我们的附加组件的目的是不允许新成员编辑(创建)签名,因此我们必须在XenForo中找到成员可以编辑其签名的位置,以便我们可以侦听正在调用的类。这是由控制器处理的。有四个控制器目录:Admin、Helper、Public和Response。编辑签名不是管理功能。也不是一个帮助者,或者一个回应,让我们与公众保持联系。从文件管理器找到到ControllerPublic。由于编辑签名是成员帐户的一部分,请查找帐户。php。打开此文件并搜索签名。突出显示的第一个单词就在上面:公共函数actionSignature()。这是我们要覆盖的函数。
现在我们必须侦听调用此函数所属的类(XenForo_ControllerPublic_Account)。
XenForo附带了很多监听器,我们可以从中选择找到:Development -> Code Event Listeners. Click on the Create New Code Event Listener.
第一个下拉列表允许您选择要侦听的事件。当我们想要从正在加载的控制器中监听一个类时,从下拉列表中选择Load_Class_Controller(加载类控制器
这个加载类控制器listener 很复杂,但它功能强大,提供了所有侦听器中最灵活的功能。当您选择此侦听器时,您将注意到加载类控制器将该类必须定为:class My_Class_Name extends XFCP_My_Class_Name. 直接加载此类将导致自动加载程序生成以下异常:无法使用XFCP加载类。首先使用正确的加载程序加载类。
错误的意思是,必须先加载要创建的新类,然后才能解析它。但问题是,它在哪里加载,如何加载?这就是$extend数组参数的用途。

第二部分
保持侦听器页面打开,并使用文件管理器浏览到:你的网站安装位置/library/
现在,我们将设置你的Add-on's目录结构。
创建一个名为LimitSig的新目录
请注意,目录名中的L和S是大写的。我们使用这种格式来保证文件与XenForo目录名相同的标准。
在LimitSig中创建一个名为Listener的新目录。这里是我们存储侦听器的地方。在侦听器中,创建一个名为LoadClassController的新文件。php。我们使用的目录和文件名结构将使您能够轻松找到将来要编辑的文件,并且它遵循与XenForo相同的格式。

在LoadClassController中。php文件添加

保存LoadClassControllerp.hp
如果您注意到,该类反映了目录结构。这是非常重要的。我们的函数包含两个参数$class和$extend。$class将包含我们将测试的类名。$extend[]是一个数组,如果$class包含XenForo_ControllerPublic_Account使用此数组允许其他加载项在不受干扰的情况下使用此侦听器。

现在,我们可以将我们的类和方法添加到我们在中创建的侦听器的执行回调文本框中AdminCp -> Development section.

对于类型:LimitSig_Listener_LoadClassController

方法就是我们的函数。类型:loadClassListener

保留回调执行顺序默认值。这个值只在另一个load_class_controller事件必须发生时才需要修改。

确保选中“启用回调执行”。

描述类型中:监听XenForo_ControllerPublic_Account类
在下拉菜单中选择“限制新成员的签名”,然后单击“保存”。如果遵循上面的结构,Listener将被成功保存。
LoadClassController.php文件中的类现在将侦听XenForo_ControllerPublic_Account。当这个类被加载时,$extend[]将被名称为LimitSig_ControllerPublic_LimitSig填充。现在我们需要创建该文件和类。通过查看类名,您可以知道它将位于哪个目录,以及我们使用的php文件的名称

LimitSig -> ControllerPublic -> LimitSig.php
创建ControllerPublic目录,然后创建LimitSig.php。在LimitSig文件中添加:


您应该注意到在侦听器描述中引用的XFCP_前缀的使用。因为我们不能扩展一个不存在的类,所以将它加载到$extend[]中会验证我们的类,这样就可以扩展它了。

注意函数actionSignature()。这就是我们想要重写的account。php中的函数。在这个函数中,我们将添加代码来检查发布计数。

在AdminCP中创建新的选项组之前,可以将此函数留空。如果你跟随每个部分,你可以关闭这个插件,直到我们添加代码:

AdminCP home,取消选中新成员的附加组件限制签名。

第3部分
若要将选项添加到“限制签名附加组件”,请导航到“AdminCP Home ->选项”。
在页面顶部,单击:+添加选项组
Group ID(包含Admins设置的值的选项名):limitsigOptions。

Title (出现在“选项”列表中的名称):签名选项
Description (单击选项组时显示的简短描述):留空,除非您觉得需要更详细的描述。
Display Order:默认
Add-on:从下拉菜单中选择限制新成员签名。
单击“保存选项组”。



现在已经创建了新组,是时候添加几个选项了。第一个选项将允许管理员设置一个新成员需要做的帖子的最低数量,才能有一个签名。第二种方法是将这个最小金额用于一个或多个特定群体。添加组选项将允许我们选择哪些组应该应用消息计数检查,哪些组将被豁免,例如:一个新的赞助商或贡献者的消息计数低于指定的将仍然有创建签名的权限。

点击:add option

Add Option页面有许多文本框、下拉框和复选框,可以用来创建选项。第一个选项是option ID。这是我们将在LimitSig.php文件中测试的选项的ID。给它一个名称,可以很容易地将它与这个插件关联起来,以及该选项将包含什么。对于这个插件,我选择:sigmessageCount。

注意这个案例:

Add-on(从下拉列表中选择):限制新成员的签名

Title (选项的名称):最小消息数

Explaination(此选项的简要描述):创建签名所需的成员最小消息数。请输入0到50之间的值。O的设置将关闭最小消息数检查。

Edit Format。从下拉菜单中,选择你的选项类型:文本框、自旋框、开/关复选框、单选按钮、选择菜单、复选框、命名模板或PHP回调。由于我们正在寻找要限制的数字,请选择:Spin Box。

Format Parameters.。您可以为某些类型的选项设置限制和行为。当我们使用一个旋转框,我们可以添加到这个选项的最小值,最大值和步长值。小于最小值的值将默认为最小值,大于最大值的值将默认为最大值。只需将每个你想要定义的元素放到它自己的线上。步长值设置按下+或-将增加文本框中的值的次数。如果您希望步长为1,则删除step=x线。

Min=0
Max=50
Step=5


Data Type:要设置的数据类型。在下拉框中选择Unsigned Integer。我们不希望我们的数据是一个正整数,因为任何低于1的值将默认为1,我们希望能够使用0。

Default Value。这是加载项导入时为选项设置的默认值。由于5是一个很好的数字,用于限制用户的帖子少于x,我们将把默认值设置为5。

Array Sub Options.。由于我们没有将值存储在数组中,因此将保留该值为空。

Validation Callback。留下空白。如果需要验证Administrators选择,将使用此字段。

例如,如果一个论坛,管理员选择的确实是一个论坛,而不是一个类别或页面。

Display in Groups。这是您希望此选项出现的所有选项组的列表。默认值是在下拉菜单中选择的附加组件。离开的。

Include this Option in Backups。默认选中。检查。

按下Save Option按钮。您现在将有您的第一个工作选项在我们的签名选项组,您可以设置和保存。

再次,选择添加选项。

Option ID: siglimitGroups

Add-on:限制新成员的签名

Title:适用于群组

Explanation:选择哪些组需要最小消息数来创建签名。属于所选组之一的管理员和版主成员将被排除在外。

Edit Format: PHP回调。我们使用PHP回调,因为我们想要生成一个组列表(Unregistered、Administrative和Moderating除外),其中包括那些由管理员创建的组。

Format Parameters。当我们选择PHP Callback时,我们需要将Option指向类和方法使用的位置:LimitSig_Option_Group::renderOption

Data Type:数组。因为管理员可以选择多个组,所以需要一个数组

Default Value:a:1:{i:0;s:1:"2";}缺省值为“注册组”。如何改变这个值,我将解释当我们有这个选项的预期工作。

Array Sub-Options:*(我们在这里使用星号,因为我们不需要在数组的特定命名键中存储信息,如:宽度,高度,user_id等)

Validation Callback:违约。当我们控制管理员可以检查的组时,我们知道这些组是有效的。

Display in Groups:签名选项。

Include this option in back-ups:默认(选中)

在选择Save之前,我们需要创建我们的PHP回调类和方法来呈现一个组列表,供管理员选择。
 
最后编辑:
  • #2
目前还没翻译完正在翻译中ing
 
后退
顶部 底部