Php Joomla com_用户扩展类似于com_类别和com_内容
好的,这是我觉得我应该问的问题,因为我在任何类型的文档中都找不到任何关于这一点的参考,而阅读实际的代码以找出实现这一点的最佳方法将花费比希望花费更长的时间 当您输入文章管理器时,您会有一个指向类别管理器的导航链接,反之亦然。我想对我的组件和默认的用户管理器做一些类似的事情 我已经有一个配置文件插件来扩展用户以满足我的需要,但我希望它的配置无缝,因此调整com_用户组件以更好地与我的组件集成是我所寻找的 所以我的问题是,对于com_内容和com_类别,它们使用了“extension”参数。在不完全覆盖com_用户的情况下,是否可以添加类似的功能?如果我进行完全覆盖,由于依赖用户,一些扩展可能无法工作 我愿意澄清,如果有什么不合理的地方,这个问题更多的是看你能在多大程度上“扩展”Joomla而不被推翻 更新: 我发现了一个很酷的技巧,但不是很好的答案。 您可以只覆盖组件中的列表控制器/模型/视图,如果基于当前com_用户组件,则可以使其看起来像是直接集成。 您需要做的唯一编辑是确保到用户视图的任何路由都传递到组件 但是,这有一个问题,当您添加或编辑一个新用户时,一旦完成,它将引导您到主用户管理器。系统插件可能对此有所帮助,但前提是有可靠的方法检测用户何时通过组件而不是用户管理器进行编辑 注意:向用户视图添加覆盖的问题是,它依赖5-6个其他MVC组件,因此为了便于使用核心com_用户更新进行更新,最好尽可能避免这种情况 需要做的另一件事是确保找到com_用户的语言文件,并将所有条目添加到组件中 我觉得可能还有更好的答案,但这样做不会对核心产生太大影响,而且很容易通过com_用户的更新进行更新 我对这件事表示感谢,我觉得我问过的每一个问题都是对社区最有利的。这是问题的浓缩版本Php Joomla com_用户扩展类似于com_类别和com_内容,php,joomla,joomla3.1,Php,Joomla,Joomla3.1,好的,这是我觉得我应该问的问题,因为我在任何类型的文档中都找不到任何关于这一点的参考,而阅读实际的代码以找出实现这一点的最佳方法将花费比希望花费更长的时间 当您输入文章管理器时,您会有一个指向类别管理器的导航链接,反之亦然。我想对我的组件和默认的用户管理器做一些类似的事情 我已经有一个配置文件插件来扩展用户以满足我的需要,但我希望它的配置无缝,因此调整com_用户组件以更好地与我的组件集成是我所寻找的 所以我的问题是,对于com_内容和com_类别,它们使用了“extension”参数。在不完全
将核心组件集成到自定义组件中,并以最少的核心组件编辑使其无缝通过该组件的简单方法是什么。我不太清楚您想要什么,但如果您在
com\u content
中谈论工具栏子菜单,则如下所示:
您给出的类别示例(即com\u Categories
)是添加的特定支持,您可以使用扩展标识符(扩展名=com\u mycomponent)传入指向com\u Categories
的链接,它将加载扩展名的侧栏菜单。这使得核心类别可以在各个组件之间共享
您可能已经知道以下内容,但是,如果您想知道如何向components manager视图添加侧栏菜单,可以调用JHtmlSidebar::addEntry($title,$link,$active)代码>
通常,这会放在扩展主帮助文件中一个名为addSubmenu($vName)
的函数中(这是com\u categories
显示工具栏子菜单所需的内容和位置)。它被称为addSubmenu()
,因为sidebar
是Joomla早期版本中工具栏子菜单的变形
e、 g.这是administrator/com\u content/helpers/content.php中定义的ContentHelper
类中的addSubmenu()
方法
/**
* Configure the Linkbar.
*
* @param string $vName The name of the active view.
*
* @return void
* @since 1.6
*/
public static function addSubmenu($vName)
{
JHtmlSidebar::addEntry(
JText::_('JGLOBAL_ARTICLES'),
'index.php?option=com_content&view=articles',
$vName == 'articles'
);
JHtmlSidebar::addEntry(
JText::_('COM_CONTENT_SUBMENU_CATEGORIES'),
'index.php?option=com_categories&extension=com_content',
$vName == 'categories');
JHtmlSidebar::addEntry(
JText::_('COM_CONTENT_SUBMENU_FEATURED'),
'index.php?option=com_content&view=featured',
$vName == 'featured'
);
}
相比之下,com\u categories
helper类CategoriesHelper
有一个非常不同的addSubmenu()
方法,用于查找调用扩展核心helper类(如果找不到,则默认为com\u content
)
com\u用户
中没有类似的支持,因此您可能必须创建一个系统插件,根据组件是否提供了合适的参数(如extension=com\u myextension
)在AfterRoute上触发,并添加子菜单项。这可能会有点急促,但它应该可以工作-唯一的一件事是,在分派组件之前,您将添加一个子菜单项。您的新子菜单项希望始终是com\u用户
子菜单中的第一项。它不像com\u类别
支持那样是一个完全的替代品
不幸的是,com_用户
中没有任何触发器可以帮助我快速浏览整个侧边栏菜单
下一个选项是使用类似于创建自己的替代版本的方法-显然,这会对任何重要更新产生问题,但是如果您小心,您可以将覆盖限制到您的特定情况
如果这还不够/过分,您可能想尝试一个系统插件,该插件在发送后响应
,此时您可以在页面返回到浏览器之前获得该页面,您可以破解HTML,但这非常难看,如果用户更改其管理模板,则很容易损坏
当然,我可能完全错了,在3.x中有更好的方法。也许其他人会插话。是的,这个问题的原因是我的组件直接与用户集成,所以能够在组件和用户之间跳转是关键。这可能对我的情况没有帮助,但它非常清楚地解释了扩展的功能,所以竖起大拇指!A.