上一文章中提到了getBuffer函数,在函数中实际上调用了render ,这个对象是JDocumentRendererModule 类的实例,我们看看JDocumentRendererModule 的render函数。
if (!is_object($module))
{
$module =& JModuleHelper::getModule($module);
if (!is_object($module))
{
if (is_null($content)) {
return '';
} else {
/**
* If module isn't found in the database but data has been pushed in the buffer
* we want to render it
*/
$tmp = $module;
$module = new stdClass();
$module->params = null;
$module->module = $tmp;
$module->id = 0;
$module->user = 0;
}
}
}
// get the user and configuration object
$user =& JFactory::getUser();
$conf =& JFactory::getConfig();
// set the module content
if (!is_null($content)) {
$module->content = $content;
}
//get module parameters
$mod_params = new JParameter( $module->params );
$contents = '';
if ($mod_params->get('cache', 0) && $conf->getValue( 'config.caching' ))
{
$cache =& JFactory::getCache( $module->module );
$cache->setLifeTime( $mod_params->get( 'cache_time', $conf->getValue( 'config.cachetime' ) * 60 ) );
$cache->setCacheValidation(true);
$contents = $cache->get( array('JModuleHelper', 'renderModule'), array( $module, $params ), $module->id. $user->get('aid', 0) );
} else {
$contents = JModuleHelper::renderModule($module, $params);
}
这段代码完成了找到对应的module ,和helper文件,兑取参数,并最后由'JModuleHelper'执行,并渲染。
至此,我们也完全了解了模板是如何被调用,模块是如何并调用并渲染的。
if (!is_object($module))
{
$module =& JModuleHelper::getModule($module);
if (!is_object($module))
{
if (is_null($content)) {
return '';
} else {
/**
* If module isn't found in the database but data has been pushed in the buffer
* we want to render it
*/
$tmp = $module;
$module = new stdClass();
$module->params = null;
$module->module = $tmp;
$module->id = 0;
$module->user = 0;
}
}
}
// get the user and configuration object
$user =& JFactory::getUser();
$conf =& JFactory::getConfig();
// set the module content
if (!is_null($content)) {
$module->content = $content;
}
//get module parameters
$mod_params = new JParameter( $module->params );
$contents = '';
if ($mod_params->get('cache', 0) && $conf->getValue( 'config.caching' ))
{
$cache =& JFactory::getCache( $module->module );
$cache->setLifeTime( $mod_params->get( 'cache_time', $conf->getValue( 'config.cachetime' ) * 60 ) );
$cache->setCacheValidation(true);
$contents = $cache->get( array('JModuleHelper', 'renderModule'), array( $module, $params ), $module->id. $user->get('aid', 0) );
} else {
$contents = JModuleHelper::renderModule($module, $params);
}
这段代码完成了找到对应的module ,和helper文件,兑取参数,并最后由'JModuleHelper'执行,并渲染。
至此,我们也完全了解了模板是如何被调用,模块是如何并调用并渲染的。
发表评论
-
joomla 模块modules开发教程
2010-05-12 14:16 2808模块是页面扩展轻量级方式,相对组件更为灵活。模块通常用来做页面 ... -
joomla 1.5——JDocument类用法
2010-04-22 14:46 1400文档类,提供一个容易 ... -
[翻译] Joomla XML 解析器规范 上
2010-04-22 14:45 1082概述 Joomla! 1.5 新增 JSimpleXML 类 ... -
Joomla插件开发规范
2010-04-22 14:44 1414概述:JPlugin Joomla 1.5的新功能 为了更好 ... -
joomla源代码探析续(三十一) JHTML 类常用的方法
2010-04-22 14:37 1743我曾经在几篇文章中涉及到JHTML的方法使用,这里不再说了,请 ... -
joomla源代码探析续(三十) JDate类参考
2010-04-22 14:36 1086JDate类与JString类一样是Joomla!中的基础类, ... -
joomla源代码探析续(二十九) JHTML 与JHTMLSelect 类的使用
2010-04-22 14:33 1209我们在form表单生成的过程中,经常需要有select 标签或 ... -
joomla源代码探析续(二十八) 如何扩展JTable类
2010-04-22 14:30 1064JTable类是Active Record设计模式(web应用 ... -
joomla源代码探析续(二十七)组件后台如何设置参数
2010-04-22 14:29 930以下的方法可以在管理后台中添加一个Parameters设置的按 ... -
joomla源代码探析续(二十六)JUser对象和用户权限判断
2010-04-22 14:23 1867每一个访问Joomla网站的用户都对应这一个JUser对象,通 ... -
joomla源代码探析续(二十五)JRequest对象的变量获取过程
2010-04-22 14:22 1190Joomla 1.5 RC3版本的SEF存在不少问题,前段时间 ... -
joomla源代码探析续(二十四)JPagination类
2010-04-22 14:22 1128JPagination类是Joomla的通用分页功能的封装类, ... -
模块是如何被调用执行并渲染?
2010-04-22 14:12 857以前的文章中,关于/index.php我们已经分析完了 $ma ... -
Joomla源代码解析(二十) MVC组件的执行
2010-04-22 14:10 932以前的文章中,我们曾经说过 $mainframework-&g ... -
Joomla源代码解析(十九) JController
2010-04-22 14:05 896同样 JController 是MVC中重要的起点,正式这个类 ... -
Joomla源代码解析(十八) Jview
2010-04-22 14:03 977MVC模式中,重要的一环,JView 和 tmpl目录中的模板 ... -
Joomla源代码解析(十六) JTable是什么 不指定
2010-04-22 14:01 1463JTable是什么? JTable是数据库中数据表在程序中的表 ... -
Joomla源代码解析(十五) 组件是如何被调用并渲染的
2010-04-22 14:00 1446Joomla代码中, 组件是如 ... -
Joomla源代码解析(十四) JRequest类 不指定
2010-04-22 13:58 867这是另一个Joomla扩展中最常用的类,这个类封装了客户端提交 ... -
Joomla源代码解析(十三) JText类
2010-04-22 11:25 1226Joomla 最常用的类之一,使用方式JTEXT::_('JJ ...
相关推荐
joomla源代码探析,比较详细阐述了joomla框架
**Joomla 2.5.16 源代码详解** Joomla,作为一个开源的内容管理系统(CMS),在网站开发领域有着广泛的应用。Joomla 2.5.16 是该系统的一个版本,提供了丰富的功能和易用性,适用于构建各种类型的网站,包括企业...
本篇将深入探讨Joomla组件开发的详细过程,并结合源代码进行解析。 一、Joomla组件概述 在Joomla中,组件是最大的功能单元,它由多个部分组成,包括模型、视图、控制器、模板和语言文件等。组件开发涉及以下几个...
在这个情况下,它可能会解释如何将模块安装到Joomla网站上,如何配置以显示用户列表,以及如何进行任何必要的设置调整。确保按照readme.txt中的步骤操作,以避免可能出现的问题。 "upgrade_v1.6.zip"文件可能是一个...
然而,需要注意的是,Adobe Flash已经逐渐被淘汰,许多现代浏览器默认不再支持Flash内容,因此这个模块可能不适用于最新的浏览器环境。如果你的网站目标用户群主要使用的是较新的设备和浏览器,可能需要寻找一个基于...
- `components`: 这个目录通常用于存放Joomla组件,不过在这里可能是模块的一部分,用于处理更复杂的视频功能。 - `plugins`: 可能包含与视频播放相关的插件,如视频格式转换、播放器功能增强等。 - `install....
4. **加载并执行index.php**:PHP开始加载模板的主文件`index.php`,并执行其中的PHP代码。这个阶段中,所有在`和`?>`之间的代码都会被执行,而其余部分作为HTML直接输出。但此时的输出被缓存,并未传递到浏览器。 ...
Joomla图片循环播放模块是基于Joomla CMS(内容管理系统)的一种功能组件,它允许网站管理员在网站上创建一个动态的图片展示区,这些图片能够自动循环播放,为访客提供吸引眼球的视觉体验。这样的模块通常包含一系列...
Joomla模块开发是扩展Joomla网站功能的关键途径,使其能够支持多语言,为全球用户提供更加友好和便捷的体验。在本教程中,我们将探讨如何创建和管理Joomla模块的语言文件,以便实现多语言功能。 首先,为了使模块...
- **模块(Module)**:Joomla中的模块主要用于整合数据,并将其以可视化的形式展示出来。例如,一个新闻摘要模块可以展示最新的新闻条目。 - **位置(Position)**:是指模板中用于放置模块的具体位置。这些位置由模板...
1. **uninstall.morfeoshow.php**:这是模块的卸载脚本,当用户不再需要该模块时,可以通过执行此脚本来从Joomla系统中移除模块及其关联数据。 2. **install.morfeoshow.php**:这是模块的安装脚本,它包含了安装...
总的来说,"Joomla PNG补丁模块"是一个解决PNG图像透明度问题的重要工具,它提升了Joomla网站在各种浏览器下的用户体验。对于那些依赖PNG图像透明效果的Joomla网站管理员来说,这个模块是一个不可或缺的资源,它确保...
"新闻联播模块"在Joomla中是一个特别设计的组件,它允许用户在网站上创建动态且吸引人的新闻展示,通常以幻灯片的形式呈现,以吸引访问者的注意力并提供最新的信息。 **Joomla模块详解** Joomla模块是系统中的小...
**Joomla 留言板模块详解** Joomla 是一款基于PHP的开源内容管理系统(CMS),广泛用于构建网站和在线应用程序。它拥有丰富的扩展库,包括各种模块和组件,以增强其功能。"joomla留言板模块"就是这样一个扩展,专为...
6. **mod_itpshare.php**:这是模块的主要PHP代码文件,实现了模块的核心功能。它处理用户的交互请求,例如当用户点击分享按钮时,调用相应的API将内容发布到选定的社交网络。 7. **mod_itpshare.xml**:XML配置...
Joomla 是一个流行的开源内容管理系统(CMS),用于构建和管理网站。Category 模块是 Joomla 系统中的一个重要组成部分,它允许用户在网站上展示和组织内容的分类。在这个特定的"joomla category模块"中,我们可以...
Joomla的架构是模块化的,主要由组件(Components)、模块(Modules)和插件(Plugins)构成: 1. **组件(Components)**:是Joomla中最大的功能单元,例如文章管理、用户管理等。每个组件都有自己的模型、视图和...
要使用 mod_banner 模块,首先需要将其解压并上传到 Joomla 网站的 "modules" 目录下。然后,在 Joomla 后台管理界面中找到“模块管理”,点击“安装新模块”导入 "mod_banner.xml" 文件。安装成功后,你可以对模块...
Joomla幻灯片模块是用于Joomla内容管理系统(CMS)的一种功能组件,它允许网站管理员在网站的首页或任何其他页面上创建引人注目的动态幻灯片展示。这种模块通常用于显示产品、新闻、活动或者任何需要突出展示的内容...