我从选择的组件中希望获得的核心功能
“核心”组件提供了一些非常有价值的功能,如标签、版本控制和按类别设置ACL(访问控制列表)。这些功能可用于集成和使用第三方组件,但这些组件往往忽略了它们。以下是我评估组件时寻找的“核心”功能的列表。考虑一下,你可能也会希望拥有它们。
我将“核心”组件视为我希望从扩展中获得的东西的模型。他们是首先实现成为Joomla标准功能的功能。它们代表了作为消费者,我们应该期待从Joomla组件中获得的东西。扩展开发者也应该注意。我们可以确信,“核心”中的这些功能将继续由Joomla库支持。我们可以通过研究核心组件的实现来学习如何在第三方扩展中实现这些功能。我们应该想要它们。开发者应该想要包含它们。
新功能的采用并没有像人们想象的那样快。ACL就是一个例子。在第一年,太多的开发者缓慢地实现了即使是“基本”的ACL,尽管文档中提到只需要18行新代码。
当我评估第三方组件时,我会考虑开发者的方法和记录。如果他们对已建立的Joomla功能提供不良的支持,我希望去别处寻找。有时我不得不妥协,直到有人构建并提供那个“更好的捕鼠器”。在此期间,“核心”向我展示了那个“更好的捕鼠器”的样子。
以下是我寻找的“核心”功能。这些功能由Joomla库支持,只要开发者在组件中添加少量代码或开发一个插件,就可以添加到任何第三方组件中。
完整的ACL(访问控制列表)
Joomla的ACL非常强大和灵活。它使我们能够以任何方式分割用户,并为这些组中的每一个分配权限。
Joomla 提供了访问控制列表(ACL)框架,但每个组件都有责任实现权限以及可以细分到的级别。令人惊讶的是,一个组件即使不实现 ACL 也可以被列入 JED。而许多提供 ACL 的组件,提供的只是“基本”ACL 支持,要么是整个组件的完全访问,要么是完全拒绝访问。丰富的 ACL 实现允许我们对创建、编辑和删除等动作进行细分,以及对组件的分类或不同的数据类型进行细分。如果一个组件涉及多种不同类型的任务或数据,应该允许我们将用户细分到不同的角色中。例如,一个电子商务组件应该包括支持产品管理、定价、库存、订单履行和支付处理等不同角色的操作。
需要关注的内容:如果组件包含数据记录,它几乎肯定将受益于“创建”、“编辑”、“删除”等权限。这些权限是否存在?如果组件包含分类,它是否为每个分类提供一组权限?如果组件包含不同的数据类型(如多个标签或多个数据库表),如果组件允许您细分对这些部分的访问,那么您就找到了一个赢家。
内容历史(版本控制)
这是对核心功能的一项迫切需求。用户会犯错误,每个人都会期望有一个“撤销”选项。在没有版本控制功能的情况下,一旦保存并关闭一个项目,之前的版本就会丢失。但现在不再需要这样了——对于任何组件来说都是如此。
内容历史功能使用户能够查看更改的历史记录以及恢复到之前的历史记录。组件指定要跟踪历史记录中的哪些字段以及在比较屏幕上显示哪些字段。内容历史可以存储和比较任何字段,而不仅仅是大量的格式化文本。因此,任何存储字段数据的组件都可以通过允许用户查看、比较和恢复最近版本的历史值来增加价值。
就像 ACL 一样,Joomla 提供了框架,因此组件的开发者只需添加一小部分代码即可实现版本控制。比较和回滚到以前版本的能力非常重要,不容忽视。提供内容历史的开发者将获得竞争优势。
需要关注的内容:打开一个已保存的项目。如果这种数据类型支持版本控制,工具栏中将出现一个“版本”按钮。
Joomla 分类
Joomla 分类及其功能可供任何组件使用。它们提供了多级层次结构、分类特定权限、在分类内排序项目、下拉字段选择分类等。一些组件的用户可能不需要分类,但有些人需要,因此提供分类几乎是明智之举。有时,一个组件将实现自己的分类类型,但这些很少能带来比 Joomla 分类更多的价值。此外,我见过用户在学习与 Joomla 分类不同的自定义分类时遇到困难。
需要关注的内容:如果一个组件允许创建多个项目,它应该允许您在组件中创建分类并将每个项目分配到分类中。要了解组件是否使用 Joomla 分类,打开其分类管理器——如果 URL 中说明选项是 com_categories,那么它正在使用 Joomla 分类。
标签
最近添加的标签功能为分组项目开辟了新的维度:一个项目可以属于多个标签,而无需受限于类别层次结构。更进一步,任何给定的标签都可以分配给跨越多个数据类型的项。只要组件的开发者将组件与Joomla标签系统关联起来,该组件的项目就会被包括在整个网站中作为一个可标签化的数据类型。别忘了,标签还可以应用于Joomla类别。
需要寻找的内容:项目将有一个标签字段。要确认这是一个Joomla标签,你应该在数据库表#__content_types中看到这个组件的条目。如果组件使用Joomla类别,那么这些类别也可以进行标签化。
搜索
当用户进行文本搜索时,该搜索依赖于一系列插件,每个插件对应它搜索的一个组件。Joomla的新安装包括内容、联系人、新闻链接、网页链接和类别的搜索插件。如果一个组件的项目可以从网站范围内的文本搜索中受益,那么开发者为提供该组件的搜索插件会做得更好。
需要寻找的内容:在目录/plugins/search/中,你应该看到每个提供搜索插件的组件的命名目录。
Joomla更新器
我们应该假设任何更新都很重要——无论是针对安全、错误修复还是新/改进的功能。没有自动更新,我们需要网站管理员或我们自己定期检查扩展的网站。通常这会导致延迟,甚至更新到最新版本的完全失败。使用Joomla更新器的扩展反映了开发者对客户的承诺。
需要寻找的内容:最可靠的方法是确认扩展使用Joomla更新器,查看数据库表#__update_sites,其中包含更新器检查的每个已安装扩展的记录。一些组件提供Akeeba的实时更新,这是更新器的合理替代品,这些通常在/administrator/components/<component-name>/下的liveupdate目录中。
微数据
在我写这篇文章时,微数据是Joomla本月计划在3.3版本中发布的最新功能。微数据在特定类型的内容周围添加描述性的HTML标签,增加了SEO价值。Google识别了评论、人物、产品、企业、组织、食谱、事件和音乐的标签。许多第三方组件可能会通过利用这个新功能受益。不要期望在第三方组件中立即看到它,但希望我们会在那些其数据会从中受益的扩展中看到微数据的使用。
基础功能
这两个功能更深入地嵌入到组件中,因此需要更多的工作来集成到缺少它们的功能组件中。每个都增加了实质性价值,代表了Joomla的首选方法。
MVC和覆盖
模型-视图-控制器实现不仅仅是覆盖,但其对网站集成人员最突出的价值是能够在不担心更改被扩展升级抹去的情况下改变任何给定视图的布局。
大多数组件声称具有MVC,但一些提供了较差或定制的模板覆盖实现。在某些情况下,文件view.html.php为字段或其他布局功能添加格式,这使得覆盖该数据的显示变得困难。一些组件具有大型布局文件,如果将它们分割成子模板,将更容易管理。相反,一些组件过度使用子模板,使得很难了解子模板之间的关系以及要覆盖哪个子模板。还有一些组件绕过Joomla方法,并实现自己的布局覆盖方法。
需要关注的内容:组件应在 views/
JForm
所有核心组件都使用 JForm 来声明组件的字段及其字段属性。这些属性包括类型、默认值、应用在数据输入上的过滤器等。最初,JForm 功能似乎只对开发者很重要,但我发现它为网站集成者提供了重要的价值。
通过一个简单的插件,可以覆盖定义字段的 XML 文件。这允许你更改字段属性:设置默认值,使字段必填或只读,隐藏字段,设置筛选数据输入的过滤器,使用不同的但相关的字段类型,在选择媒体文件时更改根目录等。通过覆盖 XML 文件,我们可以声明额外的字段,并将它们添加到数据库表和布局文件中——所有这些都安全于组件升级。但这种功能仅适用于使用 JForm 构建的组件,而所有核心组件都是如此。
需要关注的内容:在组件的目录中(网站和管理员两侧),寻找名为每个视图的 models/forms 目录和 .xml 文件。
期望
当我评估第三方组件时,我会寻找这些特性。我期望看到正确实现的 Joomla MVC,并且我想要的不仅仅是“基本”的 ACL。没有 JForms 或使用自定义类别表明,代码库可能过时,或者开发者的承诺不如我期望的那么高。另一方面,带有标签或版本控制等功能的组件发布表明开发者的承诺强烈,并且扩展的前景很有希望。
在最近的历史中,许多组件缓慢地采用新的 ACL,并且提供搜索插件的数量太少。没有竞争或用户的需求,许多第三方开发者可能会缓慢地引入现代功能,如标签、版本控制、自动更新或微数据。但我们发现的核心组件中的这些功能对网站集成者来说具有很大价值。我们选择和安装第三方扩展的人应该要求开发者提供这些功能。想要开发“更好的捕鼠器”的开发者可以将它们添加到他们的组件中。
核心组件新增的有价值特性设定了我们对 Joomla 可以做什么的期望。让我们不要降低这些期望。
在 Joomla 社区杂志上发表的一些文章代表了作者对特定主题的个人观点或经验,可能不与 Joomla 项目的官方立场一致
接受后,您将访问由https://magazine.joomla.net.cn/以外的第三方提供的服务
评论