阅读时间6分钟 (1113个单词)

向com_content添加字段,正确的方法

Ajouter un champ au com_content, la méthode propre

我最近在一个项目上工作,我需要添加一个用户评价的功能。我想使用schema.org/Review的格式来显示它们。在搜索解决方案时,我发现的一切对我来说都太复杂了。我的目标是为客户提供简单易用的功能,同时也支持正确的格式。对我客户来说最简单的方法是向Joomla的“文章”(com_content)添加一个字段。当然,我不想修改Joomla的com_content代码或#_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账户下载这些文件,地址为

https://github.com/katalystsol/plg_content_ksextras

安装文件XML

https://github.com/katalystsol/plg_content_ksextras/blob/master/plugins/content/ksextras/ksextras.xml

尽管我们没有时间覆盖文件的所有部分,但我们将关注其中一些最重要的部分。

插件内容组指示Joomla!此插件属于哪种类型,并确定我们可以使用哪些触发器。

由于我们将数据存储在单独的数据库中,我们将包含与SQL文件相关的选项。我们还包含未来使用的选项,以防我们决定卸载插件或更新它。此选项将启动SQL以删除表。文件可能包含用于更新表模式的SQL。

我们将在一个我们可以与插件一起使用的块中设置一些参数,这样我们就不必在代码本身中硬编码这些信息。这包括组织,这是拥有网站的企业。我们将包含由schema.org/Review格式要求的一些字段。我们可以设置见证字段显示的类别,并可能包括其子类别。

插件PHP文件

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

需要注意的几点

_construct

在_construct方法中,我们只想使用此插件来处理com_content组件。因此,我们将有一个参数选项,如果它不是com_content,我们将回头并不对插件的其他部分进行处理。

onContentPrepareForm

此方法将为添加编辑屏幕到文章管理器准备字段表单。它将在单独的选项卡中添加附加字段。此选项卡的标签文本通过使用文件主语言文件中的“PLG_CONTENT_KSEXTRAS_SLIDER_LABEL”字符串进行控制,该字符串位于主语言文件.ini中。

首先,我们将检查是否设置了类别ID。如果没有设置,我们将前进并显示额外的字段表单,因为用户可能希望将其设置为见证类别。如果类别设置为与插件参数中指定的类别不同的类别,则不会显示额外的字段。

从这里开始,我们获取来自extras/testimonial.xml的字段表单。然后,如果存在文章的现有ID,我们处于编辑模式,必须查询数据库以获取数据。

onContentPrepareData

此方法允许获取和准备数据。

setKSFields

此方法设置一个字段表,以便可以在数据中使用它们。我们使用这些字段在onContentPrepareForm中的数据表单中显示。如果您在Form XML文件(见下文)中修改这些字段,您必须在ksfields表中添加这些字段。这就是我们为什么不需要在onContentPrepareData方法的末尾添加代码,这使我们能够通过字段创建循环并自动设置值。

有关更多信息,您可以查看:

http://docs.joomla.org/Plugin/Events/Content

表单XML文件

在附加文件中,我们有一个Jform XML文件,它定义了用于此插件的字段。这些是将在文章编辑选项卡中显示的字段。您可以为添加或修改您使用的字段。请确保setKSFields方法与XML文件中的字段匹配。

有关不同字段类型的更多信息,您可以查看:

http://docs.joomla.org/Form_field

语言文件

理想情况下,您将配置插件以接受不同的语言。您可以通过放置在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');

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

http://docs.joomla.org/Layout_Overrides_in_Joomla

一旦您安装了插件,您首先需要转到“扩展”>“插件管理”来设置此插件的参数。

结论

尽管我们已经涵盖了多个方面,但我相信还有许多方法可以改进此插件。
因此,尝试并享受其中吧!

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

0
Joomla! for my business (part 2)
CMS-Garden en plein essor !
 

评论

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

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