下载源码php
解压到apache发布目录css
访问http://xxx/installation/index.php 根据实际状况访问html
按每步提示操做,mysql库要先创建,ftp可暂时不开mysql
删除安装文件便可web
Joomla 2.5主要目录结构 ├─administrator # 后台程序部分 ├─cache # 用于存放cache,须要保持可写 ├─components # 组件,每一个组件一个文件夹,一般是com_** ├─images # 图片资源,上传的文件都会存放在这里,因此要保持可写 ├─language # 语言包目录,名称要与components、plugin或module的名称对应才能生效 │ ├─en-GB # 如:language/en-GB/en-GB.com_content.ini │ └─overrides # 从2.5开始,语言文字能够在后台重写,被重写的语言信息存在位置 ├─libraries # joomla的核心类库,须要深刻API的能够阅读里面的代码 ├─logs # 日志目录,要保持可写 ├─modules # 所安装模块的位置 ├─plugins # 所安装插件的位置 ├─templates # 所安装模板的位置,每一个子目录对应一个模板 │ ├─atomic # atomic是个典型的模板,适合于初学者 │ │ ├─css # CSS目录,关于模板的样式文件都放在这里 │ │ ├─html # 组件与模块都有本身的默认模板(tmpl目录),主模板有权限重写它们,重写的模板在这里 │ │ ├─images │ │ ├─js │ │ └─language # 模板在后台能够拥有配置参数,而参数的语言包会放在这里 │ │ └─en-GB │ └─system # 全部template都基于system模板,不要修改它 │ ├─css │ ├─html │ └─images └─tmp # 临时目录,须要保持可写 configuration.php # 配置文件,里面含有数据库与网站设置信息 .htaccess # 没有它,在apache就不能实现伪静态连接 web.config # 没有它,在IIS7就不能实现伪静态连接 component目录结构,举其中一个com_users的组件的栗子: ├─com_users # user组件,joomla里很是重要的组件之一 │ ├─controllers # 控件器集 │ ├─helpers # helpers用于存放辅助类与函数 │ ├─models # 数据库model │ │ └─forms # Joomla2.5开始,表单能够基于XML来配置,forms是指定配置目录 │ └─views # 视图集 │ ├─login # 登陆页面视图 │ │ │ metadata.xml │ │ │ view.html.php # 视图逻辑,做用是model与template的桥梁 │ │ │ view.json.php # 若是URL上有参数format=json,就会使用这个视图逻辑,如此类推 │ │ └─tmpl # 默认模板,会由视图引入 │ │ default.php # 其中一个模板 │ │ default.xml # 后台添加菜单时须要选择menu type,组件是否出如今menu上靠这文件 │ │ default_login.php # default.php的子模板,由loadTemplate引入 │ │ default_logout.php
注释:sql
组件与模块都有本身的默认模板(位于tmpl里), 若是自定义的模板下的html文件夹有相同的组件或模块,则执行渲染时,joomla会使用此下面的,也即原组件或模块的模板被覆盖了数据库
每一个模板里所包含的位置都位于templateDetails.xml里<positions>下apache
好比下面在给模块选择显示位置时json
--》app
此处列表的位置值即从各个模板的templateDetails.xml下去取的
而模板里则用<jdoc:include type="modules" name="left" style="tz_style" />去引用
在建立新菜单,选择菜单项选项时
弹出的内容
总的来讲就是取各模块的view下文件夹展现的,详细步骤以下:
实际访问的是http://xxx/administrator/index.php?option=com_menus&view=menutypes&tmpl=component&recordId=101
按上面执行步骤知道其找的是administrator/components/com_menus/views/menutypes/view.html.php
看display代码有$this->get('TypeOptions'), 此处$this指libraries/joomla/application/component/view.php
而view.php里get是获取model里相应的$method = 'get' . ucfirst($property); 此处$property即为'TypeOptions'
从getTypeOptions方法里可见其从**_extensions表里取值,以下
$db = JFactory::getDBO(); $query = $db->getQuery(true); $query->select('name, element AS ' . $db->qn('option')); $query->from('#__extensions'); $query->where('type = ' . $db->q('component')); $query->where('enabled = 1'); $query->order('name ASC'); $db->setQuery($query);
获取到component名称后,再获取具体连接
其会先获取$mainXML = JPATH_SITE.'/components/'.$component.'/metadata.xml',若是此xml不存在,则
$options = $this->getTypeOptionsFromMVC($component),也即
$path = JPATH_SITE.'/components/'.$component.'/views'
$views = JFolder::folders($path); (libraries/joomla/filesystem/folder.php)
也即列出views下文件夹返回(注意这里文件夹下都有tmpl,显然是页面级,其菜单名称从其tmpl/default.xml获取)
拿com_contact举例:其下文件夹categories/, category/, contact/, featured/