Joomla 几个功能

来源:互联网 发布:数据分析思路 编辑:程序博客网 时间:2024/05/16 08:40
分页功能
administrtor/com_xxx/views/xxx/tmpl/default.php
首部加上JHtml::_('behavior.multiselect');
尾部加上<?php echo $this->pagination->getListFooter();?>
地址操作

给当前地址添加参数:

         $uri = JFactory::getURI();

         $uri->setQuery($uri->getQuery().'&lang=en');

         $uri->toString()

JRoute::_("&limitstart=");

 

JHTML控件

日历:

JHTML::_('calendar', '1980-1-1', 'ielts_score_date', 'ielts_score_date', '%Y-%m-%d', array('class'=>'short', 'size'=>'25',  'maxlength'=>'19'))

 

日期显示:

JHTML::_('date', <data>, JText::_('DATE_FORMAT_LC2'));

 

载入脚本:

         JHTML::script('upload.js', 'components/com_smipa/js/', false);

         JTHML::Stylesheet('style.css', 'components/com_smipa/css/');

         JHTML::_('behavior.mootools');                载入mootools

 

JHTML::_('select.booleanlist', 'published','class="inputbox"', $item->published); //不能用于tinyint(1)类型

<input type="checkbox" name="custom_link" value="1" <?php echo $this->item->xxx?'checked="checked"':'' ?> /> //适用于tinyint(1)

JHTML::_('list.category', 'catid', $option, intval($item->catid));

JHTML::_('list.specificordering', $item, $item->id, $query,1);

JHTML::_('select.genericlist',$list,'postname',null,'id','title', 'default-value');

 


XML参数

参数类型:

<param name="" type="text" default="" label="" description="" />

<param name="" type="radio" default="" label="" description="">

         <option value=""></option>

</param>

<param name="" type="list" default="" label="" description="">

         <option value="">Use Global</option>

</param>

<param name="description" type="textarea" default="" label="Description" description="" rows="5" cols="30" />

 

在非文章组件/模块内调用分类参数

<params addpath="libraries/joomla/html/parameter/element/category">

         <param name="catid" type="category" label="Category" description="Choose a category..." />

         ...

</params>

 

组件参数取值方法:

         global $mainframe;

         $params  =& $mainframe->getParams('com_xxx');

         $params->get(key)

 

         $cparams =& JComponentHelper::getParams('com_media');

 

Component参数(基于组件,即option的值):

 

         位置:                 组件后台根目录下的config.xml

 

         后台设置点:   menus里选中组件类型后可以设置

                            JToolBarHelper::preferences('com_xxx')

 

Basic参数(基于Menu,即Itemid的值):

 

         位置:                 安装包XML,写在<params>节点

                            前台view/tmpl下,与layout同名的XML,可参考con_contentXML
         后台设置点:   menus里选中组件类型后可以设置

 


权限管理 (ACL)

 

添加权限

JAuthorization::addACL(访问资源节点(组件), 访问资源(具体权限), 访问对象节点(users), 访问对象())

验证权限

JUser::authorize(访问资源节点(组件), 访问资源(具体权限))

 

添加新的权限

61: libraries/joomla/user/authorization.php

 

后台菜单权限验证

34: administrator/modules/mod_menu/help.php

 

组件后台验证一般写在组件入口中,如admin.frontpage.php

组件前台验证一般写在view.html.php

 

加载juqery.js

jquery copymedia/system/js

调用JHTML::script('jquery.js');

 

自定义事件 (event)

VM插件为例

把插件安装包XMLgroup="vm"

插件代码:

jimport( 'joomla.plugin.plugin' );

$mainframe->registerEvent( 'onEventType', 'plgFunction' );

function plgFunction(){

         // 处理过程

}

 

触发事件

JPluginHelper::importPlugin('vm');

$dispatcher =& JDispatcher::getInstance();

$dispatcher->trigger('onEventType');               // 触发onEventType事件

        

sh404sef

应该在页面和参数都调好后再开sh404sef,如果因为sh404sef生成错误地址所影响,可以在后台查询地址路径再修改。

 

h2:

