Joomla文档中文翻译 - 如何创建并使用插件对文章内容进行修改 II

Joomla文档中文翻译如需转载,请注明官方英文文档及本人译文的出处,谢谢。查看官方英文文档: Make changes to an article automatically using a plugin

添加标准化文字

我们已经创建了第一个插件,基于这个插件进行修改进而创建其他插件就很容易了。例如,对于每一篇由属于“作者”组的用户提交的文章,我们都希望添加一段标准化的文字下面就是新插件的PHP文件中"onBeforeContentSave()"方法的代码:

function onBeforeContentSave( &$article, $isNew )
{
global $mainframe;
$newText = '<p>This is my new text to add to the article.</p>';
$user =& JFactory::getUser(); // get the user
if ($user->usertype == 'Author') {
if ($article->fulltext) {
if (strpos($article->fulltext, $newText) == 0) {
$article->fulltext .= $newText;
}
}
else {
if (strpos($article->introtext, $newText) == 0) {
$article->introtext .= $newText;
}
}
}
return true;
}

上面的代码中,我们向变量$newText中添加了一些标准化文字。然后我们对文章对象进行了一些判断处理:如果文章中没有“Read more...”分割,则将文章处理为正文+标准化文字;如果有“Read more...”分割,则将“Read more...”之前的引文处理为引文+标准化文字。

另外一点需要判断的是,原文章内是否包括我们要添加的标准化文字。如果文章已经被添加过这段文字,则不会在编辑并保存时继续添加。

该方法的另一个参数$isNew用来判断该文章是否为新提交的;我们可以通过这个判断参数来决定是否只为新提交的文章进行添加文字的处理。

设置section或category

为文章设置section或category的ID是很容易的。例如,对于安装了Joomla范例内容的Joomla站点,这段代码:

$article->sectionid = '4';
$article->catid = '25';

会将文章的section设置为"About Joomla!",将category设置为"The Project"。注意,我们需要设置的是“id”字段。另外,如果想移除文章的section或category,也可以通过模板覆盖的方式在模板代码 中直接去掉相关的代码。(关于模板覆盖,可以参见“Joomla文档中文翻译 - 如何通过模板覆盖的方式修改Joomla的系统输出”)

其他

我们还可以通过创建插件对文章进行其他方面的修改;下面列出了一些文章对象的字段:

  • title:文章标题。
  • alias:文章别名。
  • state:发布状态;0代表未发布,1代表已发布,-1代表已存档。
  • created:文章创建日期。
  • created_by:用户id或作者名。
  • created_by_alias:作者别名。
  • modified:文章最后一次修改的日期。
  • modified_by:最后一次修改文章的用户id或作者名。
  • metakey:文章的元数据信息/关键词。
  • metadesc:文章的元数据信息/描述。
  • access:文章的浏览权限;0代表公开,1代表只对注册用户公开,2代表只对特殊(special)用户公开。

我们也可以用plugins/content/example.php文件中提供的其他原生内建事件来创建插件。关于其他一些类型的插件(非content类型),可以参考plugins section of the Wiki 获取更多信息。

译者:viiiix.com


收藏与分享

添加评论


Security code
换一张图