谈谈joomla1.5中个人遇见的古怪问题

    从对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)

你可能感兴趣的:(joomla)