sh404sef默认把h1标签改成h2,这个要在后台设置。

 

404:

sh404sef安装后会自动新建404的文章页,当找不到页面会自动跳到404文章页。但默认没有指定Itemid,可能页面会受影响,可以在后台高级设置页上修改以下参数:

$shDefaultParams['sh404SEF_PAGE_NOT_FOUND_FORCED_ITEMID'] = 0;

 

page title:

开了sh404sefpage title需要在sh404sef的配置中设置,比如首页的title,要在URL Manager中的Home page Meta处修改

 

局部关闭sef:

virtuemart为例

components/com_sh404sef/sef_ext/com_virtuemart.php

在对应的case支点最下方(break之上)加上 $dosef = false;

 

.号替换:

URL最尾带后缀会使rewrite不生效,所以404后台配置需要把.替换掉。例如: .|-

 

地址出现中文:

由于sh404sef默认使用title作为URL,对于中文网站也将使用中文titleURL,这样就会生成中文URL,解决方法是把Use Title Alias, Use category alias, Use section alias, Use menu alias全部选上。

 


在View的函数中检查错误
if(count($errors = $this->get('Error'))){    JLog::add(implode('<br />', $errors), JLog::WARNING, 'jerror');    return false;}

获取输入内容
$jinput = JFactory::getApplication()->input;

获取输入的整型变量id值

JFactory::getApplication()->input->get('id',1,'INT');

JDate 时区日期运算
新版的JDate其实是PHP5内置日期类DateTime的扩展类,所以继承所有DateTime的方法,即可以把JDate当DateTime类来使用。
 
以下是得到前天的零时例子(PHP > 5.3.0):
$config = JFactory::getConfig();
// 用后台设置的TimeZone创建当前时间的对象
$date =new JDate('now',new DateTimeZone($config->get('offset')));
// 减去一天,DateInterval的用法可上PHP官方网查询
$date->sub(new DateInterval('P1D'));
// 用toFormat去掉时分秒,重新创建新对象
$date =new JDate($date->toFormat('%Y-%m-%d'),new DateTimeZone($config->get('offset')));
// format的第二参数决定是否使用TimeZone,否则会以UTC来输出
echo $date->format(JText::_('DATE_FORMAT_LC2'), true);
// 日期也可以用JHTML输出
echo JHTML::_('date', <data>, JText::_('DATE_FORMAT_LC2'));

以上代码可表现JDate更加对象化,而且和原生PHP5特征联系得更紧密。不过也许对于惯于使用timestamp进行运算的人来说会觉得很别扭。下面写一个timestamp的运算例子:
 
$config = JFactory::getConfig();
// 用toUnix得到timestamp再减去一天的秒数
$date =new JDate('now',new DateTimeZone($config->get('offset')));
$date->setTimestamp($date->toUnix()-3600*24);// PHP > 5.3.0
$date =new JDate($date->toUnix() - 3600*24); // PHP > 5.2.0
echo $date->format(JText::_('DATE_FORMAT_LC2'), true);
Component数据库脚本文件
admin/sql/install.mysql.utf8.sql     //安装时的脚本admin/sql/uninstall.mysql.utf8.sql   //卸载时的数据库操作admin/sql/updates/mysql/*.*.*.sql    //升级到*.*.*版本时的数据库操作

组件的xml文件,要添加下面内容

<install> <!-- Runs on install -->
<sql>
<file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
</sql>
</install>

<uninstall> <!-- Runs on uninstall -->
<sql>
<file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
</sql>
</uninstall>
<update> <!-- Runs on update; New since J2.5 -->
<schemas>
<schemapath type="mysql">sql/updates/mysql</schemapath>
</schemas>
</update>

<administration>
<files folder="admin">
<folder>sql</folder>
</files>
</administration>

JForm 字段属性 Showon

<field name="foo" type="list">
    <option value="1">JYES</option>
    <option value="0">JNO</option>
</field>
<field name="bar" type="text" showon="foo:1"/>

字段bar在foo选择的值为1的时候,显现。如果要匹配多个值,使用:

showon="foo:1,2"
原创粉丝点击