阅读时间5分钟 (1031字)

以智能方式向com_content添加字段

Adding Fields to com_content The Smart Way

我最近在做一个项目,需要添加客户评价。我希望使用schema.org/Reviews格式输出它们。在寻找解决方案的过程中,我找到的所有解决方案都超出了我的需求。我的目标是使它对客户来说简单易用,但仍然能够输出正确的格式。对于我的客户来说,最简单的方法是在Joomla的Articles(com_content)扩展中添加字段。当然,我不想实际修改com_content代码或Joomla的#__content表。否则,这会导致未来的维护和升级头疼的问题。所以,插件拯救了!

Joomla插件架构非常灵活,可以让你在不更改核心代码的情况下做奇妙的事情。

插件目标

我为这个插件确定了以下目标

  1. 向现有的文章管理表单添加字段,以便客户可以输入评价的额外数据。
  2. 所有评价都将驻留在特定类别或其子类别中。
  3. 在页面上显示时,以schema.org/Review格式输出数据。

我可以通过插件实现前两个目标。第三个目标将使用布局覆盖来实现。

文件结构

该插件将具有以下文件结构。

ksextras
|-> ksextras.php
|-> ksextras.xml
|-> extras
	|-> ksextras.css
	|-> testimonial.xml
|-> language
	|-> en-GB
		|-> en-GB.plg_content_ksextras.ini
		|-> en-GB.plg_content_ksextras.sys.ini
|-> sql
	|-> install.mysql.utf8.sql
	|-> uninstall.mysql.utf8.sql
	|-> update
		|-> install.mysql.utf8.sql

您可以从我的GitHub账户下载文件,请访问

安装XML文件

虽然我们没有空间涵盖文件的每一部分,但我们将简要介绍一些重要部分。

插件组content告诉Joomla这是什么类型的插件,并确定我们可以使用哪些触发器。

由于我们将数据存储在单独的表中,我们将包含相关的SQL文件选项。我们还将包含用于未来使用的选项,以防我们决定卸载插件或更新它。该选项将运行SQL以删除表。该文件可以包含更新表架构的SQL。

我们将在块中设置一些参数,以便我们可以使用插件,这样我们就不必在代码中硬编码这些信息。这包括组织,这是拥有和审查该网站的公司。我们将包括schema.org/Review格式所需的字段。我们将能够设置在哪个类别中显示推荐字段,以及是否包含其子类别。

插件PHP文件

插件的主要文件是ksextras.php。

以下是几个需要突出的点。

__construct

在__construct方法中,我们只想为com_content组件使用此插件。因此,我们将获取选项参数,如果它不是com_content,我们将返回并不再处理此插件的其他部分。

onContentPrepareForm

此方法将准备要添加到文章管理器编辑屏幕中的表单字段。它将在单独的标签中添加额外字段。此标签的标签文本通过主语言.ini文件中的“PLG_CONTENT_KSEXTRAS_SLIDER_LABEL”字符串通过语言文件进行控制。

首先,我们将检查是否设置了类别ID。如果没有,我们将继续显示额外表单字段,因为用户可能希望为推荐类别设置它。如果类别ID设置为除插件参数中指定的类别之外的其他类别,则不会显示额外字段。

从那里,我们将从extras/testimonial.xml文件中获取表单字段。然后,如果有现有的文章ID,我们处于编辑模式,需要查询数据库以获取数据。

onContentPrepareData

此方法将检索和准备数据。

setKSFields

此方法设置用于数据的字段数组。我们使用这些字段在onContentPrepareForm中填充表单数据。如果您在表单XML文件(见下文)中修改了字段,则应将此字段添加到ksfields数组中。这是为了在onContentPrepareData方法末尾避免编写额外的代码,并允许我们循环遍历字段并自动设置值。

要了解更多关于不同事件的信息,您可以访问

表单XML文件

在extras文件夹中,我们有一个JForm XML文件,它定义了此插件使用的字段。这些是将在文章编辑表单标签中显示的字段。您可以添加或修改这些字段以更改您使用的字段。请确保更新setKSFields方法以与此XML文件中的字段相对应。

要了解更多关于不同字段类型的信息,您可以访问

语言文件

理想情况下,您将设置插件以允许使用不同的语言。您可以通过language/en-GB/en-GB.plg_content_ksextras.ini文件中找到的语言ini文件来实现。

用法:布局覆盖

为了在您的网站上使用输出中的字段,您需要创建一个布局覆盖。

访问文章属性/ KSExtras数据

要从文章覆盖中访问数据,您可以使用类似以下代码的内容

$ksattribs = json_decode($this->item->attribs);
$testimonial_by = $ksattribs->testimonial_by;
$author_job_title = $ksattribs->author_job_title;

如果您在模块覆盖中使用此代码,则您的代码将略有不同。您将引用“$this->item->”而不是“$item->”。

$ksattribs = json_decode($item->attribs);
$testimonial_by = $ksattribs->testimonial_by;
$author_job_title = $ksattribs->author_job_title;

访问插件参数

要获取插件参数,您可以使用类似以下内容

$plgParams = new JRegistry();
$plugin = JPluginHelper::getPlugin('content', 'ksextras');
if ($plugin && isset($plugin->params))
{
    $plgParams->loadString($plugin->params);
}
$this->organization = $plgParams->get('organization', 'org was not found');
$this->organization_type = $plgParams->get('organization_type', 'Organization');

要了解更多关于布局覆盖的信息,您可以访问

安装插件后,您需要首先通过扩展管理器 > > 插件设置插件的参数。

结论

我们已经覆盖了很多内容。我相信还有许多方法可以改进和扩展此插件。所以,尝试并享受乐趣吧!

发表在 Joomla 社区杂志上的某些文章代表了作者对特定主题的个人观点或经验,可能与 Joomla 项目官方立场不一致。

0
意大利和墨西哥有什么共同之处?
在 HTTPS 上的投资对于保护您的...
 

评论

已经注册? 在此登录
还没有评论。成为第一个发表评论的人

通过接受,您将访问 https://magazine.joomla.net.cn/ 外部第三方提供的服务