这应该是插件还是组件解决方案? (的Joomla!)

时间:2014-04-08 22:34:42

标签: php plugins joomla components

基于下图,通过为Joomla(3.0)的核心注册组件创建插件或者创建自定义组件会更好吗?

我设想它仍然会将用户数据库表用于公共元素,但是根据用户类型(客户端/供应商)使用两个单独的关系表

Registration Map

提前谢谢。

2 个答案:

答案 0 :(得分:2)

我必须尊重其他答案,这个用例实际上是创建自定义用户插件的标志。

您甚至可以使用现有的#__user_profiles表来存储任何新数据,只需使用一个插件就可以将整个用例范围复制到注册,配置文件查看/编辑和后端用户管理。

  <?php
  defined('JPATH_BASE') or die;

  class plgUserCustomProfile extends JPlugin
  {

        function onContentPrepareData($context, $data) {
                //  This method loads all data for existing users
                //  By attaching variables to the $data object using the
                //  same naming convention as your form field definitions
                //  will facilitate automatic loading of values into forms
                return true;
        }

        function onContentPrepareForm($form, $data) {
            // This method allows you to attach custom forms to core user form
            // I usually have different forms for profile view, profile edit
            // registration and back-end administration depending on needs
        }

        function onUserAfterSave($data, $isNew, $result, $error) {
             // This method allows you to save edits to custom user fields
             return true;
        }

        function onUserAfterDelete($user, $success, $msg) {
             //  Here you get to delete all custom profile data when
             //  a user is deleted.
            return true;
        }


 }

以下链接是一个更详细的解释,但一旦建成;它提供的控制和灵活性将使管理用户配置文件数据变得更加容易。

http://docs.joomla.org/Creating_a_profile_plugin

您是否熟悉使用Joomla方法创建XML表单定义文件?

您是否为自定义扩展程序实现了多语言支持或Latisha定义文件?

答案 1 :(得分:1)

根据以下定义,您的添加更好地描述为一个组件。

http://docs.joomla.org/Extension_types_(general_definitions)

组件

  

组件是它们中最大和最复杂的扩展;它们可以被视为迷你应用程序。大多数组件包含两部分:站点部分和管理员部分。每次加载Joomla页面时,都会调用一个组件来呈现主页面主体。例如,Content(com_content)是处理内容显示的组件;用户可以在您网站的前端查看,并且作为管理员,您可以编辑内容。组件是页面的主要部分,因为组件由菜单项驱动,每个菜单项都运行组件。

模块

  

模块是用于页面呈现的更轻量级和灵活的扩展。这些模块通常被称为围绕组件布置的“盒子”,例如:登录模块。页脚是一个模块。每个菜单项分配模块。因此,您可以决定显示或隐藏登录模块,具体取决于用户正在查看的菜单项。有时,模块链接到组件,例如“最新新闻”模块,该模块链接到com_content并显示指向最新内容项的链接。但是,模块不需要链接到组件,事实上它们甚至不需要链接到任何东西,只能是静态HTML或文本。

插件

  

插件是更高级的扩展,实质上是事件处理程序。在执行Joomla的任何部分时,无论是核心,模块还是组件,都可以触发事件。触发事件时,会向应用程序注册以处理该事件的插件执行。例如,插件可用于拦截用户提交的文章并过滤掉坏词。