摘要:
最近在处理老项目的问题,发现并处理了很多缺陷,虽然项目功能也不是十分多,但维护所花费的时间却很多,这是因为项目代码编写的并不完善,很多问题都难以追查。虽然项目问题很难处理,但同时也让我深思一些代码规范是多么的重要。以下先列出几点我积累到的经验,也希望可以得到一些建议。1. AJAX的JSON返回,应该包含状态status与信息message,在javascript端对状态分析而抛出message案例:一个mootools ajax的例子PHP:function handlerAjax() { $model = new userModel(); $row = $model->getI... 阅读全文
摘要:
Joomla是个很知名的CMS系统,国内也不缺少joomla方面的高手,不过在开始joomla的项目时,往往会忽略了一些细节问题,甚至以后项目上线后维护难度加大,又或者是存在安全问题,所以我们应该先定制好一些准备事项,应用于每个joomla项目上,来避免一些常见问题。按照我目前的经验,列一下以下需要准备的事项。1.保证joomla版本为最新版这个很容易办到,因为joomla2.5可以在线升级,它会提示你是否有官方更新,而且升级过程很简单2.安装好备份组件akeebaAkeeba一直都是joomla平台上最优秀的全站备份与迁移组件。Joomla很多配置需要后台操作,而操作都会记录到数据库上,所以 阅读全文
摘要:
必要扩展库php_xsl, php_curl, php_opensslURL参数的意义Section是最大的单元,只有一级。Section之下有多级的Category,最小的单元是Enity。但其实所有单元,都是同一组结构,存储于#__sobipro_object表中,对系统来说没什么分别。sid = Section ID & Category ID & Enity IDpid = parent section ID源数据调试sobipro的模板结构基于XSLT,也就是源数据是XML,经过XSLT加工后会转换为HTML,即PHP -> XML -> XSLT -&g 阅读全文
摘要:
//数据查询 $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, cont 阅读全文
摘要:
新版的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 Da 阅读全文
摘要:
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没什么分别,这或许一开始就让jo 阅读全文
摘要:
周末抽了一天的时间去研究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的呈现效果 阅读全文
摘要:
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: 视图,包括模板与数据输出逻辑。 阅读全文
摘要:
搞了joomla1.5二次开发一年多,已经算是对joomla非常了解了,joomla1.5总体来说还是不错的,不过系统自身还是有不少的缺点,我一一列举一下:1. 文章组件层次当你建一篇文章,要么不属于任何分类,要么需要选一个分类,而且这个分类必需要属于一个单元,也就是文章的层次性是:单元/分类,也就是二级分类。不过很多时候,只有两个级别是不够的,更复杂的内容需要三级或以上层次。Joomla的确有很多插件,但没有一个可以直接扩展文章组件的功能,因为这是系统限制,文章组件没有对向提供很多接口。所以这个问题只有用第三方CCK(内容管理工具)组件来取代默认的文章组件。但这就让系统变得很奇怪,文章组件是 阅读全文
摘要:
表单相关脚本要使用joomla内置表单脚本有几个前提条件form名应该默认是adminFormform内必须有boxchecked,task这些hidden elementJoomla.isChecked(this.checked);用于list中的checkbox,加到每个checkbox的onclick上Joomla.submitbutton(task, form="adminForm");提交表单到指定的taskMootools加载方法: JHtml::_('behavior.framework', true);功能说明: mootools有core与 阅读全文