下載源碼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/