边学边记之Joomla

关于分类:

jos_sections对应于单元,单元可以理解为最父级的网站分类,比如示例数据库中网站的单元分为News/FAQ/About三种.

jos_categories对应于分类,每个分类都有一个section,从数据库里可以看出,section字段设计为文本类型,它不仅仅可以指定为jos_sections表里的section id,也可以自定义.

这里我的理解是,可以在后台中动态进行管理的单元被纳入了jos_sections表进行管理,其它可能由某个组件绑定或使用的分类就直接自定义section,比如常见的友情链接组件,它的分类单元应该为友情链接,但友情链接并不做为单元存储在jos_sections表中,而是自定义了section字段值com_weblinks代表为友情链接单元.

这里我的疑问是,
1.为什么不将组件名称也做为一个单元纳入jos_sections表进行管理呢?可以定义一个字段来表示是可管理的单元,还是自动产生的不可管理单元.当然这样管理的话当组件被卸载时要同步删除jos_sections表和jos_categories表.
2.从jos_categories表结构来看,分类是存在parentid的,但后台管理中并没有发现分类存在N级关系,这个功能是可支持的么?

关于组件/插件:

jos_components对应于组件,jos_plugins对应于插件,组件和插件的区别以及如何编写,回头我再研究.

关于菜单/模块/布局:

jos_menu_types对应于菜单模块,通常页面左边的导航,上方的导航,用户控制面板等都属于常见菜单模块,jos_menu对应于菜单项,用于管理每个菜单模块中的具体菜单项,通常菜单项为一个链接,它可以指向系统预设的一些功能.

这里我的疑问是,
1.”menutype记录菜单类型目前系统分为四种菜单mainmenu(主菜单),topmenu(顶菜单),othermenu(其他菜单),usermenu(用户菜单)”这句话似乎没什么意义,这四个菜单模块貌似是可以删除的,并且没有特殊含义啊…
2.如何修改系统预设的可选菜单项呢?
menu

jos_modules对应于模块,用于管理网站中一些固定模块的布局,如上面提到的菜单模块将会在模块管理中决定它是否显示,显示在哪些页面(显示在哪些页面由jos_modules_menu管理,对应于菜单分配这个功能,这个功能的常见用途是指定某个模块只显示在首页,或指定的某些页面,如投票模块或用户控制面板等)以及显示在页面的什么位置.系统也预置了一些模块供用户添加,比如页脚模块,投票模块等.

这里我的疑问是,如何添加系统预设的模块呢?投票模块是否在投票组件安装时自动产生的呢?
module
关于布局,这里我的理解是,
模板的设计者先在templateDetails.xml中使用position标签指定页面布局由几大位置决定,比如left,top,right,user1,user2等.然后在模块管理中指定每个模块显示在什么位置,以及在该位置中的次序,比如左边导航以及用户控制面板都设定显示在left位置,然后通过次序决定谁显示在上面,谁显示在下面.

这里我的疑问是,
模块通过位置来控件,但位置是定义在模板的配置文件中的,那么显然模块的位置就会受模板限制,理想中应该是完全由模板来控制显示哪些模块以及模块的位置,但目前来看,修改模板的同时也可能需要修改模块信息才能达到换肤的效果.比如模板B添加了一个position叫user5,并且将模块2显示在user5位置,当切换到模板A时模块2的显示位置就无效了.感觉需要同时修改两个地方,很别扭…那么好处是什么呢?

关于模板:

jos_templates_menu对应于模板,用于定义模板与菜单之间的关系,”这就是为什么joomla可以采用多模板机制,可以为不同的菜单分配不同的模板”这句话是什么含义,回头我再研究.

WordPress database error: [Table 'db_rain_blog.wp_comments' doesn't exist]
SELECT * FROM wp_comments WHERE comment_post_ID = '86' AND comment_approved = '1' ORDER BY comment_date

Leave a Comment