从对joomla的一无所知,到对可以开发使用,期间得到同事许多帮助,不短的两个月,开发中也遇到很多的问题,最终在他人帮助下都解决了。今天我把这些问题分享出来,以及解决办法,希望其他使用的朋友遇到这些问题,可以自行解决。本文仍然基于joomla1.525版本,涉及的问题不是只有joomla本身,有一些是属于HTML、CSS、Flash、服务器知识,所以不限于只谈这个cms本身,是一些综合问题!
1 . flash不显示问题,这个的原因是在头部添加了导向网站目录的base标签,就是在head部分添加了<base href="#" />,这样出现flash不显示问题。解决办法是在flash的标记里面添加base="."属性,就是这种
<object> <embed height="302" width="601" base="." wmode="transparent" src="/main.swf" type="application/x-shockwave-flash"> </object>
2 . 后台实现单元下面分类分成两级,我们知道joomla1.5只可以分一个类别,总的是单元-分类-文章,现在是单元-分类-子分类-文章,要实现这个,可以看看categories表,里面有一个parent_id,通过这个可以现实,我们把parent_id=-1规定为是父类,子类的parent_id是父类的id,默认都是parent_id= 0的,这样需要修改一下后台的添加分类代码,加入一个下拉菜单来读取父类列表,这里需要实现一个联动菜单,当你选择不同单元,出现不同的父类,具体实现代码和子分类功能,以后我会专门写这个实现过程。这里只是解决办法思路,有能力有需要的可以自己试试。
3 . 自己开发的前台显示组建页面,很多时候是没有模块显示,出现这个问题是代码中少了Itemid这个字段,这个字段很重要,用来控制页面显示其他模块,可以在后台添加一个菜单,我们把显示改成None,也就是不显示,但是Itemid这个参数可以拿来控制显示,也许我讲的没人听懂,不过记录模块或组件没有在特定页面显示,多数和itemid这个参数有关系。
4 . 在组建中,前台和后台开发多少还是有点小差别,比如前台一般主要是显示,偶尔也有提交数据功能,后台主要是管理,一般都是增删改查CURD操作。所以前台一般可以只写一个控制器,多个模型多个视图一一对应。后台一般需要多个控制器多个视图多个模型来操作,糊涂了吧,看看下面的连接就明白了
//后台 index.php?option=com_a&controller=a&view=a index.php?option=com_a&controller=b&view=b //前台 index.php?option=com_a&view=a index.php?option=com_a&view=b
5 . 对于读取记录集,如果只有一条数据,一般我们加上查询语句的limit 1限制条件,这个来自数据库优化中,这样在查询时候用
//一条记录 $rs = $db->loadObject(); //输出 $rs->title; //多条记录 $db->loadObjectList(); //输出 foreach($rs as $list){ $list->title; }
这可以说是数据库操作的所有了,joomla中数据库操作最简单,只需要引用数据库静态连接,SQL查询语句,执行,获取记录集,然后按照想要的格式输出。SQL语句是关键,这个一般你可以在mysql管理器中写出查询语句,结果正确了再搬到joomla里面,不容易出错,也好调试。
6 . joomla后台开发中有一系列生成HTML的控件,说实话,个人不喜欢,不过要想和joomla风格保持一致还是需要使用的,一般就是文本、单选、下拉菜单、文本域这几种。还有日期什么的多数时候都是隐藏域自动提交,修改时间可以用,对于那些参数获取和格式化数据,用PHP本身就可以,不过需要你自己检测提交的数据安全。
7 . joomla表单验证,这个一般我们可以自己写jQuery代码,自带的虽然可以保持一致性的UI,但是感觉麻烦,又要多学些东西,其实jQuery强大到可以无视其他库,我想使用这个库的人是绝大多数,大众化的好。
8. 对于网站的虚拟静态化,可以通过rewrite来实现,joomla全部设置可以修改。对于SEO,可以用模块,后台也可以设置部分。好了,这里暂时列举这些,后台还有更多的设置,你可以下载中文版来学习,等你熟悉了就可以使用英文版了,那时候不看单词,自然而然的知道哪种效果在哪里设置,这就是经验。
总结一下,joomla不敢说多么简单,至少要想精通还是要花时间来学习一些系统的架构,这么优秀的cms架构还是值得学习的,它遵循了MVC的模式。以此来提高PHP技术,最终我们要达到的是学会需求分析和架构。路很遥远,对PHP+mysql学习的朋友,一起努力!!!
(原创 By Yoby)