如何在CodeIgniter中组织模板结构?

时间:2012-02-26 23:53:36

标签: php css codeigniter

我将为我的最终Web开发课程项目构建一个CMS,我的老师在MVC系统中创建了它,现在,我将使用CodeIgniter。

因此,我想知道如何组织文件/文件夹结构。

我将使用一个简单的模板系统: - 现在我有一个自动加载的templates.php配置文件,并说明所选模板的名称及其绝对路径。 - templates文件夹位于views文件夹中(这是最正确的方法吗?) - 现在我通过视图中的文件访问.css文件时遇到了一些问题,而且从我看过的内容中,人们通常会将所有文件放在应用程序文件夹之外。

你通常如何做到这一点?而且,看到我正在建设什么,你能给我什么建议? 视图不应包含模板中的所有内容吗? (包括模板文件夹中的CSS)

感谢。

(我正在使用Code Ignitor 2.1.0)

编辑:

现在,在构建了所有文件和文件夹之后,我处于两难境地。我在constants.php中添加了以下内容

<!-- language: lang-php -->
$config['selected_template'] = 'oceania';
$config['template_abs_path'] = 'assets/templates/'.$config['selected_template'];

define('IMAGES_PATH', $config['template_abs_path'].'/img/' );
define('CSS_PATH', $config['template_abs_path'].'/css/' );
define('SCRIPTS_PATH', $config['template_abs_path'].'/js/' );

(如果我没有定义selected_template和template_abs_path,我可以在常量中使用它们)

我将它们包含在HTML中,如下所示:

<!-- language: lang-html -->
<link rel="stylesheet" type="text/css" href="<?=CSS_PATH;?>style.css" />

但是现在,我试图获得一个存储在配置中的标题,但我不能这样做,因为我需要所有这些变量都在我之前创建的其他templates.php文件中,否则它会不认识我的变数。 (我有模板自动加载)

templates.php

<!-- language: lang-php -->
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

$config['title'] = 'Title of the website';
$config['selected_template'] = 'oceania';
$config['template_abs_path'] = 'templates/'.$config['selected_template'];

的header.php

<div id="logo">
<h1><a href="#"><?=$this->config->item('title');?></a></h1>
</div>

因此,我是否需要让这两个配置在我的网站上运行?这对我来说真的没什么意义......

3 个答案:

答案 0 :(得分:10)

一个好的文件/文件夹结构如下:

website_folder/
–––– application/
–––––––– config/
–––––––––––– autoload.php
–––––––––––– config.php
–––––––––––– ...
–––––––– controllers/
–––––––––––– examples.php
–––––––––––– index.html
–––––––––––– welcome.php
–––––––– ...
–––––––– views/
––––––––---- templates/
––––––––-------- backend.php
––––––––-------- frontend.php
–––––––––––– ....
–––––––––––– example.php
–––––––––––– index.html
–––––––––––– welcome_message.php    
–––– assets/
–––––––– css/
–––––––– js/
–––––––– images/
–––––––– templates/
––––––––---- frontend/
––––––––-------- css/
––––––––-------- js/
––––––––-------- images/
––––––––---- backend/   
––––––––-------- css/
––––––––-------- js/
––––––––-------- images/
–––––––– uploads/
–––––––– index.html
–––– system/
–––– user_guide/
–––– index.php
–––– license.txt 

这只是一个建议。因此,您将在views / templates和资产/模板/

上的css / js文件中获得模板视图

答案 1 :(得分:2)

我完全同意web-johnny文件夹结构,但在我看来,他错过了一件事在./application/config/constants.php文件中定义所有资产路径,例如。

define('IMAGES_PATH', your_absolute_path_of_images_folder);
define('CSS_PATH', your_absolute_path_of_css_folder);
define('SCRIPTS_PATH', your_absolute_path_of_scripts_folder);

等等......在整个应用程序中使用这些常量,这样,如果您需要更改文件夹结构,只需更改这些常量的值即可。

答案 2 :(得分:1)

检查模块化扩展程序HMVC,它在您的项目开始增长时非常有用。模块化扩展 - HMVC使CodeIgniter PHP框架模块化。模块是安排在一个应用程序子目录中的独立组件组(通常是控制器,模型和视图),可以将其放入其他CodeIgniter应用程序中。