方林

再多的天才也无法胜过对细节的关注
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

joomla开发技巧

Posted on 2012-05-20 13:26  fl_dream  阅读(362)  评论(0编辑  收藏  举报

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