`
we1818
  • 浏览: 62134 次
  • 性别: Icon_minigender_1
  • 来自: 湖州
社区版块
存档分类
最新评论

Joomla源代码解析(十五) 组件是如何被调用并渲染的

    博客分类:
  • php
阅读更多
Joomla代码中, 组件是如何被调用并渲染的呢?

在描述 /index.php的时候,我们看到根据option参数,$mainframework->dispatch(),就进入了组件的调用并渲染的过程,我们来看看JSite 的dispatch都做了什么工作。

dispatch 最关键的是这几句话:

  $document->setTitle( $params->get('page_title') );   //设置标题
  $document->setDescription( $params->get('page_description') );  //设置meta

  $contents = JComponentHelper::renderComponent($component);
  $document->setBuffer( $contents, 'component');

可以看到最为关键的是 JComponentHelper::renderComponent($component);

再看看这一行程序完成了那些工作

  $task = JRequest::getString( 'task' );

  // Build the component path
  $name = preg_replace('/[^A-Z0-9_\.-]/i', '', $name);
  $file = substr( $name, 4 );

  // Define component path
  define( 'JPATH_COMPONENT',     JPATH_BASE.DS.'components'.DS.$name);
  define( 'JPATH_COMPONENT_SITE',    JPATH_SITE.DS.'components'.DS.$name);
  define( 'JPATH_COMPONENT_ADMINISTRATOR', JPATH_ADMINISTRATOR.DS.'components'.DS.$name);

  // get component path
  if ( $mainframe->isAdmin() && file_exists(JPATH_COMPONENT.DS.'admin.'.$file.'.php') ) {
   $path = JPATH_COMPONENT.DS.'admin.'.$file.'.php';
  } else {
   $path = JPATH_COMPONENT.DS.$file.'.php';
  }

这部分实际上确定了那个compoent下的组件文件被引入,并取得了task,中间一部分兼容代码就不看了

我们来看关键代码:

  ob_start();
  require_once $path;
  $contents = ob_get_contents();
  ob_end_clean();

这部分代码就是包含了组件的开始文件,而这个文件,我们在组件开发的时候用到的。这个文件引入了controller 文件,并根据task决定进入那个分支。

再深入下去就是组件的整个生成过程,以后再看了。
分享到:
评论

相关推荐

    joomla 组件 开发 详解 (附带源代码)

    本篇将深入探讨Joomla组件开发的详细过程,并结合源代码进行解析。 一、Joomla组件概述 在Joomla中,组件是最大的功能单元,它由多个部分组成,包括模型、视图、控制器、模板和语言文件等。组件开发涉及以下几个...

    joomla源代码探析

    joomla源代码探析,比较详细阐述了joomla框架

    Joomla2.5.16源代码

    **Joomla 2.5.16 源代码详解** Joomla,作为一个开源的内容管理系统(CMS),在网站开发领域有着广泛的应用。Joomla 2.5.16 是该系统的一个版本,提供了丰富的功能和易用性,适用于构建各种类型的网站,包括企业...

    joomla 非常好用的聊天室组件

    这个组件被描述为“非常好用”,表明它提供了用户友好的界面和高效的功能,是网站交互和社区建设的良好工具。 聊天室组件对于任何网站来说都是一个宝贵的资源,特别是那些需要实时交流和互动的社区网站。它允许用户...

    joomla 组件

    同时,开发者也可以根据需要扩展或修改组件的源代码,实现更高级的定制化需求。 总的来说,Joomla社区管理组件提供了一套全面的工具,帮助网站管理员建立活跃的在线社区。从用户注册、互动到内容管理,组件都提供了...

    joomla中tab组件

    8. **安全与优化**:确保所有安装的组件都来自可信赖的源,并保持Joomla核心及所有扩展的最新状态,以防止安全漏洞。 通过熟练掌握Joomla中的Tab组件,你可以创建出更具有交互性和用户体验的网站。这种组件化的内容...

    joomla1.6文件上传下载组件

    **Joomla 1.6 文件上传下载组件** Joomla 1.6 文件上传下载组件是一款专为Joomla 1.6版本设计的扩展程序,它允许网站管理员在网站上创建一个安全、用户友好的文件上传和下载平台。该组件不仅提高了用户交互性,还为...

    joomla组件翻译篇

    ### Joomla组件翻译篇知识点解析 #### 一、MVC组件开发概述 - **MVC(Model-View-Controller)架构**:这是一种常见的软件设计模式,主要用于简化开发过程并提高代码可维护性。在Joomla中,它被广泛应用于组件开发...

    joomla 组件开发

    【标题】:“Joomla组件开发” 在Joomla这个流行的开源内容管理系统(CMS)中,组件是构建网站功能的核心模块。Joomla组件开发是一项技术性较强的任务,涉及到PHP编程、MVC设计模式、数据库交互以及前端技术等多个...

    JOOMLA 房地产组件

    【标题】"JOOMLA 房地产组件"是一款专为Joomla 2.5平台设计的扩展,旨在帮助用户在网站上构建功能丰富的房地产信息管理系统。这个组件将为用户提供一个全面的平台,用于展示房产信息,包括房源详情、地理位置、价格...

    joomla文章显示组件

    **Joomla文章显示组件** Joomla文章显示组件是一款专为Joomla内容管理系统设计的模块,旨在帮助用户更高效地管理和展示网站上的文章。这个组件具备69个可配置参数,这意味着用户可以根据自己的需求定制文章的展示...

    joomla k2文章管理组件

    Joomla K2文章管理组件是一款针对Joomla CMS的高级内容管理解决方案。K2不仅提供了基本的文章发布功能,还集成了许多增强的特性,使得内容管理更为灵活和强大。这款组件适用于构建复杂的内容结构,如博客、新闻网站...

    joomla组件开发模板helloWord

    "joomla组件开发模板helloWord"是一个专门为Joomla开发者设计的简易模板,旨在加速组件开发过程,让开发者能快速上手并构建自己的组件。 首先,我们来看`com_helloworld.xml`文件,这是Joomla组件的核心配置文件,...

    JCalPro-Joomla1.5下的日程管理组件

    **JCalPro** 是一款专为 **Joomla 1.5** 架构设计的日程管理组件,旨在帮助用户高效地管理和展示各种日历事件。标题中的 "JCalPro - Joomla1.5下的日程管理组件" 明确指出了这款组件的核心功能和其适用的 CMS(内容...

    Joomla!基本组件开发

    开发者应根据组件需求创建配置参数,这些参数将被存储在数据库中,并在运行时被组件引用。 ### 4. 添加类别 (Joomla-3.2-Hello-World-Component-step-12-adding-categories.zip) 类别是组织内容的有效方式,特别是...

    joomla 会员积分组件

    **Joomla 会员积分组件详解** Joomla 是一个流行的开源内容管理系统(CMS),它允许用户构建功能丰富的网站和在线应用程序。在Joomla中,会员积分系统是提升用户体验和互动性的重要工具,尤其对于论坛和商业网站而...

    Joomla媒体管理组件

    Joomla媒体管理组件扩展可以取代Joomla系统的媒体管理。上传文件和插入文件一步到位, 插入文件更加容易。 内置搜索功能,让你迅速定位你想要插入的资源, 改进系统不支持中文名称。 本扩展可以支持中文名称资源...

    joomla zoo组件demo版

    通过解析这个XML文件,Joomla的安装程序可以知道如何正确地处理组件的安装过程。 4. **packages**:这是一个目录,通常包含组件的子模块、插件或其他附加组件。在Zoo组件的案例中,这个目录可能包含了各种预设的...

Global site tag (gtag.js) - Google Analytics