1.joomla模块输出到任何位置
$module = JModuleHelper::getModule('custom',$title);//此针对 定制html module,其中$title是定制的HTML模块标题
echo JModuleHelper::renderModule($module);
//针对多个
$modules = JModuleHelper::getModules('right'); //参数是position
foreach($modules as $module)
{
echo JModuleHelper::renderModule($module);
}
//针对单个
// this is where you want to load your module position video is module positon
$module = JModuleHelper::getModule('mod_breadcrumbs');//参数是module名
echo JModuleHelper::renderModule($module);
总结,有时在component所在的view中输出所需的module,会带来更大灵活性。另外,灵活运用定制HTML模块
custom module: http://docs.joomla.org/Applying_custom_module_chrome
简要步聚:1.模板所在目录中的html目录中创建modules.php
2.定义function modChrome_STYLE($module, &$params, &$attribs)
3.模板中调用<jdoc:include type="modules" name="user1" style="STYLE" />这个中可带任意参数,在$attribs中可得到
2.得到网站根地址(URL)
JURI::base();
3.JUtility中封装了一些常用的方法,比如发邮件等。其中还有一些其它常用方法,可以参考源文件学习。
$sent = JUtility::sendMail(发送者邮箱, $contactname, 接收者邮箱, $subject, $body, true);
if (!$sent) {
$this->setError("Send email failed.");
}
4.防止刷新提交:
view: <?php echo JHTML::_( 'form.token' ); ?>
controller: JRequest::checkToken() or jexit( 'Invalid Token' );
5.joomla内置的表单验证功能
参考:http://www.cnblogs.com/catcat811/archive/2010/06/09/1755012.html
6.joomla组件开发中时区问题
joomla的所有组件的日期数据,都统一使用mysql的datetime,输出格式类型于2004-02-12T15:19:21
这种格式好处是在数据库中可以很直观地看到时间,但仅仅只是有这个好处,坏处却一大堆,例如不方便两个日期比较,不方便计算日期之间间隔了多久,总之一切日期运算都很不方便!joomla又是个多语言CMS系统,而datetime这种格式要表达时区概念,必须在mysql的datetime上加上offset,而mysql的datetime则始终是UTC。例如中国的时区是加8小时,那么从数据库中得到的datetime还需要加上8小时,时间才是最准确的。这种换算非常重要,而且也是很容易让人忽略的部分。
以下介绍如何准确地获取与写入时间:
// 获取从数据库中得到的时间并显示
echoJHTML::_('date',$row->datetime , JText::_('DATE_FORMAT_LC2'));
// 录入时间字串,到数据库中查询
$config =& JFactory::getConfig();
// 得到系统时区
$offset = $config->getValue('config.offset');
$jdate = JFactory::getDate('2012-3-27 09:45:30', $offset);
$query .= " AND i.created >= '".$jdate->toMySQL(true)."' ";
echo $query;
7.joomla图片处理component
http://www.phoca.cz/download/category/1-phoca-gallery-component