Joomla教程
SobiPro笔记
必要扩展库 php_xsl, php_curl, php_openssl URL参数的意义 Section是最大的单元,只有一级。Section之下有多级的Category,最小的单元是Enity。但其实所有单元,都是同一组结构,存储于#__sobipro_object表中,对系统来说没什么分别。 sid = Section ID & Category ID & Enity ID pid = parent section ID 源数据调试 sobipro的模板结构基于XSLT,也就是源数据是XML,经过XSLT加工后会转换为HTML,即PHP -> XML -> XSLT -> HTML,所以修改模板也就是修改XSLT文件。如果要深度修改模板,有时候需要修改源数据,修改XML输出,所以查看输出XML成为了模板调试的关键。后台设...
joomla2.5 各种数据操作的写法
//数据查询 $db = JFactory::getDBO(); $query = $db->getQuery(true); $query->select('contact.user_id, MAX(contact.id) AS id, contact.language'); $query->from('#__contact_details AS contact'); $query->where('contact.published = 1'); $query->group('contact.user_id, contact.language'); $query->order('contact.ordering'); $db->setQuery($query); $rows = $db->loadObjectList(); &n...
Joomla2.5 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 Dat...
Joomla2.5 User Profile
joomla 1.5并没有user profile功能,即用户的信息结构只能是系统提供的有限的field,如username, email等。如果要设计用于社交类型的网站用户信息肯定需要更丰富,如address, age, sex, state等。如果从joomla的系统上通过开发定制扩展出更丰富的profile field,至少需要改JTableUser类、JModelUser类和JViewUser类,可见操作相当麻烦,所以在1.5上,只能安装第三方组件,如Joomla上有名的CB。 到了joomla 2.5可以看到profile的页面,但就后台功能来看和1.5没什么分别,这或许一开始就让joomla的粉丝很失望,因为这样的功能已经很普遍了。但其实joomla 2.5已经内置了可定制的profile程序,可以自由添加field,只是不是在后台添加field而已。 &nbs...
Joomla SobiPro的使用体验
周末抽了一天的时间去研究Joomla的目录组件SobiPro,写一下使用它的体会。 SobiPro是个相当强大的目录组件,相比于同类的mtree(Mosets Tree的简称),更比mtree有优胜的地方。 SobiPro优势如下: 1. field管理mtree与sobi都有管理field的功能,而且都有强大的扩展能力,但mtree的field是全局性的,也就是不可以做几个不同类的list,例如一个list是通讯录,另一个list是产品,两个List都需要使用完全不同的fields,mtree就难以实现。 2. field扩展类的存储方式mtree可以添加修改field的类来调整field的呈现效果,这个非常灵活。但它其实是把整个类以字串的方式保存在数据库中,基本上只有通过后台来修改类,管理较为麻烦,而且代码存于数据库有安全隐患。sobi则是文件形容,并且也支持安装包扩展。 3. 付费方...
Joomla 2.5 MVC剖析
Joomla整个系统,由core, component, module, plugin组成,而component是唯一拥有数据结构特征的部分,所以joomla把它设计为MVC结构,让数据结构表现更清晰。并且component是joomla扩展开发中最复杂的部分。 Joomla提供了MVC的基类:JView, JModel, JController, JTable。一个完整的joomla MVC,必须从这四个类或者其派生类继承,而Joomla2.5有更丰富的派生类,来满足joomla2.5更多的新特征。可以阅读com_content的代码来了解这个关系。 JView: 视图,包括模板与数据输出逻辑。典型的view.html.php就是JView的一个实现,它的工序是从Model中得到数据,并输出到模板中。 JController: 控制器,一个组件可以有多个控制器,每个控制器会有多个task...
体验Joomla2.5,从joomla1.5说起
搞了joomla1.5二次开发一年多,已经算是对joomla非常了解了,joomla1.5总体来说还是不错的,不过系统自身还是有不少的缺点,我一一列举一下: 1. 文章组件层次 当你建一篇文章,要么不属于任何分类,要么需要选一个分类,而且这个分类必需要属于一个单元,也就是文章的层次性是:单元/分类,也就是二级分类。不过很多时候,只有两个级别是不够的,更复杂的内容需要三级或以上层次。Joomla的确有很多插件,但没有一个可以直接扩展文章组件的功能,因为这是系统限制,文章组件没有对向提供很多接口。所以这个问题只有用第三方CCK(内容管理工具)组件来取代默认的文章组件。但这就让系统变得很奇怪,文章组件是CMS系统中最重要的元素,现在却要用第三方取代,而且还不能把文章组件删除,这让很多使用者感到不爽 2. 文章不能关联一张图片 也是文章组件的问题。虽然文章正文可以插入图片,但文章不能关联图片。这...
Joomla 2.5 内置控件
表单相关脚本 要使用joomla内置表单脚本有几个前提条件 form名应该默认是adminForm form内必须有boxchecked,task这些hidden element Joomla.isChecked(this.checked); 用于list中的checkbox,加到每个checkbox的onclick上 Joomla.submitbutton(task, form="adminForm"); 提交表单到指定的task Mootools 加载方法: JHtml::_('behavior.framework', true); 功能说明: mootools有core与more两部分,more包含很多额外的插件,如果需要使用,第二个参数需要为true。 tooltip(提示信息) 加载方法: JHtml::_('behavior.toolt...
joomla2.5 常用组件
名称说明 BT slideshow slideshow feedgator 采集RSS内容并自动发布 Xcloner 备份 ariextmenu dropdown menu allvideoshare video列表组件 swfobject_v2.1 用于显示flash的module falang joomfish的for joomla2.5版本 jsjobs 求职组件 aiContactSafe 表单组件 civicrm 强大的CRM easybookreloaded 留言板 virtuemart 购物组件 JomSocial 社区化组件 djimageslider slideshow ganalytics google分析 jcomments 为文章添加评论功能 FrontpageSlideshow 收费的slideshow jevent 活动信息展示
joomla组件开发中的时区问题
joomla的所有组件的日期数据,都统一使用mysql的datetime,输出格式类型于2004-02-12T15:19:21 这种格式好处是在数据库中可以很直观地看到时间,但仅仅只是有这个好处,坏处却一大堆,例如不方便两个日期比较,不方便计算日期之间间隔了多久,总之一切日期运算都很不方便!joomla又是个多语言CMS系统,而datetime这种格式要表达时区概念,必须在mysql的datetime上加上offset,而mysql的datetime则始终是UTC。例如中国的时区是加8小时,那么从数据库中得到的datetime还需要加上8小时,时间才是最准确的。这种换算非常重要,而且也是很容易让人忽略的部分。 以下介绍如何准确地获取与写入时间: <?php // 获取从数据库中得到的时间并显示 echo JHTML::_('date',$row->dat...