探索核心!通过自定义字段丰富您的内容或设计
在我们的“探索核心”系列中,经验丰富的Joomla用户帮助您了解Joomla强大核心功能。在本期中,Marc Dechèvre向我们展示了您可以使用Joomla内置的自定义字段做什么(剧透:很多)。深入探索吧!
自定义字段于2017年随Joomla 3.7版发布。这是来自瑞士的知名Joomler Allon Moritz的倡议。
像许多Joomler一样,我非常感谢他,因为自定义字段绝对是一个变革者!无论您是基本用户、高级用户还是开发者。
从那时起,我所构建的几乎所有网站都(广泛)使用了自定义字段。
这确实使Joomla非常强大,因为您可以用简单的方式构建具有自定义布局的复杂网站,同时坚持核心...这对于获得轻便且易于维护的网站来说非常有意思。
尽管大多数用户都知道它的存在,但并不是每个人都已经花时间去玩它并意识到它的实用性。
因此,这就是为什么我们想将Joomla社区杂志的“探索核心”中的一集专门献给自定义字段。
本文不是关于自定义字段的逐步教程(其他文章涵盖了这些方面,请参见下面的链接),而是概述了可以完成的事情。
有哪些类型的自定义字段?
Joomla自带16种不同类型的自定义字段,分别是
- 日历字段
- 复选框字段
- 颜色字段
- 编辑器字段
- 整数字段
- 列表字段
- 图像列表字段
- 媒体字段
- 单选按钮字段
- 可重复字段
- SQL字段
- 文本字段
- 文本区域字段
- URL字段
- 用户字段
- 用户组字段
类型的名称本身就说明了其含义,但有两种类型值得特别关注。
- 当然,SQL字段允许直接从数据库中创建任何东西。所以,你的想象力是唯一的限制...
- 可重复字段是在后期引入的。从本质上讲,它非常强大,因为它允许创建可以重复的“字段块”,甚至不必事先知道重复的次数。例如:对于一个收集食谱的网站,每种食谱的配料数量各不相同,如果一种食谱的最大配料数为X,你绝对不希望创建X(或2X)个自定义字段。在这种情况下,你只需创建一个包含两个“子字段”的“配料可重复自定义字段”:配料名称和配料数量。然后设置非常快,无论每种食谱的配料数量是多少,你都会得到保障!
注意:在Joomla 4中,可重复字段将被子表单字段取代。这是一个非常好的消息,因为它将使“可重复”字段的概念更加通用/通用。
- 在Joomla 3中,可重复字段仅允许从以下类型中选择:编辑器、媒体、数字、文本、文本区域。
- 而Joomla 4中的新子表单字段将允许从任何已安装的字段类型中选择(无论是原生还是非原生)。
我在Joomla的哪些部分可以使用自定义字段?
换句话说,哪些组件支持自定义字段?
自定义字段的常见用例是丰富内容(com_content),即文章或甚至类别。
另一个典型用例是联系组件(com_contact),既可以添加字段
- 到联系人本身,允许有一个本地的自定义人员目录
- 或者到联系表单,这意味着即使对于更高级的表单,你也可以坚持使用核心功能
用户组件(com_users)也集成了自定义字段。
换句话说,如果你想要了解更多关于用户的信息,你可以这样做,而无需任何第三方扩展。
最后但同样重要的是,自定义字段就像Joomla中的分类或标签:任何第三方组件都可以轻松集成它们,这意味着
- 开发者不必重新发明轮子:他们可以轻松使他们的扩展更加灵活/强大
- 并且用户可以轻松以标准化的方式自定义所有兼容扩展的内容
我可以使用自定义字段做什么?
自定义字段有两种主要用途。
为文章/联系人/用户提供额外内容
让我们以这个JoomlaDay网站为例。
每个会议都是一个有系列自定义字段的Joomla文章
- 演讲者
- 日期和时间
- 房间
- 提案
进一步自定义文章/联系人/用户的布局
以JoomlaDay网站为例,我想有一个时间表,其中每个会议都会自动显示
- 在右侧列(对应房间)
- 在右侧行(对应时段)
为了实现这一点,我仅在类别会议的文章中添加了两个类型为列表的自定义字段
- 房间,具有预定义的房间列表:主室、研讨会、...
- 时段,具有预定义的时段列表:时段-am-1、时段-am-2、...
使用显示类别会议所有文章的博客视图,我进行了覆盖,以便为每个文章添加对应房间和时段的类(例如:class="时段-am-2 研讨会")...然后借助CSS网格,每个文章会自动出现在时间表的正确“单元格”中。
另一个示例请参考此演示:http://www.greendog.fr/experimentations
特别是,第6个覆盖示例使用自定义字段“颜色”来为每个文章分配覆盖颜色。这个颜色不会在文章本身中显示,但在覆盖中检索每个颜色并将其作为每个文章的背景使用。
如何在内容中集成自定义字段?
覆盖总是必需的吗?
当然不是!
默认情况下,就文章而言,这是最常见的情况,自定义字段可以单独设置以显示
- 在标题之后
- 在显示之前(意味着在文章内容之前,要知道根据您的Joomla设置,标题和显示之间可以出现其他内容,如标签/作者/日期/...)
- 在显示之后
- 不自动显示
这适用于三种不同的情况
- 自定义字段仅应在管理界面中可见
- 自定义字段将通过编辑器中出现的字段按钮手动插入到文章的“中间”
- 自定义字段将在自定义布局中自动显示,这可以称为
- 覆盖(当它适用于所有文章时)
- 备用布局(当它仅适用于某些文章或类别时)。备用布局可以通过文章本身的选项或通过菜单项来选择
使用覆盖,天高任鸟飞
规则#1:即使你从未制作过覆盖,即使你从未见过一行代码(PHP),也不要害怕。
试一试。
Joomla的一大优势正是代码通过设计分离
- “引擎”
- 和“视图”
好奇如何将自定义字段集成到覆盖中?
在这篇去年发布的详细文章中,步骤被一步一步地解释
https://magazine.joomla.net.cn/all-issues/april-2020/custom-fields-episode-4-a-step-by-step-tutorial
如果我需要另一种非本地的“类型”的自定义字段怎么办?
通过调整现有的自定义字段
这可以通过创建备用布局并将其分配给特定的自定义字段来实现。
自Joomla 3.7起
从一开始,就可以为自定义字段创建备用布局。然而,最初只有在手动将字段插入到文章中时才能使用备用布局。
示例:在文章中插入{field 1,my-own-layout}将使用名为my-own-layout.php的备用布局显示具有ID 3的自定义字段。
自Joomla 3.9起
Joomla 3.9引入了一个新的选项,允许直接将备用布局分配给自定义字段,使其自动使用。
让我快速展示这是如何工作的,因为这不是非常知名/有很多文档,所以很多人可能错过了这个有用的功能。
为自定义字段创建备用布局
创建以下文件
/templates/[my_template]/html/layouts/com_fields/field/my-own-layout.php
(注意:文件名中不允许使用下划线)
在这里粘贴以下文件的内容
/components/com_fields/layouts/field/render.php
实际上,这是渲染自定义字段的默认布局
根据您的需求自定义my-own-layout.php。
让我们用一个简单的例子来说明,假设您希望备用布局为类型“URL”的自定义字段提供显示文本“下载报告”的按钮外观。
正如您可能知道的,“btn btn-primary”是Bootstrap中用来提供网站主色按钮样式的两个类(好老的Protostar基于Bootstrap 2,大多数当前模板基于Bootstrap 3或4。当然,如果您模板使用其他CSS框架或您想使用自己的类,您可以调整这些类)。
在my-own-layout.php中,以下代码echo/displays/renders自定义字段
<?php echo $value; ?>
实际上,它并不简单地显示原始值(即数据库中写入的值,即URL),而是将其“渲染”(即将其转换为超链接)。
这是因为 $value 在文件中定义得较早:
$value = $field->value;
所以如果我将
- $value = $field->value; 改为 $value = $field->rawvalue;
- <?php echo $value; ?> 改为 <span class="btn btn-primary"><a href="/<?php echo $value; ?>">下载报告</a></span>
那么简单的URL就变成了一个看起来很不错的按钮,带有所需文本。
当然,一旦你明白了这个道理,你就会意识到现在你可以将现有的自定义字段转换为任何东西。
例如,如果自定义字段的类型为“URL”,用于放置在线视频链接,你可以轻松地将该URL替换为视频播放器。
正如你所看到的,自定义字段的替代布局是一种简单的方法来创建你自己的自定义字段“类型”,甚至不需要为此创建一个新的插件。
将布局设置为默认值
编辑你的自定义字段。在选项卡“选项”>“渲染选项”>“布局”下可以找到布局选项。
你可以在列表中选择你创建的任何替代布局,而不是选择“使用默认”。
通过创建我的插件
当然,如果你想为你自己的自定义字段类型设置自己的参数,那么你应该走传统的道路。
每个自定义字段类型实际上不过是一个简单的插件。
因此,如果你创建了你的插件,那么你就拥有所有的自由。
这当然更多是开发者的工作,但即使作为新手,你也可以做到:插件实际上只包含几个简短的文件。
所以你可以简单地复制一个类似的自定义字段类型并根据自己的需求进行定制。
通过安装现有的自定义字段类型
有如此多的自定义字段,你几乎永远不需要创建自己的。
当然,首先应该查看的是 Joomla 扩展目录(JED),其中已经创建了一个专门的类别:https://extensions.joomla.net.cn/category/authoring-a-content/custom-fields/
尽管许多自定义字段没有在 JED 上发布:例如,它们只在 Github 上发布,因为它们只是由几个文件组成的小插件。
在最常见的额外自定义字段类型中,我们可以想到
- 图片库
- 链接到其他文章
- 视频(YouTube / Vimeo / ...)
- 地图(Google Maps / OpenStreetMap / ...)
- ...
阅读更多
有关自定义字段有许多资源,从官方文档开始
https://docs.joomla.org/J3.x:Adding_custom_fields
在本期杂志中,已经有几篇文章专门讨论了自定义字段
- https://magazine.joomla.net.cn/all-issues/march-2018/how-far-can-we-go-with-joomla-and-custom-fields
- https://magazine.joomla.net.cn/all-issues/may-2018/custom-fields-episode-2-how-to-manage-your-custom-fields
- https://magazine.joomla.net.cn/all-issues/october-2018/custom-fields-episode-3-all-the-parameters-one-can-wish-for
- https://magazine.joomla.net.cn/all-issues/april-2020/custom-fields-episode-4-a-step-by-step-tutorial
好消息是:在不久的将来,我计划发布更多关于自定义字段的文章。
特别是资源列表,即
- 所有自定义字段类型或扩展利用自定义字段(如过滤器)的列表
- 以及所有与自定义字段相关的演示(幻灯片,视频)的列表
社区杂志上发表的一些文章代表了作者对特定主题的个人观点或经验,可能并不与 Joomla 项目的官方立场一致
通过接受,您将访问 https://magazine.joomla.net.cn/ 之外的第三方外部服务。
评论 5
自定义字段是Joomla!的一个非常好的功能。我们在这方面进行了很多实验,并据此开发了一个仅基于自定义字段(无附加扩展)的房地产网站。有关该网站如何工作的更多详细信息,请点击这里。我们计划未来开发针对不同用例的网站。谢谢!
使用自定义字段的优秀教程
下次版次中见,期待后续内容
我非常期待,所以我想谈谈你如何管理排序和筛选(Cf文章中通常避免讨论的话题)
也许以后吧?
当我谈到筛选时,我指的是从菜单链接和分类视图等位置对CF进行排序和筛选。
感谢你的文章
嗨 @semaphore,
在我的下一篇关于CF的文章中,我将介绍一系列扩展,允许对自定义字段进行筛选。
如果您迫不及待,可以看看EasyLayouts.net等网站。