Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Joomla插件通过渗透现有模块或组件添加新功能_Php_Joomla_Joomla2.5_Joomla3.0_Joomla Extensions - Fatal编程技术网

Php Joomla插件通过渗透现有模块或组件添加新功能

Php Joomla插件通过渗透现有模块或组件添加新功能,php,joomla,joomla2.5,joomla3.0,joomla-extensions,Php,Joomla,Joomla2.5,Joomla3.0,Joomla Extensions,有没有可能——正确的方法是什么——创建一个Joomla 3插件,向现有模块或组件发布新功能。我对一个流行的组件和模块做了一些小但有用的UI功能更改,我将与其他人共享。我觉得编辑源代码不是最好的方式,插件是最好的。谢谢 我很确定没有“正确的方法”可以做到这一点,因为Joomla的设计只允许您覆盖视图而不是模型 (如果您不知道如何执行此操作,请将组件视图的default.php文件复制到模板中的templates/yourtemplate/html/com_componentname/viewnam

有没有可能——正确的方法是什么——创建一个Joomla 3插件,向现有模块或组件发布新功能。我对一个流行的组件和模块做了一些小但有用的UI功能更改,我将与其他人共享。我觉得编辑源代码不是最好的方式,插件是最好的。谢谢

我很确定没有“正确的方法”可以做到这一点,因为Joomla的设计只允许您覆盖视图而不是模型

(如果您不知道如何执行此操作,请将组件视图的default.php文件复制到模板中的templates/yourtemplate/html/com_componentname/viewname/default.php。)

然而,有人写这篇文章是为了让你超越模型-。下载他们的代码并查看它可能会给你一个黑客的方式做这件事

然而,他们对
eval
的使用表明,它远远超出了Joomla框架

您可以将插件挂接到的事件列表如下:
-您可以在这些点中的任何一点搜索和替换变量和输出,尽管这并不是真正的“渗透现有模块或组件”,因为这将发生在正在加载的组件之外。

是的,其可能的Joomla插件就是为此而设计的

您可以使用事件向现有组件或模块添加更多功能

有许多扩展正在使用这个概念,比如扩展默认用户组件
com\u users
com\u virtuemart
等等

如果您使用的是UI功能,我认为将帮助您解决这些挑战

例如,我为
com\u virtuemart
创建了一个新功能,它使用系统插件事件


希望有意义。

不过,您能扩展组件模型吗?您的插件不是在扩展模型,而是在加载页面之前使用搜索和替换正则表达式。类似地,系统插件钩住事件而不是扩展模型(据我所见)。扩展一个组件(虽然可能是唯一的组件)感觉有点混乱。@RichardB它基于需求,意味着你需要扩展模型,你可以根据可用的钩子(如付款、发货等)来扩展。我的方法很简单,只需更改UI!不确定如何通过可用挂钩覆盖组件模型,所有这些挂钩似乎都发生在正在加载的组件之外。例如,假设我想覆盖ContentModelArticle中com_content的getItem函数,这样它就不用调用该函数,而是运行另一个函数。据我所知,您必须等待该组件渲染,然后处理输出。您有任何组件模型被扩展的例子吗?“我从来没见过它完成过!”理查兹甚至有些肮脏的把戏都在那儿,我给你弄明白了。我以为你的意思是有一个合适的Joomla方法来扩展组件的类。这个链接非常有趣。我怀疑这样做被认为是不好的做法,但是,是的,这样做会奏效。谢谢